/// Generated file. Do not edit. /// /// Original: lib/i18n /// To regenerate, run: `dart run slang` /// /// Locales: 6 /// Strings: 2608 (434 per locale) /// /// Built on 2025-12-12 at 16:59 UTC // coverage:ignore-file // ignore_for_file: type=lint import 'package:flutter/widgets.dart'; import 'package:slang/builder/model/node.dart'; import 'package:slang_flutter/slang_flutter.dart'; export 'package:slang_flutter/slang_flutter.dart'; const AppLocale _baseLocale = AppLocale.en; /// Supported locales, see extension methods below. /// /// Usage: /// - LocaleSettings.setLocale(AppLocale.en) // set locale /// - Locale locale = AppLocale.en.flutterLocale // get flutter locale from enum /// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check enum AppLocale with BaseAppLocale { en(languageCode: 'en', build: Translations.build), de(languageCode: 'de', build: _StringsDe.build), it(languageCode: 'it', build: _StringsIt.build), nl(languageCode: 'nl', build: _StringsNl.build), sv(languageCode: 'sv', build: _StringsSv.build), zh(languageCode: 'zh', build: _StringsZh.build); const AppLocale({required this.languageCode, this.scriptCode, this.countryCode, required this.build}); // ignore: unused_element @override final String languageCode; @override final String? scriptCode; @override final String? countryCode; @override final TranslationBuilder build; /// Gets current instance managed by [LocaleSettings]. Translations get translations => LocaleSettings.instance.translationMap[this]!; } /// Method A: Simple /// /// No rebuild after locale change. /// Translation happens during initialization of the widget (call of t). /// Configurable via 'translate_var'. /// /// Usage: /// String a = t.someKey.anotherKey; /// String b = t['someKey.anotherKey']; // Only for edge cases! Translations get t => LocaleSettings.instance.currentTranslations; /// Method B: Advanced /// /// All widgets using this method will trigger a rebuild when locale changes. /// Use this if you have e.g. a settings page where the user can select the locale during runtime. /// /// Step 1: /// wrap your App with /// TranslationProvider( /// child: MyApp() /// ); /// /// Step 2: /// final t = Translations.of(context); // Get t variable. /// String a = t.someKey.anotherKey; // Use t variable. /// String b = t['someKey.anotherKey']; // Only for edge cases! class TranslationProvider extends BaseTranslationProvider { TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance); static InheritedLocaleData of(BuildContext context) => InheritedLocaleData.of(context); } /// Method B shorthand via [BuildContext] extension method. /// Configurable via 'translate_var'. /// /// Usage (e.g. in a widget's build method): /// context.t.someKey.anotherKey extension BuildContextTranslationsExtension on BuildContext { Translations get t => TranslationProvider.of(this).translations; } /// Manages all translation instances and the current locale class LocaleSettings extends BaseFlutterLocaleSettings { LocaleSettings._() : super(utils: AppLocaleUtils.instance); static final instance = LocaleSettings._(); // static aliases (checkout base methods for documentation) static AppLocale get currentLocale => instance.currentLocale; static Stream getLocaleStream() => instance.getLocaleStream(); static AppLocale setLocale(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocale(locale, listenToDeviceLocale: listenToDeviceLocale); static AppLocale setLocaleRaw(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRaw(rawLocale, listenToDeviceLocale: listenToDeviceLocale); static AppLocale useDeviceLocale() => instance.useDeviceLocale(); @Deprecated('Use [AppLocaleUtils.supportedLocales]') static List get supportedLocales => instance.supportedLocales; @Deprecated('Use [AppLocaleUtils.supportedLocalesRaw]') static List get supportedLocalesRaw => instance.supportedLocalesRaw; static void setPluralResolver({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolver( language: language, locale: locale, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ); } /// Provides utility functions without any side effects. class AppLocaleUtils extends BaseAppLocaleUtils { AppLocaleUtils._() : super(baseLocale: _baseLocale, locales: AppLocale.values); static final instance = AppLocaleUtils._(); // static aliases (checkout base methods for documentation) static AppLocale parse(String rawLocale) => instance.parse(rawLocale); static AppLocale parseLocaleParts({required String languageCode, String? scriptCode, String? countryCode}) => instance.parseLocaleParts(languageCode: languageCode, scriptCode: scriptCode, countryCode: countryCode); static AppLocale findDeviceLocale() => instance.findDeviceLocale(); static List get supportedLocales => instance.supportedLocales; static List get supportedLocalesRaw => instance.supportedLocalesRaw; } // translations // Path: class Translations implements 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.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $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 late final _StringsAppEn app = _StringsAppEn._(_root); late final _StringsAuthEn auth = _StringsAuthEn._(_root); late final _StringsCommonEn common = _StringsCommonEn._(_root); late final _StringsScreensEn screens = _StringsScreensEn._(_root); late final _StringsUpdateEn update = _StringsUpdateEn._(_root); late final _StringsSettingsEn settings = _StringsSettingsEn._(_root); late final _StringsSearchEn search = _StringsSearchEn._(_root); late final _StringsHotkeysEn hotkeys = _StringsHotkeysEn._(_root); late final _StringsPinEntryEn pinEntry = _StringsPinEntryEn._(_root); late final _StringsFileInfoEn fileInfo = _StringsFileInfoEn._(_root); late final _StringsMediaMenuEn mediaMenu = _StringsMediaMenuEn._(_root); late final _StringsAccessibilityEn accessibility = _StringsAccessibilityEn._(_root); late final _StringsTooltipsEn tooltips = _StringsTooltipsEn._(_root); late final _StringsVideoControlsEn videoControls = _StringsVideoControlsEn._(_root); late final _StringsUserStatusEn userStatus = _StringsUserStatusEn._(_root); late final _StringsMessagesEn messages = _StringsMessagesEn._(_root); late final _StringsSubtitlingStylingEn subtitlingStyling = _StringsSubtitlingStylingEn._(_root); late final _StringsDialogEn dialog = _StringsDialogEn._(_root); late final _StringsDiscoverEn discover = _StringsDiscoverEn._(_root); late final _StringsErrorsEn errors = _StringsErrorsEn._(_root); late final _StringsLibrariesEn libraries = _StringsLibrariesEn._(_root); late final _StringsAboutEn about = _StringsAboutEn._(_root); late final _StringsServerSelectionEn serverSelection = _StringsServerSelectionEn._(_root); late final _StringsHubDetailEn hubDetail = _StringsHubDetailEn._(_root); late final _StringsLogsEn logs = _StringsLogsEn._(_root); late final _StringsLicensesEn licenses = _StringsLicensesEn._(_root); late final _StringsNavigationEn navigation = _StringsNavigationEn._(_root); late final _StringsCollectionsEn collections = _StringsCollectionsEn._(_root); late final _StringsPlaylistsEn playlists = _StringsPlaylistsEn._(_root); late final _StringsDownloadsEn downloads = _StringsDownloadsEn._(_root); } // Path: app class _StringsAppEn { _StringsAppEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Plezy'; String get loading => 'Loading...'; } // Path: auth class _StringsAuthEn { _StringsAuthEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get signInWithPlex => 'Sign in with Plex'; String get showQRCode => 'Show QR Code'; String get cancel => 'Cancel'; String get authenticate => 'Authenticate'; String get retry => 'Retry'; String get debugEnterToken => 'Debug: Enter Plex Token'; String get plexTokenLabel => 'Plex Auth Token'; String get plexTokenHint => 'Enter your Plex.tv token'; String get authenticationTimeout => 'Authentication timed out. Please try again.'; String get scanQRCodeInstruction => 'Scan this QR code with a device logged into Plex to authenticate.'; String get waitingForAuth => 'Waiting for authentication...\nPlease complete sign-in in your browser.'; } // Path: common class _StringsCommonEn { _StringsCommonEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get cancel => 'Cancel'; String get save => 'Save'; String get close => 'Close'; String get clear => 'Clear'; String get reset => 'Reset'; String get later => 'Later'; String get submit => 'Submit'; String get confirm => 'Confirm'; String get retry => 'Retry'; String get logout => 'Logout'; String get unknown => 'Unknown'; String get refresh => 'Refresh'; String get yes => 'Yes'; String get no => 'No'; String get delete => 'Delete'; String get shuffle => 'Shuffle'; String get addTo => 'Add to...'; } // Path: screens class _StringsScreensEn { _StringsScreensEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get licenses => 'Licenses'; String get switchProfile => 'Switch Profile'; String get subtitleStyling => 'Subtitle Styling'; String get search => 'Search'; String get logs => 'Logs'; } // Path: update class _StringsUpdateEn { _StringsUpdateEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get available => 'Update Available'; String versionAvailable({required Object version}) => 'Version ${version} is available'; String currentVersion({required Object version}) => 'Current: ${version}'; String get skipVersion => 'Skip This Version'; String get viewRelease => 'View Release'; String get latestVersion => 'You are on the latest version'; String get checkFailed => 'Failed to check for updates'; } // Path: settings class _StringsSettingsEn { _StringsSettingsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Settings'; String get language => 'Language'; String get theme => 'Theme'; String get appearance => 'Appearance'; String get videoPlayback => 'Video Playback'; String get advanced => 'Advanced'; String get useSeasonPostersDescription => 'Show season poster instead of series poster for episodes'; String get showHeroSectionDescription => 'Display featured content carousel on home screen'; String get secondsLabel => 'Seconds'; String get minutesLabel => 'Minutes'; String get secondsShort => 's'; String get minutesShort => 'm'; String durationHint({required Object min, required Object max}) => 'Enter duration (${min}-${max})'; String get systemTheme => 'System'; String get systemThemeDescription => 'Follow system settings'; String get lightTheme => 'Light'; String get darkTheme => 'Dark'; String get libraryDensity => 'Library Density'; String get compact => 'Compact'; String get compactDescription => 'Smaller cards, more items visible'; String get normal => 'Normal'; String get normalDescription => 'Default size'; String get comfortable => 'Comfortable'; String get comfortableDescription => 'Larger cards, fewer items visible'; String get viewMode => 'View Mode'; String get gridView => 'Grid'; String get gridViewDescription => 'Display items in a grid layout'; String get listView => 'List'; String get listViewDescription => 'Display items in a list layout'; String get useSeasonPosters => 'Use Season Posters'; String get showHeroSection => 'Show Hero Section'; String get hardwareDecoding => 'Hardware Decoding'; String get hardwareDecodingDescription => 'Use hardware acceleration when available'; String get bufferSize => 'Buffer Size'; String bufferSizeMB({required Object size}) => '${size}MB'; String get subtitleStyling => 'Subtitle Styling'; String get subtitleStylingDescription => 'Customize subtitle appearance'; String get smallSkipDuration => 'Small Skip Duration'; String get largeSkipDuration => 'Large Skip Duration'; String secondsUnit({required Object seconds}) => '${seconds} seconds'; String get defaultSleepTimer => 'Default Sleep Timer'; String minutesUnit({required Object minutes}) => '${minutes} minutes'; String get rememberTrackSelections => 'Remember track selections per show/movie'; String get rememberTrackSelectionsDescription => 'Automatically save audio and subtitle language preferences when you change tracks during playback'; String get videoPlayerControls => 'Video Player Controls'; String get keyboardShortcuts => 'Keyboard Shortcuts'; String get keyboardShortcutsDescription => 'Customize keyboard shortcuts'; String get videoPlayerNavigation => 'Video Player Navigation'; String get videoPlayerNavigationDescription => 'Use arrow keys to navigate video player controls'; String get debugLogging => 'Debug Logging'; String get debugLoggingDescription => 'Enable detailed logging for troubleshooting'; String get viewLogs => 'View Logs'; String get viewLogsDescription => 'View application logs'; String get clearCache => 'Clear Cache'; String get clearCacheDescription => 'This will clear all cached images and data. The app may take longer to load content after clearing the cache.'; String get clearCacheSuccess => 'Cache cleared successfully'; String get resetSettings => 'Reset Settings'; String get resetSettingsDescription => 'This will reset all settings to their default values. This action cannot be undone.'; String get resetSettingsSuccess => 'Settings reset successfully'; String get shortcutsReset => 'Shortcuts reset to defaults'; String get about => 'About'; String get aboutDescription => 'App information and licenses'; String get updates => 'Updates'; String get updateAvailable => 'Update Available'; String get checkForUpdates => 'Check for Updates'; String get validationErrorEnterNumber => 'Please enter a valid number'; String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'Duration must be between ${min} and ${max} ${unit}'; String shortcutAlreadyAssigned({required Object action}) => 'Shortcut already assigned to ${action}'; String shortcutUpdated({required Object action}) => 'Shortcut updated for ${action}'; String get autoSkip => 'Auto Skip'; String get autoSkipIntro => 'Auto Skip Intro'; String get autoSkipIntroDescription => 'Automatically skip intro markers after a few seconds'; String get autoSkipCredits => 'Auto Skip Credits'; String get autoSkipCreditsDescription => 'Automatically skip credits and play next episode'; String get autoSkipDelay => 'Auto Skip Delay'; String autoSkipDelayDescription({required Object seconds}) => 'Wait ${seconds} seconds before auto-skipping'; String get downloads => 'Downloads'; String get downloadLocationDescription => 'Choose where to store downloaded content'; String get downloadLocationDefault => 'Default (App Storage)'; String get downloadLocationCustom => 'Custom Location'; String get selectFolder => 'Select Folder'; String get resetToDefault => 'Reset to Default'; String currentPath({required Object path}) => 'Current: ${path}'; String get downloadLocationChanged => 'Download location changed'; String get downloadLocationReset => 'Download location reset to default'; String get downloadLocationInvalid => 'Selected folder is not writable'; String get downloadLocationSelectError => 'Failed to select folder'; String get downloadOnWifiOnly => 'Download on WiFi only'; String get downloadOnWifiOnlyDescription => 'Prevent downloads when on cellular data'; String get cellularDownloadBlocked => 'Downloads are disabled on cellular data. Connect to WiFi or change the setting.'; } // Path: search class _StringsSearchEn { _StringsSearchEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get hint => 'Search movies, shows, music...'; String get tryDifferentTerm => 'Try a different search term'; String get searchYourMedia => 'Search your media'; String get enterTitleActorOrKeyword => 'Enter a title, actor, or keyword'; } // Path: hotkeys class _StringsHotkeysEn { _StringsHotkeysEn._(this._root); final Translations _root; // ignore: unused_field // Translations String setShortcutFor({required Object actionName}) => 'Set Shortcut for ${actionName}'; String get clearShortcut => 'Clear shortcut'; } // Path: pinEntry class _StringsPinEntryEn { _StringsPinEntryEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get enterPin => 'Enter PIN'; String get showPin => 'Show PIN'; String get hidePin => 'Hide PIN'; } // Path: fileInfo class _StringsFileInfoEn { _StringsFileInfoEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'File Info'; String get video => 'Video'; String get audio => 'Audio'; String get file => 'File'; String get advanced => 'Advanced'; String get codec => 'Codec'; String get resolution => 'Resolution'; String get bitrate => 'Bitrate'; String get frameRate => 'Frame Rate'; String get aspectRatio => 'Aspect Ratio'; String get profile => 'Profile'; String get bitDepth => 'Bit Depth'; String get colorSpace => 'Color Space'; String get colorRange => 'Color Range'; String get colorPrimaries => 'Color Primaries'; String get chromaSubsampling => 'Chroma Subsampling'; String get channels => 'Channels'; String get path => 'Path'; String get size => 'Size'; String get container => 'Container'; String get duration => 'Duration'; String get optimizedForStreaming => 'Optimized for Streaming'; String get has64bitOffsets => '64-bit Offsets'; } // Path: mediaMenu class _StringsMediaMenuEn { _StringsMediaMenuEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get markAsWatched => 'Mark as Watched'; String get markAsUnwatched => 'Mark as Unwatched'; String get removeFromContinueWatching => 'Remove from Continue Watching'; String get goToSeries => 'Go to series'; String get goToSeason => 'Go to season'; String get shufflePlay => 'Shuffle Play'; String get fileInfo => 'File Info'; } // Path: accessibility class _StringsAccessibilityEn { _StringsAccessibilityEn._(this._root); final Translations _root; // ignore: unused_field // Translations String mediaCardMovie({required Object title}) => '${title}, movie'; String mediaCardShow({required Object title}) => '${title}, TV show'; String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; String get mediaCardWatched => 'watched'; String mediaCardPartiallyWatched({required Object percent}) => '${percent} percent watched'; String get mediaCardUnwatched => 'unwatched'; String get tapToPlay => 'Tap to play'; } // Path: tooltips class _StringsTooltipsEn { _StringsTooltipsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get shufflePlay => 'Shuffle play'; String get markAsWatched => 'Mark as watched'; String get markAsUnwatched => 'Mark as unwatched'; } // Path: videoControls class _StringsVideoControlsEn { _StringsVideoControlsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get audioLabel => 'Audio'; String get subtitlesLabel => 'Subtitles'; String get resetToZero => 'Reset to 0ms'; String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; String playsLater({required Object label}) => '${label} plays later'; String playsEarlier({required Object label}) => '${label} plays earlier'; String get noOffset => 'No offset'; String get letterbox => 'Letterbox'; String get fillScreen => 'Fill screen'; String get stretch => 'Stretch'; String get lockRotation => 'Lock rotation'; String get unlockRotation => 'Unlock rotation'; String get sleepTimer => 'Sleep Timer'; String get timerActive => 'Timer Active'; String playbackWillPauseIn({required Object duration}) => 'Playback will pause in ${duration}'; String get sleepTimerCompleted => 'Sleep timer completed - playback paused'; String get playButton => 'Play'; String get pauseButton => 'Pause'; String seekBackwardButton({required Object seconds}) => 'Seek backward ${seconds} seconds'; String seekForwardButton({required Object seconds}) => 'Seek forward ${seconds} seconds'; String get previousButton => 'Previous episode'; String get nextButton => 'Next episode'; String get previousChapterButton => 'Previous chapter'; String get nextChapterButton => 'Next chapter'; String get muteButton => 'Mute'; String get unmuteButton => 'Unmute'; String get settingsButton => 'Video settings'; String get audioTrackButton => 'Audio tracks'; String get subtitlesButton => 'Subtitles'; String get chaptersButton => 'Chapters'; String get versionsButton => 'Video versions'; String get aspectRatioButton => 'Aspect ratio'; String get fullscreenButton => 'Enter fullscreen'; String get exitFullscreenButton => 'Exit fullscreen'; String get rotationLockButton => 'Rotation lock'; String get timelineSlider => 'Video timeline'; String get volumeSlider => 'Volume level'; String get backButton => 'Back'; } // Path: userStatus class _StringsUserStatusEn { _StringsUserStatusEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get admin => 'Admin'; String get restricted => 'Restricted'; String get protected => 'Protected'; String get current => 'CURRENT'; } // Path: messages class _StringsMessagesEn { _StringsMessagesEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get markedAsWatched => 'Marked as watched'; String get markedAsUnwatched => 'Marked as unwatched'; String get markedAsWatchedOffline => 'Marked as watched (will sync when online)'; String get markedAsUnwatchedOffline => 'Marked as unwatched (will sync when online)'; String get removedFromContinueWatching => 'Removed from Continue Watching'; String errorLoading({required Object error}) => 'Error: ${error}'; String get fileInfoNotAvailable => 'File information not available'; String errorLoadingFileInfo({required Object error}) => 'Error loading file info: ${error}'; String get errorLoadingSeries => 'Error loading series'; String get errorLoadingSeason => 'Error loading season'; String get musicNotSupported => 'Music playback is not yet supported'; String get logsCleared => 'Logs cleared'; String get logsCopied => 'Logs copied to clipboard'; String get noLogsAvailable => 'No logs available'; String libraryScanning({required Object title}) => 'Scanning "${title}"...'; String libraryScanStarted({required Object title}) => 'Library scan started for "${title}"'; String libraryScanFailed({required Object error}) => 'Failed to scan library: ${error}'; String metadataRefreshing({required Object title}) => 'Refreshing metadata for "${title}"...'; String metadataRefreshStarted({required Object title}) => 'Metadata refresh started for "${title}"'; String metadataRefreshFailed({required Object error}) => 'Failed to refresh metadata: ${error}'; String get logoutConfirm => 'Are you sure you want to logout?'; String get noSeasonsFound => 'No seasons found'; String get noEpisodesFound => 'No episodes found in first season'; String get noEpisodesFoundGeneral => 'No episodes found'; String get noResultsFound => 'No results found'; String sleepTimerSet({required Object label}) => 'Sleep timer set for ${label}'; String get noItemsAvailable => 'No items available'; String get failedToCreatePlayQueue => 'Failed to create play queue'; String get failedToCreatePlayQueueNoItems => 'Failed to create play queue - no items'; String failedPlayback({required Object action, required Object error}) => 'Failed to ${action}: ${error}'; String get youAreOffline => 'You\'re Offline'; String get offlineFeatureUnavailable => 'This feature requires an internet connection. Your downloads and settings are still available.'; } // Path: subtitlingStyling class _StringsSubtitlingStylingEn { _StringsSubtitlingStylingEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get stylingOptions => 'Styling Options'; String get fontSize => 'Font Size'; String get textColor => 'Text Color'; String get borderSize => 'Border Size'; String get borderColor => 'Border Color'; String get backgroundOpacity => 'Background Opacity'; String get backgroundColor => 'Background Color'; } // Path: dialog class _StringsDialogEn { _StringsDialogEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get confirmAction => 'Confirm Action'; String get cancel => 'Cancel'; String get playNow => 'Play Now'; } // Path: discover class _StringsDiscoverEn { _StringsDiscoverEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Discover'; String get switchProfile => 'Switch Profile'; String get logout => 'Logout'; String get noContentAvailable => 'No content available'; String get addMediaToLibraries => 'Add some media to your libraries'; String get continueWatching => 'Continue Watching'; String get play => 'Play'; String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; String get pause => 'Pause'; String get overview => 'Overview'; String get cast => 'Cast'; String get seasons => 'Seasons'; String get studio => 'Studio'; String get rating => 'Rating'; String get watched => 'Watched'; String episodeCount({required Object count}) => '${count} episodes'; String watchedProgress({required Object watched, required Object total}) => '${watched}/${total} watched'; String get movie => 'Movie'; String get tvShow => 'TV Show'; String minutesLeft({required Object minutes}) => '${minutes} min left'; } // Path: errors class _StringsErrorsEn { _StringsErrorsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String searchFailed({required Object error}) => 'Search failed: ${error}'; String connectionTimeout({required Object context}) => 'Connection timeout while loading ${context}'; String get connectionFailed => 'Unable to connect to Plex server'; String failedToLoad({required Object context, required Object error}) => 'Failed to load ${context}: ${error}'; String get noClientAvailable => 'No client available'; String authenticationFailed({required Object error}) => 'Authentication failed: ${error}'; String get couldNotLaunchUrl => 'Could not launch auth URL'; String get pleaseEnterToken => 'Please enter a token'; String get invalidToken => 'Invalid token'; String failedToVerifyToken({required Object error}) => 'Failed to verify token: ${error}'; String failedToSwitchProfile({required Object displayName}) => 'Failed to switch to ${displayName}'; } // Path: libraries class _StringsLibrariesEn { _StringsLibrariesEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Libraries'; String get scanLibraryFiles => 'Scan Library Files'; String get scanLibrary => 'Scan Library'; String get analyze => 'Analyze'; String get analyzeLibrary => 'Analyze Library'; String get refreshMetadata => 'Refresh Metadata'; String get emptyTrash => 'Empty Trash'; String emptyingTrash({required Object title}) => 'Emptying trash for "${title}"...'; String trashEmptied({required Object title}) => 'Trash emptied for "${title}"'; String failedToEmptyTrash({required Object error}) => 'Failed to empty trash: ${error}'; String analyzing({required Object title}) => 'Analyzing "${title}"...'; String analysisStarted({required Object title}) => 'Analysis started for "${title}"'; String failedToAnalyze({required Object error}) => 'Failed to analyze library: ${error}'; String get noLibrariesFound => 'No libraries found'; String get thisLibraryIsEmpty => 'This library is empty'; String get all => 'All'; String get clearAll => 'Clear All'; String scanLibraryConfirm({required Object title}) => 'Are you sure you want to scan "${title}"?'; String analyzeLibraryConfirm({required Object title}) => 'Are you sure you want to analyze "${title}"?'; String refreshMetadataConfirm({required Object title}) => 'Are you sure you want to refresh metadata for "${title}"?'; String emptyTrashConfirm({required Object title}) => 'Are you sure you want to empty trash for "${title}"?'; String get manageLibraries => 'Manage Libraries'; String get sort => 'Sort'; String get sortBy => 'Sort By'; String get filters => 'Filters'; String get confirmActionMessage => 'Are you sure you want to perform this action?'; String get showLibrary => 'Show library'; String get hideLibrary => 'Hide library'; String get libraryOptions => 'Library options'; String get content => 'library content'; String get selectLibrary => 'Select library'; String filtersWithCount({required Object count}) => 'Filters (${count})'; String get noRecommendations => 'No recommendations available'; String get noCollections => 'No collections in this library'; String get noFoldersFound => 'No folders found'; String get folders => 'folders'; late final _StringsLibrariesTabsEn tabs = _StringsLibrariesTabsEn._(_root); late final _StringsLibrariesGroupingsEn groupings = _StringsLibrariesGroupingsEn._(_root); } // Path: about class _StringsAboutEn { _StringsAboutEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'About'; String get openSourceLicenses => 'Open Source Licenses'; String versionLabel({required Object version}) => 'Version ${version}'; String get appDescription => 'A beautiful Plex client for Flutter'; String get viewLicensesDescription => 'View licenses of third-party libraries'; } // Path: serverSelection class _StringsServerSelectionEn { _StringsServerSelectionEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get allServerConnectionsFailed => 'Failed to connect to any servers. Please check your network and try again.'; String get noServersFound => 'No servers found'; String noServersFoundForAccount({required Object username, required Object email}) => 'No servers found for ${username} (${email})'; String failedToLoadServers({required Object error}) => 'Failed to load servers: ${error}'; } // Path: hubDetail class _StringsHubDetailEn { _StringsHubDetailEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Title'; String get releaseYear => 'Release Year'; String get dateAdded => 'Date Added'; String get rating => 'Rating'; String get noItemsFound => 'No items found'; } // Path: logs class _StringsLogsEn { _StringsLogsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get clearLogs => 'Clear Logs'; String get copyLogs => 'Copy Logs'; String get error => 'Error:'; String get stackTrace => 'Stack Trace:'; } // Path: licenses class _StringsLicensesEn { _StringsLicensesEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get relatedPackages => 'Related Packages'; String get license => 'License'; String licenseNumber({required Object number}) => 'License ${number}'; String licensesCount({required Object count}) => '${count} licenses'; } // Path: navigation class _StringsNavigationEn { _StringsNavigationEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get home => 'Home'; String get search => 'Search'; String get libraries => 'Libraries'; String get settings => 'Settings'; String get downloads => 'Downloads'; } // Path: collections class _StringsCollectionsEn { _StringsCollectionsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Collections'; String get collection => 'Collection'; String get empty => 'Collection is empty'; String get unknownLibrarySection => 'Cannot delete: Unknown library section'; String get deleteCollection => 'Delete Collection'; String deleteConfirm({required Object title}) => 'Are you sure you want to delete "${title}"? This action cannot be undone.'; String get deleted => 'Collection deleted'; String get deleteFailed => 'Failed to delete collection'; String deleteFailedWithError({required Object error}) => 'Failed to delete collection: ${error}'; String failedToLoadItems({required Object error}) => 'Failed to load collection items: ${error}'; String get selectCollection => 'Select Collection'; String get createNewCollection => 'Create New Collection'; String get collectionName => 'Collection Name'; String get enterCollectionName => 'Enter collection name'; String get addedToCollection => 'Added to collection'; String get errorAddingToCollection => 'Failed to add to collection'; String get created => 'Collection created'; String get removeFromCollection => 'Remove from collection'; String removeFromCollectionConfirm({required Object title}) => 'Remove "${title}" from this collection?'; String get removedFromCollection => 'Removed from collection'; String get removeFromCollectionFailed => 'Failed to remove from collection'; String removeFromCollectionError({required Object error}) => 'Error removing from collection: ${error}'; } // Path: playlists class _StringsPlaylistsEn { _StringsPlaylistsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Playlists'; String get playlist => 'Playlist'; String get noPlaylists => 'No playlists found'; String get create => 'Create Playlist'; String get playlistName => 'Playlist Name'; String get enterPlaylistName => 'Enter playlist name'; String get delete => 'Delete Playlist'; String get removeItem => 'Remove from Playlist'; String get smartPlaylist => 'Smart Playlist'; String itemCount({required Object count}) => '${count} items'; String get oneItem => '1 item'; String get emptyPlaylist => 'This playlist is empty'; String get deleteConfirm => 'Delete Playlist?'; String deleteMessage({required Object name}) => 'Are you sure you want to delete "${name}"?'; String get created => 'Playlist created'; String get deleted => 'Playlist deleted'; String get itemAdded => 'Added to playlist'; String get itemRemoved => 'Removed from playlist'; String get selectPlaylist => 'Select Playlist'; String get createNewPlaylist => 'Create New Playlist'; String get errorCreating => 'Failed to create playlist'; String get errorDeleting => 'Failed to delete playlist'; String get errorLoading => 'Failed to load playlists'; String get errorAdding => 'Failed to add to playlist'; String get errorReordering => 'Failed to reorder playlist item'; String get errorRemoving => 'Failed to remove from playlist'; } // Path: downloads class _StringsDownloadsEn { _StringsDownloadsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get title => 'Downloads'; String get manage => 'Manage'; String get tvShows => 'TV Shows'; String get movies => 'Movies'; String get noDownloads => 'No downloads yet'; String get noDownloadsDescription => 'Downloaded content will appear here for offline viewing'; String get downloadNow => 'Download'; String get deleteDownload => 'Delete download'; String get retryDownload => 'Retry download'; String get downloadQueued => 'Download queued'; String episodesQueued({required Object count}) => '${count} episodes queued for download'; String get downloadDeleted => 'Download deleted'; String deleteConfirm({required Object title}) => 'Are you sure you want to delete "${title}"? This will remove the downloaded file from your device.'; String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Deleting ${title}... (${current} of ${total})'; } // Path: libraries.tabs class _StringsLibrariesTabsEn { _StringsLibrariesTabsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get recommended => 'Recommended'; String get browse => 'Browse'; String get collections => 'Collections'; String get playlists => 'Playlists'; } // Path: libraries.groupings class _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsEn._(this._root); final Translations _root; // ignore: unused_field // Translations String get all => 'All'; String get movies => 'Movies'; String get shows => 'TV Shows'; String get seasons => 'Seasons'; String get episodes => 'Episodes'; String get folders => 'Folders'; } // Path: class _StringsDe implements Translations { /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. _StringsDe.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = TranslationMetadata( locale: AppLocale.de, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsDe _root = this; // ignore: unused_field // Translations @override late final _StringsAppDe app = _StringsAppDe._(_root); @override late final _StringsAuthDe auth = _StringsAuthDe._(_root); @override late final _StringsCommonDe common = _StringsCommonDe._(_root); @override late final _StringsScreensDe screens = _StringsScreensDe._(_root); @override late final _StringsUpdateDe update = _StringsUpdateDe._(_root); @override late final _StringsSettingsDe settings = _StringsSettingsDe._(_root); @override late final _StringsSearchDe search = _StringsSearchDe._(_root); @override late final _StringsHotkeysDe hotkeys = _StringsHotkeysDe._(_root); @override late final _StringsPinEntryDe pinEntry = _StringsPinEntryDe._(_root); @override late final _StringsFileInfoDe fileInfo = _StringsFileInfoDe._(_root); @override late final _StringsMediaMenuDe mediaMenu = _StringsMediaMenuDe._(_root); @override late final _StringsAccessibilityDe accessibility = _StringsAccessibilityDe._(_root); @override late final _StringsTooltipsDe tooltips = _StringsTooltipsDe._(_root); @override late final _StringsVideoControlsDe videoControls = _StringsVideoControlsDe._(_root); @override late final _StringsUserStatusDe userStatus = _StringsUserStatusDe._(_root); @override late final _StringsMessagesDe messages = _StringsMessagesDe._(_root); @override late final _StringsSubtitlingStylingDe subtitlingStyling = _StringsSubtitlingStylingDe._(_root); @override late final _StringsDialogDe dialog = _StringsDialogDe._(_root); @override late final _StringsDiscoverDe discover = _StringsDiscoverDe._(_root); @override late final _StringsErrorsDe errors = _StringsErrorsDe._(_root); @override late final _StringsLibrariesDe libraries = _StringsLibrariesDe._(_root); @override late final _StringsAboutDe about = _StringsAboutDe._(_root); @override late final _StringsServerSelectionDe serverSelection = _StringsServerSelectionDe._(_root); @override late final _StringsHubDetailDe hubDetail = _StringsHubDetailDe._(_root); @override late final _StringsLogsDe logs = _StringsLogsDe._(_root); @override late final _StringsLicensesDe licenses = _StringsLicensesDe._(_root); @override late final _StringsNavigationDe navigation = _StringsNavigationDe._(_root); @override late final _StringsDownloadsDe downloads = _StringsDownloadsDe._(_root); @override late final _StringsPlaylistsDe playlists = _StringsPlaylistsDe._(_root); @override late final _StringsCollectionsDe collections = _StringsCollectionsDe._(_root); } // Path: app class _StringsAppDe implements _StringsAppEn { _StringsAppDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Plezy'; @override String get loading => 'Lädt...'; } // Path: auth class _StringsAuthDe implements _StringsAuthEn { _StringsAuthDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get signInWithPlex => 'Mit Plex anmelden'; @override String get showQRCode => 'QR-Code anzeigen'; @override String get cancel => 'Abbrechen'; @override String get authenticate => 'Authentifizieren'; @override String get retry => 'Erneut versuchen'; @override String get debugEnterToken => 'Debug: Plex-Token eingeben'; @override String get plexTokenLabel => 'Plex-Auth-Token'; @override String get plexTokenHint => 'Plex.tv-Token eingeben'; @override String get authenticationTimeout => 'Authentifizierung abgelaufen. Bitte erneut versuchen.'; @override String get scanQRCodeInstruction => 'Diesen QR-Code mit einem bei Plex angemeldeten Gerät scannen, um zu authentifizieren.'; @override String get waitingForAuth => 'Warte auf Authentifizierung...\nBitte Anmeldung im Browser abschließen.'; } // Path: common class _StringsCommonDe implements _StringsCommonEn { _StringsCommonDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get cancel => 'Abbrechen'; @override String get save => 'Speichern'; @override String get close => 'Schließen'; @override String get clear => 'Leeren'; @override String get reset => 'Zurücksetzen'; @override String get later => 'Später'; @override String get submit => 'Senden'; @override String get confirm => 'Bestätigen'; @override String get retry => 'Erneut versuchen'; @override String get logout => 'Abmelden'; @override String get unknown => 'Unbekannt'; @override String get refresh => 'Aktualisieren'; @override String get yes => 'Ja'; @override String get no => 'Nein'; @override String get delete => 'Löschen'; @override String get shuffle => 'Zufall'; @override String get addTo => 'Hinzufügen zu...'; } // Path: screens class _StringsScreensDe implements _StringsScreensEn { _StringsScreensDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get licenses => 'Lizenzen'; @override String get selectServer => 'Server auswählen'; @override String get switchProfile => 'Profil wechseln'; @override String get subtitleStyling => 'Untertitel-Stil'; @override String get search => 'Suche'; @override String get logs => 'Protokolle'; } // Path: update class _StringsUpdateDe implements _StringsUpdateEn { _StringsUpdateDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get available => 'Update verfügbar'; @override String versionAvailable({required Object version}) => 'Version ${version} ist verfügbar'; @override String currentVersion({required Object version}) => 'Aktuell: ${version}'; @override String get skipVersion => 'Diese Version überspringen'; @override String get viewRelease => 'Release anzeigen'; @override String get latestVersion => 'Aktuellste Version installiert'; @override String get checkFailed => 'Fehler bei der Updateprüfung'; } // Path: settings class _StringsSettingsDe implements _StringsSettingsEn { _StringsSettingsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Einstellungen'; @override String get language => 'Sprache'; @override String get theme => 'Design'; @override String get appearance => 'Darstellung'; @override String get videoPlayback => 'Videowiedergabe'; @override String get advanced => 'Erweitert'; @override String get useSeasonPostersDescription => 'Staffelposter statt Serienposter für Episoden anzeigen'; @override String get showHeroSectionDescription => 'Bereich mit empfohlenen Inhalten auf der Startseite anzeigen'; @override String get secondsLabel => 'Sekunden'; @override String get minutesLabel => 'Minuten'; @override String get secondsShort => 's'; @override String get minutesShort => 'm'; @override String durationHint({required Object min, required Object max}) => 'Dauer eingeben (${min}-${max})'; @override String get systemTheme => 'System'; @override String get systemThemeDescription => 'Systemeinstellungen folgen'; @override String get lightTheme => 'Hell'; @override String get darkTheme => 'Dunkel'; @override String get libraryDensity => 'Mediathekdichte'; @override String get compact => 'Kompakt'; @override String get compactDescription => 'Kleinere Karten, mehr Elemente sichtbar'; @override String get normal => 'Normal'; @override String get normalDescription => 'Standardgröße'; @override String get comfortable => 'Großzügig'; @override String get comfortableDescription => 'Größere Karten, weniger Elemente sichtbar'; @override String get viewMode => 'Ansichtsmodus'; @override String get gridView => 'Raster'; @override String get gridViewDescription => 'Elemente im Raster anzeigen'; @override String get listView => 'Liste'; @override String get listViewDescription => 'Elemente in Listenansicht anzeigen'; @override String get useSeasonPosters => 'Staffelposter verwenden'; @override String get showHeroSection => 'Hero-Bereich anzeigen'; @override String get hardwareDecoding => 'Hardware-Decodierung'; @override String get hardwareDecodingDescription => 'Hardwarebeschleunigung verwenden, sofern verfügbar'; @override String get bufferSize => 'Puffergröße'; @override String bufferSizeMB({required Object size}) => '${size}MB'; @override String get subtitleStyling => 'Untertitel-Stil'; @override String get subtitleStylingDescription => 'Aussehen von Untertiteln anpassen'; @override String get smallSkipDuration => 'Kleine Sprungdauer'; @override String get largeSkipDuration => 'Große Sprungdauer'; @override String secondsUnit({required Object seconds}) => '${seconds} Sekunden'; @override String get defaultSleepTimer => 'Standard-Sleep-Timer'; @override String minutesUnit({required Object minutes}) => '${minutes} Minuten'; @override String get rememberTrackSelections => 'Spurauswahl pro Serie/Film merken'; @override String get rememberTrackSelectionsDescription => 'Audio- und Untertitelsprache automatisch speichern, wenn während der Wiedergabe geändert'; @override String get videoPlayerControls => 'Videoplayer-Steuerung'; @override String get keyboardShortcuts => 'Tastenkürzel'; @override String get keyboardShortcutsDescription => 'Tastenkürzel anpassen'; @override String get videoPlayerNavigation => 'Videoplayer-Navigation'; @override String get videoPlayerNavigationDescription => 'Pfeiltasten zur Navigation der Videoplayer-Steuerung verwenden'; @override String get debugLogging => 'Debug-Protokollierung'; @override String get debugLoggingDescription => 'Detaillierte Protokolle zur Fehleranalyse aktivieren'; @override String get viewLogs => 'Protokolle anzeigen'; @override String get viewLogsDescription => 'App-Protokolle anzeigen'; @override String get clearCache => 'Cache löschen'; @override String get clearCacheDescription => 'Löscht alle zwischengespeicherten Bilder und Daten. Die App kann danach langsamer laden.'; @override String get clearCacheSuccess => 'Cache erfolgreich gelöscht'; @override String get resetSettings => 'Einstellungen zurücksetzen'; @override String get resetSettingsDescription => 'Alle Einstellungen auf Standard zurücksetzen. Dies kann nicht rückgängig gemacht werden.'; @override String get resetSettingsSuccess => 'Einstellungen erfolgreich zurückgesetzt'; @override String get shortcutsReset => 'Tastenkürzel auf Standard zurückgesetzt'; @override String get about => 'Über'; @override String get aboutDescription => 'App-Informationen und Lizenzen'; @override String get updates => 'Updates'; @override String get updateAvailable => 'Update verfügbar'; @override String get checkForUpdates => 'Nach Updates suchen'; @override String get validationErrorEnterNumber => 'Bitte eine gültige Zahl eingeben'; @override String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'Dauer muss zwischen ${min} und ${max} ${unit} liegen'; @override String shortcutAlreadyAssigned({required Object action}) => 'Tastenkürzel bereits zugewiesen an ${action}'; @override String shortcutUpdated({required Object action}) => 'Tastenkürzel aktualisiert für ${action}'; @override String get autoSkip => 'Automatisches Überspringen'; @override String get autoSkipIntro => 'Intro automatisch überspringen'; @override String get autoSkipIntroDescription => 'Intro-Marker nach wenigen Sekunden automatisch überspringen'; @override String get autoSkipCredits => 'Abspann automatisch überspringen'; @override String get autoSkipCreditsDescription => 'Abspann automatisch überspringen und nächste Episode abspielen'; @override String get autoSkipDelay => 'Verzögerung für automatisches Überspringen'; @override String autoSkipDelayDescription({required Object seconds}) => '${seconds} Sekunden vor dem automatischen Überspringen warten'; @override String get downloads => 'Downloads'; @override String get downloadLocationDescription => 'Speicherort für heruntergeladene Inhalte wählen'; @override String get downloadLocationDefault => 'Standard (App-Speicher)'; @override String get downloadLocationCustom => 'Benutzerdefinierter Speicherort'; @override String get selectFolder => 'Ordner auswählen'; @override String get resetToDefault => 'Auf Standard zurücksetzen'; @override String currentPath({required Object path}) => 'Aktuell: ${path}'; @override String get downloadLocationChanged => 'Download-Speicherort geändert'; @override String get downloadLocationReset => 'Download-Speicherort auf Standard zurückgesetzt'; @override String get downloadLocationInvalid => 'Ausgewählter Ordner ist nicht beschreibbar'; @override String get downloadLocationSelectError => 'Ordnerauswahl fehlgeschlagen'; @override String get downloadOnWifiOnly => 'Nur über WLAN herunterladen'; @override String get downloadOnWifiOnlyDescription => 'Downloads über mobile Daten verhindern'; @override String get cellularDownloadBlocked => 'Downloads sind über mobile Daten deaktiviert. Verbinde dich mit einem WLAN oder ändere die Einstellung.'; } // Path: search class _StringsSearchDe implements _StringsSearchEn { _StringsSearchDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get hint => 'Filme, Serien, Musik suchen...'; @override String get tryDifferentTerm => 'Anderen Suchbegriff versuchen'; @override String get searchYourMedia => 'In den eigenen Medien suchen'; @override String get enterTitleActorOrKeyword => 'Titel, Schauspieler oder Stichwort eingeben'; } // Path: hotkeys class _StringsHotkeysDe implements _StringsHotkeysEn { _StringsHotkeysDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String setShortcutFor({required Object actionName}) => 'Tastenkürzel festlegen für ${actionName}'; @override String get clearShortcut => 'Kürzel löschen'; } // Path: pinEntry class _StringsPinEntryDe implements _StringsPinEntryEn { _StringsPinEntryDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get enterPin => 'PIN eingeben'; @override String get showPin => 'PIN anzeigen'; @override String get hidePin => 'PIN verbergen'; } // Path: fileInfo class _StringsFileInfoDe implements _StringsFileInfoEn { _StringsFileInfoDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Dateiinfo'; @override String get video => 'Video'; @override String get audio => 'Audio'; @override String get file => 'Datei'; @override String get advanced => 'Erweitert'; @override String get codec => 'Codec'; @override String get resolution => 'Auflösung'; @override String get bitrate => 'Bitrate'; @override String get frameRate => 'Bildrate'; @override String get aspectRatio => 'Seitenverhältnis'; @override String get profile => 'Profil'; @override String get bitDepth => 'Farbtiefe'; @override String get colorSpace => 'Farbraum'; @override String get colorRange => 'Farbbereich'; @override String get colorPrimaries => 'Primärfarben'; @override String get chromaSubsampling => 'Chroma-Subsampling'; @override String get channels => 'Kanäle'; @override String get path => 'Pfad'; @override String get size => 'Größe'; @override String get container => 'Container'; @override String get duration => 'Dauer'; @override String get optimizedForStreaming => 'Für Streaming optimiert'; @override String get has64bitOffsets => '64-Bit-Offsets'; } // Path: mediaMenu class _StringsMediaMenuDe implements _StringsMediaMenuEn { _StringsMediaMenuDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get markAsWatched => 'Als gesehen markieren'; @override String get markAsUnwatched => 'Als ungesehen markieren'; @override String get removeFromContinueWatching => 'Aus ‚Weiterschauen‘ entfernen'; @override String get goToSeries => 'Zur Serie'; @override String get goToSeason => 'Zur Staffel'; @override String get shufflePlay => 'Zufallswiedergabe'; @override String get fileInfo => 'Dateiinfo'; } // Path: accessibility class _StringsAccessibilityDe implements _StringsAccessibilityEn { _StringsAccessibilityDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String mediaCardMovie({required Object title}) => '${title}, Film'; @override String mediaCardShow({required Object title}) => '${title}, Serie'; @override String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; @override String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; @override String get mediaCardWatched => 'angesehen'; @override String mediaCardPartiallyWatched({required Object percent}) => '${percent} Prozent angesehen'; @override String get mediaCardUnwatched => 'ungeschaut'; @override String get tapToPlay => 'Zum Abspielen tippen'; } // Path: tooltips class _StringsTooltipsDe implements _StringsTooltipsEn { _StringsTooltipsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get shufflePlay => 'Zufallswiedergabe'; @override String get markAsWatched => 'Als gesehen markieren'; @override String get markAsUnwatched => 'Als ungesehen markieren'; } // Path: videoControls class _StringsVideoControlsDe implements _StringsVideoControlsEn { _StringsVideoControlsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get audioLabel => 'Audio'; @override String get subtitlesLabel => 'Untertitel'; @override String get resetToZero => 'Auf 0 ms zurücksetzen'; @override String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; @override String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; @override String playsLater({required Object label}) => '${label} spielt später'; @override String playsEarlier({required Object label}) => '${label} spielt früher'; @override String get noOffset => 'Kein Offset'; @override String get letterbox => 'Letterbox'; @override String get fillScreen => 'Bild füllen'; @override String get stretch => 'Strecken'; @override String get lockRotation => 'Rotation sperren'; @override String get unlockRotation => 'Rotation entsperren'; @override String get sleepTimer => 'Schlaftimer'; @override String get timerActive => 'Schlaftimer aktiv'; @override String playbackWillPauseIn({required Object duration}) => 'Wiedergabe wird in ${duration} pausiert'; @override String get sleepTimerCompleted => 'Schlaftimer abgelaufen – Wiedergabe pausiert'; @override String get playButton => 'Wiedergeben'; @override String get pauseButton => 'Pause'; @override String seekBackwardButton({required Object seconds}) => '${seconds} Sekunden zurück'; @override String seekForwardButton({required Object seconds}) => '${seconds} Sekunden vor'; @override String get previousButton => 'Vorherige Episode'; @override String get nextButton => 'Nächste Episode'; @override String get previousChapterButton => 'Vorheriges Kapitel'; @override String get nextChapterButton => 'Nächstes Kapitel'; @override String get muteButton => 'Stumm schalten'; @override String get unmuteButton => 'Stummschaltung aufheben'; @override String get settingsButton => 'Videoeinstellungen'; @override String get audioTrackButton => 'Tonspuren'; @override String get subtitlesButton => 'Untertitel'; @override String get chaptersButton => 'Kapitel'; @override String get versionsButton => 'Videoversionen'; @override String get aspectRatioButton => 'Seitenverhältnis'; @override String get fullscreenButton => 'Vollbild aktivieren'; @override String get exitFullscreenButton => 'Vollbild verlassen'; @override String get rotationLockButton => 'Dreh­sperre'; @override String get timelineSlider => 'Video-Zeitleiste'; @override String get volumeSlider => 'Lautstärkepegel'; @override String get backButton => 'Zurück'; } // Path: userStatus class _StringsUserStatusDe implements _StringsUserStatusEn { _StringsUserStatusDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get admin => 'Eigentümer'; @override String get restricted => 'Eingeschränkt'; @override String get protected => 'Geschützt'; @override String get current => 'AKTUELL'; } // Path: messages class _StringsMessagesDe implements _StringsMessagesEn { _StringsMessagesDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get markedAsWatched => 'Als gesehen markiert'; @override String get markedAsUnwatched => 'Als ungesehen markiert'; @override String get markedAsWatchedOffline => 'Als gesehen markiert (wird synchronisiert, wenn online)'; @override String get markedAsUnwatchedOffline => 'Als ungesehen markiert (wird synchronisiert, wenn online)'; @override String get removedFromContinueWatching => 'Aus ‚Weiterschauen\' entfernt'; @override String errorLoading({required Object error}) => 'Fehler: ${error}'; @override String get fileInfoNotAvailable => 'Dateiinfo nicht verfügbar'; @override String errorLoadingFileInfo({required Object error}) => 'Fehler beim Laden der Dateiinfo: ${error}'; @override String get errorLoadingSeries => 'Fehler beim Laden der Serie'; @override String get errorLoadingSeason => 'Fehler beim Laden der Staffel'; @override String get musicNotSupported => 'Musikwiedergabe wird noch nicht unterstützt'; @override String get logsCleared => 'Protokolle gelöscht'; @override String get logsCopied => 'Protokolle in Zwischenablage kopiert'; @override String get noLogsAvailable => 'Keine Protokolle verfügbar'; @override String libraryScanning({required Object title}) => 'Scanne „${title}“...'; @override String libraryScanStarted({required Object title}) => 'Mediathekscan gestartet für „${title}“'; @override String libraryScanFailed({required Object error}) => 'Fehler beim Scannen der Mediathek: ${error}'; @override String metadataRefreshing({required Object title}) => 'Metadaten werden aktualisiert für „${title}“...'; @override String metadataRefreshStarted({required Object title}) => 'Metadaten-Aktualisierung gestartet für „${title}“'; @override String metadataRefreshFailed({required Object error}) => 'Metadaten konnten nicht aktualisiert werden: ${error}'; @override String get logoutConfirm => 'Abmeldung wirklich durchführen?'; @override String get noSeasonsFound => 'Keine Staffeln gefunden'; @override String get noEpisodesFound => 'Keine Episoden in der ersten Staffel gefunden'; @override String get noEpisodesFoundGeneral => 'Keine Episoden gefunden'; @override String get noResultsFound => 'Keine Ergebnisse gefunden'; @override String sleepTimerSet({required Object label}) => 'Sleep-Timer gesetzt auf ${label}'; @override String get noItemsAvailable => 'Keine Elemente verfügbar'; @override String get failedToCreatePlayQueue => 'Wiedergabewarteschlange konnte nicht erstellt werden'; @override String get failedToCreatePlayQueueNoItems => 'Wiedergabewarteschlange konnte nicht erstellt werden – keine Elemente'; @override String failedPlayback({required Object action, required Object error}) => 'Wiedergabe für ${action} fehlgeschlagen: ${error}'; @override String get youAreOffline => 'Du bist offline'; @override String get offlineFeatureUnavailable => 'Diese Funktion erfordert eine Internetverbindung. Deine Downloads und Einstellungen sind weiterhin verfügbar.'; } // Path: subtitlingStyling class _StringsSubtitlingStylingDe implements _StringsSubtitlingStylingEn { _StringsSubtitlingStylingDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get stylingOptions => 'Stiloptionen'; @override String get fontSize => 'Schriftgröße'; @override String get textColor => 'Textfarbe'; @override String get borderSize => 'Rahmengröße'; @override String get borderColor => 'Rahmenfarbe'; @override String get backgroundOpacity => 'Hintergrunddeckkraft'; @override String get backgroundColor => 'Hintergrundfarbe'; } // Path: dialog class _StringsDialogDe implements _StringsDialogEn { _StringsDialogDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get confirmAction => 'Aktion bestätigen'; @override String get cancel => 'Abbrechen'; @override String get playNow => 'Jetzt abspielen'; } // Path: discover class _StringsDiscoverDe implements _StringsDiscoverEn { _StringsDiscoverDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Entdecken'; @override String get switchProfile => 'Profil wechseln'; @override String get switchServer => 'Server wechseln'; @override String get logout => 'Abmelden'; @override String get noContentAvailable => 'Kein Inhalt verfügbar'; @override String get addMediaToLibraries => 'Medien zur Mediathek hinzufügen'; @override String get continueWatching => 'Weiterschauen'; @override String get play => 'Abspielen'; @override String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; @override String get pause => 'Pause'; @override String get overview => 'Übersicht'; @override String get cast => 'Besetzung'; @override String get seasons => 'Staffeln'; @override String get studio => 'Studio'; @override String get rating => 'Altersfreigabe'; @override String get watched => 'Gesehen'; @override String episodeCount({required Object count}) => '${count} Episoden'; @override String watchedProgress({required Object watched, required Object total}) => '${watched} von ${total} gesehen'; @override String get movie => 'Film'; @override String get tvShow => 'Serie'; @override String minutesLeft({required Object minutes}) => '${minutes} Min übrig'; } // Path: errors class _StringsErrorsDe implements _StringsErrorsEn { _StringsErrorsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String searchFailed({required Object error}) => 'Suche fehlgeschlagen: ${error}'; @override String connectionTimeout({required Object context}) => 'Zeitüberschreitung beim Laden von ${context}'; @override String get connectionFailed => 'Verbindung zum Plex-Server fehlgeschlagen'; @override String failedToLoad({required Object context, required Object error}) => 'Fehler beim Laden von ${context}: ${error}'; @override String get noClientAvailable => 'Kein Client verfügbar'; @override String authenticationFailed({required Object error}) => 'Authentifizierung fehlgeschlagen: ${error}'; @override String get couldNotLaunchUrl => 'Auth-URL konnte nicht geöffnet werden'; @override String get pleaseEnterToken => 'Bitte Token eingeben'; @override String get invalidToken => 'Ungültiges Token'; @override String failedToVerifyToken({required Object error}) => 'Token-Verifizierung fehlgeschlagen: ${error}'; @override String failedToSwitchProfile({required Object displayName}) => 'Profilwechsel zu ${displayName} fehlgeschlagen'; } // Path: libraries class _StringsLibrariesDe implements _StringsLibrariesEn { _StringsLibrariesDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Mediatheken'; @override String get scanLibraryFiles => 'Mediatheksdateien scannen'; @override String get scanLibrary => 'Mediathek scannen'; @override String get analyze => 'Analysieren'; @override String get analyzeLibrary => 'Mediathek analysieren'; @override String get refreshMetadata => 'Metadaten aktualisieren'; @override String get emptyTrash => 'Papierkorb leeren'; @override String emptyingTrash({required Object title}) => 'Papierkorb für „${title}“ wird geleert...'; @override String trashEmptied({required Object title}) => 'Papierkorb für „${title}“ geleert'; @override String failedToEmptyTrash({required Object error}) => 'Papierkorb konnte nicht geleert werden: ${error}'; @override String analyzing({required Object title}) => 'Analysiere „${title}“...'; @override String analysisStarted({required Object title}) => 'Analyse gestartet für „${title}“'; @override String failedToAnalyze({required Object error}) => 'Analyse der Mediathek fehlgeschlagen: ${error}'; @override String get noLibrariesFound => 'Keine Mediatheken gefunden'; @override String get thisLibraryIsEmpty => 'Diese Mediathek ist leer'; @override String get all => 'Alle'; @override String get clearAll => 'Alle löschen'; @override String scanLibraryConfirm({required Object title}) => '„${title}“ wirklich scannen?'; @override String analyzeLibraryConfirm({required Object title}) => '„${title}“ wirklich analysieren?'; @override String refreshMetadataConfirm({required Object title}) => 'Metadaten für „${title}“ wirklich aktualisieren?'; @override String emptyTrashConfirm({required Object title}) => 'Papierkorb für „${title}“ wirklich leeren?'; @override String get manageLibraries => 'Mediatheken verwalten'; @override String get sort => 'Sortieren'; @override String get sortBy => 'Sortieren nach'; @override String get filters => 'Filter'; @override String get confirmActionMessage => 'Aktion wirklich durchführen?'; @override String get showLibrary => 'Mediathek anzeigen'; @override String get hideLibrary => 'Mediathek ausblenden'; @override String get libraryOptions => 'Mediatheksoptionen'; @override String get content => 'Bibliotheksinhalt'; @override String get selectLibrary => 'Bibliothek auswählen'; @override String filtersWithCount({required Object count}) => 'Filter (${count})'; @override String get noRecommendations => 'Keine Empfehlungen verfügbar'; @override String get noCollections => 'Keine Sammlungen in dieser Mediathek'; @override String get noFoldersFound => 'Keine Ordner gefunden'; @override String get folders => 'Ordner'; @override late final _StringsLibrariesTabsDe tabs = _StringsLibrariesTabsDe._(_root); @override late final _StringsLibrariesGroupingsDe groupings = _StringsLibrariesGroupingsDe._(_root); } // Path: about class _StringsAboutDe implements _StringsAboutEn { _StringsAboutDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Über'; @override String get openSourceLicenses => 'Open-Source-Lizenzen'; @override String versionLabel({required Object version}) => 'Version ${version}'; @override String get appDescription => 'Ein schöner Plex-Client für Flutter'; @override String get viewLicensesDescription => 'Lizenzen von Drittanbieter-Bibliotheken anzeigen'; } // Path: serverSelection class _StringsServerSelectionDe implements _StringsServerSelectionEn { _StringsServerSelectionDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get allServerConnectionsFailed => 'Verbindung zu allen Servern fehlgeschlagen. Bitte Netzwerk prüfen und erneut versuchen.'; @override String get noServersFound => 'Keine Server gefunden'; @override String noServersFoundForAccount({required Object username, required Object email}) => 'Keine Server gefunden für ${username} (${email})'; @override String failedToLoadServers({required Object error}) => 'Server konnten nicht geladen werden: ${error}'; } // Path: hubDetail class _StringsHubDetailDe implements _StringsHubDetailEn { _StringsHubDetailDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Titel'; @override String get releaseYear => 'Erscheinungsjahr'; @override String get dateAdded => 'Hinzugefügt am'; @override String get rating => 'Bewertung'; @override String get noItemsFound => 'Keine Elemente gefunden'; } // Path: logs class _StringsLogsDe implements _StringsLogsEn { _StringsLogsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get clearLogs => 'Protokolle löschen'; @override String get copyLogs => 'Protokolle kopieren'; @override String get error => 'Fehler:'; @override String get stackTrace => 'Stacktrace:'; } // Path: licenses class _StringsLicensesDe implements _StringsLicensesEn { _StringsLicensesDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get relatedPackages => 'Verwandte Pakete'; @override String get license => 'Lizenz'; @override String licenseNumber({required Object number}) => 'Lizenz ${number}'; @override String licensesCount({required Object count}) => '${count} Lizenzen'; } // Path: navigation class _StringsNavigationDe implements _StringsNavigationEn { _StringsNavigationDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get home => 'Start'; @override String get search => 'Suche'; @override String get libraries => 'Mediatheken'; @override String get settings => 'Einstellungen'; @override String get downloads => 'Downloads'; } // Path: downloads class _StringsDownloadsDe implements _StringsDownloadsEn { _StringsDownloadsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Downloads'; @override String get manage => 'Verwalten'; @override String get tvShows => 'Serien'; @override String get movies => 'Filme'; @override String get noDownloads => 'Noch keine Downloads'; @override String get noDownloadsDescription => 'Heruntergeladene Inhalte werden hier für die Offline-Wiedergabe angezeigt'; @override String get downloadNow => 'Herunterladen'; @override String get deleteDownload => 'Download löschen'; @override String get retryDownload => 'Download wiederholen'; @override String get downloadQueued => 'Download in Warteschlange'; @override String episodesQueued({required Object count}) => '${count} Episoden zum Download hinzugefügt'; @override String get downloadDeleted => 'Download gelöscht'; @override String deleteConfirm({required Object title}) => 'Möchtest du "${title}" wirklich löschen? Die heruntergeladene Datei wird von deinem Gerät entfernt.'; @override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Lösche ${title}... (${current} von ${total})'; } // Path: playlists class _StringsPlaylistsDe implements _StringsPlaylistsEn { _StringsPlaylistsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Wiedergabelisten'; @override String get noPlaylists => 'Keine Wiedergabelisten gefunden'; @override String get create => 'Wiedergabeliste erstellen'; @override String get playlistName => 'Name der Wiedergabeliste'; @override String get enterPlaylistName => 'Name der Wiedergabeliste eingeben'; @override String get delete => 'Wiedergabeliste löschen'; @override String get removeItem => 'Aus Wiedergabeliste entfernen'; @override String get smartPlaylist => 'Intelligente Wiedergabeliste'; @override String itemCount({required Object count}) => '${count} Elemente'; @override String get oneItem => '1 Element'; @override String get emptyPlaylist => 'Diese Wiedergabeliste ist leer'; @override String get deleteConfirm => 'Wiedergabeliste löschen?'; @override String deleteMessage({required Object name}) => 'Soll "${name}" wirklich gelöscht werden?'; @override String get created => 'Wiedergabeliste erstellt'; @override String get deleted => 'Wiedergabeliste gelöscht'; @override String get itemAdded => 'Zur Wiedergabeliste hinzugefügt'; @override String get itemRemoved => 'Aus Wiedergabeliste entfernt'; @override String get selectPlaylist => 'Wiedergabeliste auswählen'; @override String get createNewPlaylist => 'Neue Wiedergabeliste erstellen'; @override String get errorCreating => 'Wiedergabeliste konnte nicht erstellt werden'; @override String get errorDeleting => 'Wiedergabeliste konnte nicht gelöscht werden'; @override String get errorLoading => 'Wiedergabelisten konnten nicht geladen werden'; @override String get errorAdding => 'Konnte nicht zur Wiedergabeliste hinzugefügt werden'; @override String get errorReordering => 'Element der Wiedergabeliste konnte nicht neu geordnet werden'; @override String get errorRemoving => 'Konnte nicht aus der Wiedergabeliste entfernt werden'; @override String get playlist => 'Wiedergabeliste'; } // Path: collections class _StringsCollectionsDe implements _StringsCollectionsEn { _StringsCollectionsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get title => 'Sammlungen'; @override String get collection => 'Sammlung'; @override String get empty => 'Sammlung ist leer'; @override String get unknownLibrarySection => 'Löschen nicht möglich: Unbekannte Bibliothekssektion'; @override String get deleteCollection => 'Sammlung löschen'; @override String deleteConfirm({required Object title}) => 'Sind Sie sicher, dass Sie "${title}" löschen möchten? Dies kann nicht rückgängig gemacht werden.'; @override String get deleted => 'Sammlung gelöscht'; @override String get deleteFailed => 'Sammlung konnte nicht gelöscht werden'; @override String deleteFailedWithError({required Object error}) => 'Sammlung konnte nicht gelöscht werden: ${error}'; @override String failedToLoadItems({required Object error}) => 'Sammlungselemente konnten nicht geladen werden: ${error}'; @override String get selectCollection => 'Sammlung auswählen'; @override String get createNewCollection => 'Neue Sammlung erstellen'; @override String get collectionName => 'Sammlungsname'; @override String get enterCollectionName => 'Sammlungsnamen eingeben'; @override String get addedToCollection => 'Zur Sammlung hinzugefügt'; @override String get errorAddingToCollection => 'Fehler beim Hinzufügen zur Sammlung'; @override String get created => 'Sammlung erstellt'; @override String get removeFromCollection => 'Aus Sammlung entfernen'; @override String removeFromCollectionConfirm({required Object title}) => '"${title}" aus dieser Sammlung entfernen?'; @override String get removedFromCollection => 'Aus Sammlung entfernt'; @override String get removeFromCollectionFailed => 'Entfernen aus Sammlung fehlgeschlagen'; @override String removeFromCollectionError({required Object error}) => 'Fehler beim Entfernen aus der Sammlung: ${error}'; } // Path: libraries.tabs class _StringsLibrariesTabsDe implements _StringsLibrariesTabsEn { _StringsLibrariesTabsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get recommended => 'Empfohlen'; @override String get browse => 'Durchsuchen'; @override String get collections => 'Sammlungen'; @override String get playlists => 'Wiedergabelisten'; } // Path: libraries.groupings class _StringsLibrariesGroupingsDe implements _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsDe._(this._root); @override final _StringsDe _root; // ignore: unused_field // Translations @override String get all => 'Alle'; @override String get movies => 'Filme'; @override String get shows => 'Serien'; @override String get seasons => 'Staffeln'; @override String get episodes => 'Episoden'; @override String get folders => 'Ordner'; } // Path: class _StringsIt implements Translations { /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. _StringsIt.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = TranslationMetadata( locale: AppLocale.it, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsIt _root = this; // ignore: unused_field // Translations @override late final _StringsAppIt app = _StringsAppIt._(_root); @override late final _StringsAuthIt auth = _StringsAuthIt._(_root); @override late final _StringsCommonIt common = _StringsCommonIt._(_root); @override late final _StringsScreensIt screens = _StringsScreensIt._(_root); @override late final _StringsUpdateIt update = _StringsUpdateIt._(_root); @override late final _StringsSettingsIt settings = _StringsSettingsIt._(_root); @override late final _StringsSearchIt search = _StringsSearchIt._(_root); @override late final _StringsHotkeysIt hotkeys = _StringsHotkeysIt._(_root); @override late final _StringsPinEntryIt pinEntry = _StringsPinEntryIt._(_root); @override late final _StringsFileInfoIt fileInfo = _StringsFileInfoIt._(_root); @override late final _StringsMediaMenuIt mediaMenu = _StringsMediaMenuIt._(_root); @override late final _StringsAccessibilityIt accessibility = _StringsAccessibilityIt._(_root); @override late final _StringsTooltipsIt tooltips = _StringsTooltipsIt._(_root); @override late final _StringsVideoControlsIt videoControls = _StringsVideoControlsIt._(_root); @override late final _StringsUserStatusIt userStatus = _StringsUserStatusIt._(_root); @override late final _StringsMessagesIt messages = _StringsMessagesIt._(_root); @override late final _StringsSubtitlingStylingIt subtitlingStyling = _StringsSubtitlingStylingIt._(_root); @override late final _StringsDialogIt dialog = _StringsDialogIt._(_root); @override late final _StringsDiscoverIt discover = _StringsDiscoverIt._(_root); @override late final _StringsErrorsIt errors = _StringsErrorsIt._(_root); @override late final _StringsLibrariesIt libraries = _StringsLibrariesIt._(_root); @override late final _StringsAboutIt about = _StringsAboutIt._(_root); @override late final _StringsServerSelectionIt serverSelection = _StringsServerSelectionIt._(_root); @override late final _StringsHubDetailIt hubDetail = _StringsHubDetailIt._(_root); @override late final _StringsLogsIt logs = _StringsLogsIt._(_root); @override late final _StringsLicensesIt licenses = _StringsLicensesIt._(_root); @override late final _StringsNavigationIt navigation = _StringsNavigationIt._(_root); @override late final _StringsDownloadsIt downloads = _StringsDownloadsIt._(_root); @override late final _StringsPlaylistsIt playlists = _StringsPlaylistsIt._(_root); @override late final _StringsCollectionsIt collections = _StringsCollectionsIt._(_root); } // Path: app class _StringsAppIt implements _StringsAppEn { _StringsAppIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Plezy'; @override String get loading => 'Caricamento...'; } // Path: auth class _StringsAuthIt implements _StringsAuthEn { _StringsAuthIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get signInWithPlex => 'Accedi con Plex'; @override String get showQRCode => 'Mostra QR Code'; @override String get cancel => 'Cancella'; @override String get authenticate => 'Autenticazione'; @override String get retry => 'Riprova'; @override String get debugEnterToken => 'Debug: Inserisci Token Plex'; @override String get plexTokenLabel => 'Token Auth Plex'; @override String get plexTokenHint => 'Inserisci il tuo token di Plex.tv'; @override String get authenticationTimeout => 'Autenticazione scaduta. Riprova.'; @override String get scanQRCodeInstruction => 'Scansiona questo QR code con un dispositivo connesso a Plex per autenticarti.'; @override String get waitingForAuth => 'In attesa di autenticazione...\nCompleta l\'accesso dal tuo browser.'; } // Path: common class _StringsCommonIt implements _StringsCommonEn { _StringsCommonIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get cancel => 'Cancella'; @override String get save => 'Salva'; @override String get close => 'Chiudi'; @override String get clear => 'Pulisci'; @override String get reset => 'Ripristina'; @override String get later => 'Più tardi'; @override String get submit => 'Invia'; @override String get confirm => 'Conferma'; @override String get retry => 'Riprova'; @override String get logout => 'Disconnetti'; @override String get unknown => 'Sconosciuto'; @override String get refresh => 'Aggiorna'; @override String get yes => 'Sì'; @override String get no => 'No'; @override String get delete => 'Elimina'; @override String get shuffle => 'Casuale'; @override String get addTo => 'Aggiungi a...'; } // Path: screens class _StringsScreensIt implements _StringsScreensEn { _StringsScreensIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get licenses => 'Licenze'; @override String get selectServer => 'Seleziona server'; @override String get switchProfile => 'Cambia profilo'; @override String get subtitleStyling => 'Stile sottotitoli'; @override String get search => 'Cerca'; @override String get logs => 'Registro'; } // Path: update class _StringsUpdateIt implements _StringsUpdateEn { _StringsUpdateIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get available => 'Aggiornamento disponibile'; @override String versionAvailable({required Object version}) => 'Versione ${version} disponibile'; @override String currentVersion({required Object version}) => 'Corrente: ${version}'; @override String get skipVersion => 'Salta questa versione'; @override String get viewRelease => 'Visualizza dettagli release'; @override String get latestVersion => 'La versione installata è l\'ultima disponibile'; @override String get checkFailed => 'Impossibile controllare gli aggiornamenti'; } // Path: settings class _StringsSettingsIt implements _StringsSettingsEn { _StringsSettingsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Impostazioni'; @override String get language => 'Lingua'; @override String get theme => 'Tema'; @override String get appearance => 'Aspetto'; @override String get videoPlayback => 'Riproduzione video'; @override String get advanced => 'Avanzate'; @override String get useSeasonPostersDescription => 'Mostra il poster della stagione invece del poster della serie per gli episodi'; @override String get showHeroSectionDescription => 'Visualizza il carosello dei contenuti in primo piano sulla schermata iniziale'; @override String get secondsLabel => 'Secondi'; @override String get minutesLabel => 'Minuti'; @override String get secondsShort => 's'; @override String get minutesShort => 'm'; @override String durationHint({required Object min, required Object max}) => 'Inserisci durata (${min}-${max})'; @override String get systemTheme => 'Sistema'; @override String get systemThemeDescription => 'Segui le impostazioni di sistema'; @override String get lightTheme => 'Chiaro'; @override String get darkTheme => 'Scuro'; @override String get libraryDensity => 'Densità libreria'; @override String get compact => 'Compatta'; @override String get compactDescription => 'Schede più piccole, più elementi visibili'; @override String get normal => 'Normale'; @override String get normalDescription => 'Dimensione predefinita'; @override String get comfortable => 'Comoda'; @override String get comfortableDescription => 'Schede più grandi, meno elementi visibili'; @override String get viewMode => 'Modalità di visualizzazione'; @override String get gridView => 'Griglia'; @override String get gridViewDescription => 'Visualizza gli elementi in un layout a griglia'; @override String get listView => 'Elenco'; @override String get listViewDescription => 'Visualizza gli elementi in un layout a elenco'; @override String get useSeasonPosters => 'Usa poster delle stagioni'; @override String get showHeroSection => 'Mostra sezione principale'; @override String get hardwareDecoding => 'Decodifica Hardware'; @override String get hardwareDecodingDescription => 'Utilizza l\'accelerazione hardware quando disponibile'; @override String get bufferSize => 'Dimensione buffer'; @override String bufferSizeMB({required Object size}) => '${size}MB'; @override String get subtitleStyling => 'Stile sottotitoli'; @override String get subtitleStylingDescription => 'Personalizza l\'aspetto dei sottotitoli'; @override String get smallSkipDuration => 'Durata skip breve'; @override String get largeSkipDuration => 'Durata skip lungo'; @override String secondsUnit({required Object seconds}) => '${seconds} secondi'; @override String get defaultSleepTimer => 'Timer spegnimento predefinito'; @override String minutesUnit({required Object minutes}) => '${minutes} minuti'; @override String get rememberTrackSelections => 'Ricorda selezioni tracce per serie/film'; @override String get rememberTrackSelectionsDescription => 'Salva automaticamente le preferenze delle lingue audio e sottotitoli quando cambi tracce durante la riproduzione'; @override String get videoPlayerControls => 'Controlli del lettore video'; @override String get keyboardShortcuts => 'Scorciatoie da tastiera'; @override String get keyboardShortcutsDescription => 'Personalizza le scorciatoie da tastiera'; @override String get videoPlayerNavigation => 'Navigazione del lettore video'; @override String get videoPlayerNavigationDescription => 'Usa i tasti freccia per navigare nei controlli del lettore video'; @override String get debugLogging => 'Log di debug'; @override String get debugLoggingDescription => 'Abilita il logging dettagliato per la risoluzione dei problemi'; @override String get viewLogs => 'Visualizza log'; @override String get viewLogsDescription => 'Visualizza i log dell\'applicazione'; @override String get clearCache => 'Svuota cache'; @override String get clearCacheDescription => 'Questa opzione cancellerà tutte le immagini e i dati memorizzati nella cache. Dopo aver cancellato la cache, l\'app potrebbe impiegare più tempo per caricare i contenuti.'; @override String get clearCacheSuccess => 'Cache cancellata correttamente'; @override String get resetSettings => 'Ripristina impostazioni'; @override String get resetSettingsDescription => 'Questa opzione ripristinerà tutte le impostazioni ai valori predefiniti. Non può essere annullata.'; @override String get resetSettingsSuccess => 'Impostazioni ripristinate correttamente'; @override String get shortcutsReset => 'Scorciatoie ripristinate alle impostazioni predefinite'; @override String get about => 'Informazioni'; @override String get aboutDescription => 'Informazioni sull\'app e le licenze'; @override String get updates => 'Aggiornamenti'; @override String get updateAvailable => 'Aggiornamento disponibile'; @override String get checkForUpdates => 'Controlla aggiornamenti'; @override String get validationErrorEnterNumber => 'Inserisci un numero valido'; @override String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'la durata deve essere compresa tra ${min} e ${max} ${unit}'; @override String shortcutAlreadyAssigned({required Object action}) => 'Scorciatoia già assegnata a ${action}'; @override String shortcutUpdated({required Object action}) => 'Scorciatoia aggiornata per ${action}'; @override String get autoSkip => 'Salto Automatico'; @override String get autoSkipIntro => 'Salta Intro Automaticamente'; @override String get autoSkipIntroDescription => 'Salta automaticamente i marcatori dell\'intro dopo alcuni secondi'; @override String get autoSkipCredits => 'Salta Crediti Automaticamente'; @override String get autoSkipCreditsDescription => 'Salta automaticamente i crediti e riproduci l\'episodio successivo'; @override String get autoSkipDelay => 'Ritardo Salto Automatico'; @override String autoSkipDelayDescription({required Object seconds}) => 'Aspetta ${seconds} secondi prima del salto automatico'; @override String get downloads => 'Download'; @override String get downloadLocationDescription => 'Scegli dove salvare i contenuti scaricati'; @override String get downloadLocationDefault => 'Predefinita (Archiviazione App)'; @override String get downloadLocationCustom => 'Posizione Personalizzata'; @override String get selectFolder => 'Seleziona Cartella'; @override String get resetToDefault => 'Ripristina Predefinita'; @override String currentPath({required Object path}) => 'Corrente: ${path}'; @override String get downloadLocationChanged => 'Posizione di download modificata'; @override String get downloadLocationReset => 'Posizione di download ripristinata a predefinita'; @override String get downloadLocationInvalid => 'La cartella selezionata non è scrivibile'; @override String get downloadLocationSelectError => 'Impossibile selezionare la cartella'; @override String get downloadOnWifiOnly => 'Scarica solo con WiFi'; @override String get downloadOnWifiOnlyDescription => 'Impedisci i download quando si utilizza la rete dati cellulare'; @override String get cellularDownloadBlocked => 'I download sono disabilitati sulla rete dati cellulare. Connettiti al WiFi o modifica l\'impostazione.'; } // Path: search class _StringsSearchIt implements _StringsSearchEn { _StringsSearchIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get hint => 'Cerca film. spettacoli, musica...'; @override String get tryDifferentTerm => 'Prova altri termini di ricerca'; @override String get searchYourMedia => 'Cerca nei tuoi media'; @override String get enterTitleActorOrKeyword => 'Inserisci un titolo, attore o parola chiave'; } // Path: hotkeys class _StringsHotkeysIt implements _StringsHotkeysEn { _StringsHotkeysIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String setShortcutFor({required Object actionName}) => 'Imposta scorciatoia per ${actionName}'; @override String get clearShortcut => 'Elimina scorciatoia'; } // Path: pinEntry class _StringsPinEntryIt implements _StringsPinEntryEn { _StringsPinEntryIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get enterPin => 'Inserisci PIN'; @override String get showPin => 'Mostra PIN'; @override String get hidePin => 'Nascondi PIN'; } // Path: fileInfo class _StringsFileInfoIt implements _StringsFileInfoEn { _StringsFileInfoIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Info sul file'; @override String get video => 'Video'; @override String get audio => 'Audio'; @override String get file => 'File'; @override String get advanced => 'Avanzate'; @override String get codec => 'Codec'; @override String get resolution => 'Risoluzione'; @override String get bitrate => 'Bitrate'; @override String get frameRate => 'Frame Rate'; @override String get aspectRatio => 'Aspect Ratio'; @override String get profile => 'Profilo'; @override String get bitDepth => 'Profondità colore'; @override String get colorSpace => 'Spazio colore'; @override String get colorRange => 'Gamma colori'; @override String get colorPrimaries => 'Colori primari'; @override String get chromaSubsampling => 'Sottocampionamento cromatico'; @override String get channels => 'Canali'; @override String get path => 'Percorso'; @override String get size => 'Dimensione'; @override String get container => 'Contenitore'; @override String get duration => 'Durata'; @override String get optimizedForStreaming => 'Ottimizzato per lo streaming'; @override String get has64bitOffsets => 'Offset a 64-bit'; } // Path: mediaMenu class _StringsMediaMenuIt implements _StringsMediaMenuEn { _StringsMediaMenuIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get markAsWatched => 'Segna come visto'; @override String get markAsUnwatched => 'Segna come non visto'; @override String get removeFromContinueWatching => 'Rimuovi da Continua a guardare'; @override String get goToSeries => 'Vai alle serie'; @override String get goToSeason => 'Vai alla stagione'; @override String get shufflePlay => 'Riproduzione casuale'; @override String get fileInfo => 'Info sul file'; } // Path: accessibility class _StringsAccessibilityIt implements _StringsAccessibilityEn { _StringsAccessibilityIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String mediaCardMovie({required Object title}) => '${title}, film'; @override String mediaCardShow({required Object title}) => '${title}, serie TV'; @override String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; @override String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; @override String get mediaCardWatched => 'visto'; @override String mediaCardPartiallyWatched({required Object percent}) => '${percent} percento visto'; @override String get mediaCardUnwatched => 'non visto'; @override String get tapToPlay => 'Tocca per riprodurre'; } // Path: tooltips class _StringsTooltipsIt implements _StringsTooltipsEn { _StringsTooltipsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get shufflePlay => 'Riproduzione casuale'; @override String get markAsWatched => 'Segna come visto'; @override String get markAsUnwatched => 'Segna come non visto'; } // Path: videoControls class _StringsVideoControlsIt implements _StringsVideoControlsEn { _StringsVideoControlsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get audioLabel => 'Audio'; @override String get subtitlesLabel => 'Sottotitoli'; @override String get resetToZero => 'Riporta a 0ms'; @override String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; @override String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; @override String playsLater({required Object label}) => '${label} riprodotto dopo'; @override String playsEarlier({required Object label}) => '${label} riprodotto prima'; @override String get noOffset => 'Nessun offset'; @override String get letterbox => 'Letterbox'; @override String get fillScreen => 'Riempi schermo'; @override String get stretch => 'Allunga'; @override String get lockRotation => 'Blocca rotazione'; @override String get unlockRotation => 'Sblocca rotazione'; @override String get sleepTimer => 'Timer di spegnimento'; @override String get timerActive => 'Timer attivo'; @override String playbackWillPauseIn({required Object duration}) => 'La riproduzione si interromperà tra ${duration}'; @override String get sleepTimerCompleted => 'Timer di spegnimento completato - riproduzione in pausa'; @override String get playButton => 'Riproduci'; @override String get pauseButton => 'Pausa'; @override String seekBackwardButton({required Object seconds}) => 'Riavvolgi di ${seconds} secondi'; @override String seekForwardButton({required Object seconds}) => 'Avanza di ${seconds} secondi'; @override String get previousButton => 'Episodio precedente'; @override String get nextButton => 'Episodio successivo'; @override String get previousChapterButton => 'Capitolo precedente'; @override String get nextChapterButton => 'Capitolo successivo'; @override String get muteButton => 'Silenzia'; @override String get unmuteButton => 'Riattiva audio'; @override String get settingsButton => 'Impostazioni video'; @override String get audioTrackButton => 'Tracce audio'; @override String get subtitlesButton => 'Sottotitoli'; @override String get chaptersButton => 'Capitoli'; @override String get versionsButton => 'Versioni video'; @override String get aspectRatioButton => 'Proporzioni'; @override String get fullscreenButton => 'Attiva schermo intero'; @override String get exitFullscreenButton => 'Esci da schermo intero'; @override String get rotationLockButton => 'Blocco rotazione'; @override String get timelineSlider => 'Timeline video'; @override String get volumeSlider => 'Livello volume'; @override String get backButton => 'Indietro'; } // Path: userStatus class _StringsUserStatusIt implements _StringsUserStatusEn { _StringsUserStatusIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get admin => 'Admin'; @override String get restricted => 'Limitato'; @override String get protected => 'Protetto'; @override String get current => 'ATTUALE'; } // Path: messages class _StringsMessagesIt implements _StringsMessagesEn { _StringsMessagesIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get markedAsWatched => 'Segna come visto'; @override String get markedAsUnwatched => 'Segna come non visto'; @override String get markedAsWatchedOffline => 'Segnato come visto (sincronizzato online)'; @override String get markedAsUnwatchedOffline => 'Segnato come non visto (sincronizzato online)'; @override String get removedFromContinueWatching => 'Rimosso da Continua a guardare'; @override String errorLoading({required Object error}) => 'Errore: ${error}'; @override String get fileInfoNotAvailable => 'Informazioni sul file non disponibili'; @override String errorLoadingFileInfo({required Object error}) => 'Errore caricamento informazioni sul file: ${error}'; @override String get errorLoadingSeries => 'Errore caricamento serie'; @override String get errorLoadingSeason => 'Errore caricamento stagione'; @override String get musicNotSupported => 'La riproduzione musicale non è ancora supportata'; @override String get logsCleared => 'Log eliminati'; @override String get logsCopied => 'Log copiati negli appunti'; @override String get noLogsAvailable => 'Nessun log disponibile'; @override String libraryScanning({required Object title}) => 'Scansione "${title}"...'; @override String libraryScanStarted({required Object title}) => 'Scansione libreria iniziata per "${title}"'; @override String libraryScanFailed({required Object error}) => 'Impossibile eseguire scansione della libreria: ${error}'; @override String metadataRefreshing({required Object title}) => 'Aggiornamento metadati per "${title}"...'; @override String metadataRefreshStarted({required Object title}) => 'Aggiornamento metadati per "${title}"'; @override String metadataRefreshFailed({required Object error}) => 'Errore aggiornamento metadati: ${error}'; @override String get logoutConfirm => 'Sei sicuro di volerti disconnettere?'; @override String get noSeasonsFound => 'Nessuna stagione trovata'; @override String get noEpisodesFound => 'Nessun episodio trovato nella prima stagione'; @override String get noEpisodesFoundGeneral => 'Nessun episodio trovato'; @override String get noResultsFound => 'Nessun risultato'; @override String sleepTimerSet({required Object label}) => 'Imposta timer spegnimento per ${label}'; @override String get noItemsAvailable => 'Nessun elemento disponibile'; @override String get failedToCreatePlayQueue => 'Impossibile creare la coda di riproduzione'; @override String get failedToCreatePlayQueueNoItems => 'Impossibile creare la coda di riproduzione - nessun elemento'; @override String failedPlayback({required Object action, required Object error}) => 'Impossibile ${action}: ${error}'; @override String get youAreOffline => 'Sei offline'; @override String get offlineFeatureUnavailable => 'Questa funzione richiede una connessione internet. I tuoi download e le impostazioni sono ancora disponibili.'; } // Path: subtitlingStyling class _StringsSubtitlingStylingIt implements _StringsSubtitlingStylingEn { _StringsSubtitlingStylingIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get stylingOptions => 'Opzioni stile'; @override String get fontSize => 'Dimensione'; @override String get textColor => 'Colore testo'; @override String get borderSize => 'Dimensione bordo'; @override String get borderColor => 'Colore bordo'; @override String get backgroundOpacity => 'Opacità sfondo'; @override String get backgroundColor => 'Colore sfondo'; } // Path: dialog class _StringsDialogIt implements _StringsDialogEn { _StringsDialogIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get confirmAction => 'Conferma azione'; @override String get cancel => 'Cancella'; @override String get playNow => 'Riproduci ora'; } // Path: discover class _StringsDiscoverIt implements _StringsDiscoverEn { _StringsDiscoverIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Esplora'; @override String get switchProfile => 'Cambia profilo'; @override String get switchServer => 'Cambia server'; @override String get logout => 'Disconnetti'; @override String get noContentAvailable => 'Nessun contenuto disponibile'; @override String get addMediaToLibraries => 'Aggiungi alcuni file multimediali alle tue librerie'; @override String get continueWatching => 'Continua a guardare'; @override String get play => 'Riproduci'; @override String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; @override String get pause => 'Pausa'; @override String get overview => 'Panoramica'; @override String get cast => 'Attori'; @override String get seasons => 'Stagioni'; @override String get studio => 'Studio'; @override String get rating => 'Classificazione'; @override String get watched => 'Guardato'; @override String episodeCount({required Object count}) => '${count} episodi'; @override String watchedProgress({required Object watched, required Object total}) => '${watched}/${total} guardati'; @override String get movie => 'Film'; @override String get tvShow => 'Serie TV'; @override String minutesLeft({required Object minutes}) => '${minutes} minuti rimanenti'; } // Path: errors class _StringsErrorsIt implements _StringsErrorsEn { _StringsErrorsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String searchFailed({required Object error}) => 'Ricerca fallita: ${error}'; @override String connectionTimeout({required Object context}) => 'Timeout connessione durante caricamento di ${context}'; @override String get connectionFailed => 'Impossibile connettersi al server Plex.'; @override String failedToLoad({required Object context, required Object error}) => 'Impossibile caricare ${context}: ${error}'; @override String get noClientAvailable => 'Nessun client disponibile'; @override String authenticationFailed({required Object error}) => 'Autenticazione fallita: ${error}'; @override String get couldNotLaunchUrl => 'Impossibile avviare URL di autenticazione'; @override String get pleaseEnterToken => 'Inserisci token'; @override String get invalidToken => 'Token non valido'; @override String failedToVerifyToken({required Object error}) => 'Verifica token fallita: ${error}'; @override String failedToSwitchProfile({required Object displayName}) => 'Impossibile passare a ${displayName}'; } // Path: libraries class _StringsLibrariesIt implements _StringsLibrariesEn { _StringsLibrariesIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Librerie'; @override String get scanLibraryFiles => 'Scansiona file libreria'; @override String get scanLibrary => 'Scansiona libreria'; @override String get analyze => 'Analizza'; @override String get analyzeLibrary => 'Analizza libreria'; @override String get refreshMetadata => 'Aggiorna metadati'; @override String get emptyTrash => 'Svuota cestino'; @override String emptyingTrash({required Object title}) => 'Svuotamento cestino per "${title}"...'; @override String trashEmptied({required Object title}) => 'Cestino svuotato per "${title}"'; @override String failedToEmptyTrash({required Object error}) => 'Impossibile svuotare cestino: ${error}'; @override String analyzing({required Object title}) => 'Analisi "${title}"...'; @override String analysisStarted({required Object title}) => 'Analisi iniziata per "${title}"'; @override String failedToAnalyze({required Object error}) => 'Impossibile analizzare libreria: ${error}'; @override String get noLibrariesFound => 'Nessuna libreria trovata'; @override String get thisLibraryIsEmpty => 'Questa libreria è vuota'; @override String get all => 'Tutto'; @override String get clearAll => 'Cancella tutto'; @override String scanLibraryConfirm({required Object title}) => 'Sei sicuro di voler scansionare "${title}"?'; @override String analyzeLibraryConfirm({required Object title}) => 'Sei sicuro di voler analizzare "${title}"?'; @override String refreshMetadataConfirm({required Object title}) => 'Sei sicuro di voler aggiornare i metadati per "${title}"?'; @override String emptyTrashConfirm({required Object title}) => 'Sei sicuro di voler svuotare il cestino per "${title}"?'; @override String get manageLibraries => 'Gestisci librerie'; @override String get sort => 'Ordina'; @override String get sortBy => 'Ordina per'; @override String get filters => 'Filtri'; @override String get confirmActionMessage => 'Sei sicuro di voler eseguire questa azione?'; @override String get showLibrary => 'Mostra libreria'; @override String get hideLibrary => 'Nascondi libreria'; @override String get libraryOptions => 'Opzioni libreria'; @override String get content => 'contenuto della libreria'; @override String get selectLibrary => 'Seleziona libreria'; @override String filtersWithCount({required Object count}) => 'Filtri (${count})'; @override String get noRecommendations => 'Nessun consiglio disponibile'; @override String get noCollections => 'Nessuna raccolta in questa libreria'; @override String get noFoldersFound => 'Nessuna cartella trovata'; @override String get folders => 'cartelle'; @override late final _StringsLibrariesTabsIt tabs = _StringsLibrariesTabsIt._(_root); @override late final _StringsLibrariesGroupingsIt groupings = _StringsLibrariesGroupingsIt._(_root); } // Path: about class _StringsAboutIt implements _StringsAboutEn { _StringsAboutIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Informazioni'; @override String get openSourceLicenses => 'Licenze Open Source'; @override String versionLabel({required Object version}) => 'Versione ${version}'; @override String get appDescription => 'Un bellissimo client Plex per Flutter'; @override String get viewLicensesDescription => 'Visualizza le licenze delle librerie di terze parti'; } // Path: serverSelection class _StringsServerSelectionIt implements _StringsServerSelectionEn { _StringsServerSelectionIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get allServerConnectionsFailed => 'Impossibile connettersi a nessun server. Controlla la tua rete e riprova.'; @override String get noServersFound => 'Nessun server trovato'; @override String noServersFoundForAccount({required Object username, required Object email}) => 'Nessun server trovato per ${username} (${email})'; @override String failedToLoadServers({required Object error}) => 'Impossibile caricare i server: ${error}'; } // Path: hubDetail class _StringsHubDetailIt implements _StringsHubDetailEn { _StringsHubDetailIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Titolo'; @override String get releaseYear => 'Anno rilascio'; @override String get dateAdded => 'Data aggiunta'; @override String get rating => 'Valutazione'; @override String get noItemsFound => 'Nessun elemento trovato'; } // Path: logs class _StringsLogsIt implements _StringsLogsEn { _StringsLogsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get clearLogs => 'Cancella log'; @override String get copyLogs => 'Copia log'; @override String get error => 'Errore:'; @override String get stackTrace => 'Traccia dello stack:'; } // Path: licenses class _StringsLicensesIt implements _StringsLicensesEn { _StringsLicensesIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get relatedPackages => 'Pacchetti correlati'; @override String get license => 'Licenza'; @override String licenseNumber({required Object number}) => 'Licenza ${number}'; @override String licensesCount({required Object count}) => '${count} licenze'; } // Path: navigation class _StringsNavigationIt implements _StringsNavigationEn { _StringsNavigationIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get home => 'Home'; @override String get search => 'Cerca'; @override String get libraries => 'Librerie'; @override String get settings => 'Impostazioni'; @override String get downloads => 'Download'; } // Path: downloads class _StringsDownloadsIt implements _StringsDownloadsEn { _StringsDownloadsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Download'; @override String get manage => 'Gestisci'; @override String get tvShows => 'Serie TV'; @override String get movies => 'Film'; @override String get noDownloads => 'Nessun download'; @override String get noDownloadsDescription => 'I contenuti scaricati appariranno qui per la visualizzazione offline'; @override String get downloadNow => 'Scarica'; @override String get deleteDownload => 'Elimina download'; @override String get retryDownload => 'Riprova download'; @override String get downloadQueued => 'Download in coda'; @override String episodesQueued({required Object count}) => '${count} episodi in coda per il download'; @override String get downloadDeleted => 'Download eliminato'; @override String deleteConfirm({required Object title}) => 'Sei sicuro di voler eliminare "${title}"? Il file scaricato verrà rimosso dal tuo dispositivo.'; @override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Eliminazione di ${title}... (${current} di ${total})'; } // Path: playlists class _StringsPlaylistsIt implements _StringsPlaylistsEn { _StringsPlaylistsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Playlist'; @override String get noPlaylists => 'Nessuna playlist trovata'; @override String get create => 'Crea playlist'; @override String get playlistName => 'Nome playlist'; @override String get enterPlaylistName => 'Inserisci nome playlist'; @override String get delete => 'Elimina playlist'; @override String get removeItem => 'Rimuovi da playlist'; @override String get smartPlaylist => 'Playlist intelligente'; @override String itemCount({required Object count}) => '${count} elementi'; @override String get oneItem => '1 elemento'; @override String get emptyPlaylist => 'Questa playlist è vuota'; @override String get deleteConfirm => 'Eliminare playlist?'; @override String deleteMessage({required Object name}) => 'Sei sicuro di voler eliminare "${name}"?'; @override String get created => 'Playlist creata'; @override String get deleted => 'Playlist eliminata'; @override String get itemAdded => 'Aggiunto alla playlist'; @override String get itemRemoved => 'Rimosso dalla playlist'; @override String get selectPlaylist => 'Seleziona playlist'; @override String get createNewPlaylist => 'Crea nuova playlist'; @override String get errorCreating => 'Errore durante la creazione della playlist'; @override String get errorDeleting => 'Errore durante l\'eliminazione della playlist'; @override String get errorLoading => 'Errore durante il caricamento delle playlist'; @override String get errorAdding => 'Errore durante l\'aggiunta alla playlist'; @override String get errorReordering => 'Errore durante il riordino dell\'elemento della playlist'; @override String get errorRemoving => 'Errore durante la rimozione dalla playlist'; @override String get playlist => 'Playlist'; } // Path: collections class _StringsCollectionsIt implements _StringsCollectionsEn { _StringsCollectionsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get title => 'Raccolte'; @override String get collection => 'Raccolta'; @override String get empty => 'La raccolta è vuota'; @override String get unknownLibrarySection => 'Impossibile eliminare: sezione libreria sconosciuta'; @override String get deleteCollection => 'Elimina raccolta'; @override String deleteConfirm({required Object title}) => 'Sei sicuro di voler eliminare "${title}"? Questa azione non può essere annullata.'; @override String get deleted => 'Raccolta eliminata'; @override String get deleteFailed => 'Impossibile eliminare la raccolta'; @override String deleteFailedWithError({required Object error}) => 'Impossibile eliminare la raccolta: ${error}'; @override String failedToLoadItems({required Object error}) => 'Impossibile caricare gli elementi della raccolta: ${error}'; @override String get selectCollection => 'Seleziona raccolta'; @override String get createNewCollection => 'Crea nuova raccolta'; @override String get collectionName => 'Nome raccolta'; @override String get enterCollectionName => 'Inserisci nome raccolta'; @override String get addedToCollection => 'Aggiunto alla raccolta'; @override String get errorAddingToCollection => 'Errore nell\'aggiunta alla raccolta'; @override String get created => 'Raccolta creata'; @override String get removeFromCollection => 'Rimuovi dalla raccolta'; @override String removeFromCollectionConfirm({required Object title}) => 'Rimuovere "${title}" da questa raccolta?'; @override String get removedFromCollection => 'Rimosso dalla raccolta'; @override String get removeFromCollectionFailed => 'Impossibile rimuovere dalla raccolta'; @override String removeFromCollectionError({required Object error}) => 'Errore durante la rimozione dalla raccolta: ${error}'; } // Path: libraries.tabs class _StringsLibrariesTabsIt implements _StringsLibrariesTabsEn { _StringsLibrariesTabsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get recommended => 'Consigliati'; @override String get browse => 'Esplora'; @override String get collections => 'Raccolte'; @override String get playlists => 'Playlist'; } // Path: libraries.groupings class _StringsLibrariesGroupingsIt implements _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsIt._(this._root); @override final _StringsIt _root; // ignore: unused_field // Translations @override String get all => 'Tutti'; @override String get movies => 'Film'; @override String get shows => 'Serie TV'; @override String get seasons => 'Stagioni'; @override String get episodes => 'Episodi'; @override String get folders => 'Cartelle'; } // Path: class _StringsNl implements Translations { /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. _StringsNl.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = TranslationMetadata( locale: AppLocale.nl, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsNl _root = this; // ignore: unused_field // Translations @override late final _StringsAppNl app = _StringsAppNl._(_root); @override late final _StringsAuthNl auth = _StringsAuthNl._(_root); @override late final _StringsCommonNl common = _StringsCommonNl._(_root); @override late final _StringsScreensNl screens = _StringsScreensNl._(_root); @override late final _StringsUpdateNl update = _StringsUpdateNl._(_root); @override late final _StringsSettingsNl settings = _StringsSettingsNl._(_root); @override late final _StringsSearchNl search = _StringsSearchNl._(_root); @override late final _StringsHotkeysNl hotkeys = _StringsHotkeysNl._(_root); @override late final _StringsPinEntryNl pinEntry = _StringsPinEntryNl._(_root); @override late final _StringsFileInfoNl fileInfo = _StringsFileInfoNl._(_root); @override late final _StringsMediaMenuNl mediaMenu = _StringsMediaMenuNl._(_root); @override late final _StringsAccessibilityNl accessibility = _StringsAccessibilityNl._(_root); @override late final _StringsTooltipsNl tooltips = _StringsTooltipsNl._(_root); @override late final _StringsVideoControlsNl videoControls = _StringsVideoControlsNl._(_root); @override late final _StringsUserStatusNl userStatus = _StringsUserStatusNl._(_root); @override late final _StringsMessagesNl messages = _StringsMessagesNl._(_root); @override late final _StringsSubtitlingStylingNl subtitlingStyling = _StringsSubtitlingStylingNl._(_root); @override late final _StringsDialogNl dialog = _StringsDialogNl._(_root); @override late final _StringsDiscoverNl discover = _StringsDiscoverNl._(_root); @override late final _StringsErrorsNl errors = _StringsErrorsNl._(_root); @override late final _StringsLibrariesNl libraries = _StringsLibrariesNl._(_root); @override late final _StringsAboutNl about = _StringsAboutNl._(_root); @override late final _StringsServerSelectionNl serverSelection = _StringsServerSelectionNl._(_root); @override late final _StringsHubDetailNl hubDetail = _StringsHubDetailNl._(_root); @override late final _StringsLogsNl logs = _StringsLogsNl._(_root); @override late final _StringsLicensesNl licenses = _StringsLicensesNl._(_root); @override late final _StringsNavigationNl navigation = _StringsNavigationNl._(_root); @override late final _StringsDownloadsNl downloads = _StringsDownloadsNl._(_root); @override late final _StringsPlaylistsNl playlists = _StringsPlaylistsNl._(_root); @override late final _StringsCollectionsNl collections = _StringsCollectionsNl._(_root); } // Path: app class _StringsAppNl implements _StringsAppEn { _StringsAppNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Plezy'; @override String get loading => 'Laden...'; } // Path: auth class _StringsAuthNl implements _StringsAuthEn { _StringsAuthNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get signInWithPlex => 'Inloggen met Plex'; @override String get showQRCode => 'Toon QR-code'; @override String get cancel => 'Annuleren'; @override String get authenticate => 'Authenticeren'; @override String get retry => 'Opnieuw proberen'; @override String get debugEnterToken => 'Debug: Voer Plex Token in'; @override String get plexTokenLabel => 'Plex Authenticatietoken'; @override String get plexTokenHint => 'Voer je Plex.tv token in'; @override String get authenticationTimeout => 'Authenticatie verlopen. Probeer opnieuw.'; @override String get scanQRCodeInstruction => 'Scan deze QR-code met een apparaat dat is ingelogd op Plex om te authenticeren.'; @override String get waitingForAuth => 'Wachten op authenticatie...\nVoltooi het inloggen in je browser.'; } // Path: common class _StringsCommonNl implements _StringsCommonEn { _StringsCommonNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get cancel => 'Annuleren'; @override String get save => 'Opslaan'; @override String get close => 'Sluiten'; @override String get clear => 'Wissen'; @override String get reset => 'Resetten'; @override String get later => 'Later'; @override String get submit => 'Verzenden'; @override String get confirm => 'Bevestigen'; @override String get retry => 'Opnieuw proberen'; @override String get logout => 'Uitloggen'; @override String get unknown => 'Onbekend'; @override String get refresh => 'Vernieuwen'; @override String get yes => 'Ja'; @override String get no => 'Nee'; @override String get delete => 'Verwijderen'; @override String get shuffle => 'Willekeurig'; @override String get addTo => 'Toevoegen aan...'; } // Path: screens class _StringsScreensNl implements _StringsScreensEn { _StringsScreensNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get licenses => 'Licenties'; @override String get selectServer => 'Selecteer server'; @override String get switchProfile => 'Wissel van profiel'; @override String get subtitleStyling => 'Ondertitel opmaak'; @override String get search => 'Zoeken'; @override String get logs => 'Logbestanden'; } // Path: update class _StringsUpdateNl implements _StringsUpdateEn { _StringsUpdateNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get available => 'Update beschikbaar'; @override String versionAvailable({required Object version}) => 'Versie ${version} is beschikbaar'; @override String currentVersion({required Object version}) => 'Huidig: ${version}'; @override String get skipVersion => 'Deze versie overslaan'; @override String get viewRelease => 'Bekijk release'; @override String get latestVersion => 'Je hebt de nieuwste versie'; @override String get checkFailed => 'Kon niet controleren op updates'; } // Path: settings class _StringsSettingsNl implements _StringsSettingsEn { _StringsSettingsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Instellingen'; @override String get language => 'Taal'; @override String get theme => 'Thema'; @override String get appearance => 'Uiterlijk'; @override String get videoPlayback => 'Video afspelen'; @override String get advanced => 'Geavanceerd'; @override String get useSeasonPostersDescription => 'Toon seizoenposter in plaats van serieposter voor afleveringen'; @override String get showHeroSectionDescription => 'Toon uitgelichte inhoud carrousel op startscherm'; @override String get secondsLabel => 'Seconden'; @override String get minutesLabel => 'Minuten'; @override String get secondsShort => 's'; @override String get minutesShort => 'm'; @override String durationHint({required Object min, required Object max}) => 'Voer duur in (${min}-${max})'; @override String get systemTheme => 'Systeem'; @override String get systemThemeDescription => 'Volg systeeminstellingen'; @override String get lightTheme => 'Licht'; @override String get darkTheme => 'Donker'; @override String get libraryDensity => 'Bibliotheek dichtheid'; @override String get compact => 'Compact'; @override String get compactDescription => 'Kleinere kaarten, meer items zichtbaar'; @override String get normal => 'Normaal'; @override String get normalDescription => 'Standaard grootte'; @override String get comfortable => 'Comfortabel'; @override String get comfortableDescription => 'Grotere kaarten, minder items zichtbaar'; @override String get viewMode => 'Weergavemodus'; @override String get gridView => 'Raster'; @override String get gridViewDescription => 'Items weergeven in een rasterindeling'; @override String get listView => 'Lijst'; @override String get listViewDescription => 'Items weergeven in een lijstindeling'; @override String get useSeasonPosters => 'Gebruik seizoenposters'; @override String get showHeroSection => 'Toon hoofdsectie'; @override String get hardwareDecoding => 'Hardware decodering'; @override String get hardwareDecodingDescription => 'Gebruik hardware versnelling indien beschikbaar'; @override String get bufferSize => 'Buffer grootte'; @override String bufferSizeMB({required Object size}) => '${size}MB'; @override String get subtitleStyling => 'Ondertitel opmaak'; @override String get subtitleStylingDescription => 'Pas ondertitel uiterlijk aan'; @override String get smallSkipDuration => 'Korte skip duur'; @override String get largeSkipDuration => 'Lange skip duur'; @override String secondsUnit({required Object seconds}) => '${seconds} seconden'; @override String get defaultSleepTimer => 'Standaard slaap timer'; @override String minutesUnit({required Object minutes}) => 'bij ${minutes} minuten'; @override String get rememberTrackSelections => 'Onthoud track selecties per serie/film'; @override String get rememberTrackSelectionsDescription => 'Bewaar automatisch audio- en ondertiteltaalvoorkeuren wanneer je tracks wijzigt tijdens afspelen'; @override String get videoPlayerControls => 'Videospeler bediening'; @override String get keyboardShortcuts => 'Toetsenbord sneltoetsen'; @override String get keyboardShortcutsDescription => 'Pas toetsenbord sneltoetsen aan'; @override String get videoPlayerNavigation => 'Videospeler navigatie'; @override String get videoPlayerNavigationDescription => 'Gebruik pijltjestoetsen om door de videospeler bediening te navigeren'; @override String get debugLogging => 'Debug logging'; @override String get debugLoggingDescription => 'Schakel gedetailleerde logging in voor probleemoplossing'; @override String get viewLogs => 'Bekijk logs'; @override String get viewLogsDescription => 'Bekijk applicatie logs'; @override String get clearCache => 'Cache wissen'; @override String get clearCacheDescription => 'Dit wist alle gecachte afbeeldingen en gegevens. De app kan langer duren om inhoud te laden na het wissen van de cache.'; @override String get clearCacheSuccess => 'Cache succesvol gewist'; @override String get resetSettings => 'Instellingen resetten'; @override String get resetSettingsDescription => 'Dit reset alle instellingen naar hun standaard waarden. Deze actie kan niet ongedaan gemaakt worden.'; @override String get resetSettingsSuccess => 'Instellingen succesvol gereset'; @override String get shortcutsReset => 'Sneltoetsen gereset naar standaard'; @override String get about => 'Over'; @override String get aboutDescription => 'App informatie en licenties'; @override String get updates => 'Updates'; @override String get updateAvailable => 'Update beschikbaar'; @override String get checkForUpdates => 'Controleer op updates'; @override String get validationErrorEnterNumber => 'Voer een geldig nummer in'; @override String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'Duur moet tussen ${min} en ${max} ${unit} zijn'; @override String shortcutAlreadyAssigned({required Object action}) => 'Sneltoets al toegewezen aan ${action}'; @override String shortcutUpdated({required Object action}) => 'Sneltoets bijgewerkt voor ${action}'; @override String get autoSkip => 'Automatisch Overslaan'; @override String get autoSkipIntro => 'Intro Automatisch Overslaan'; @override String get autoSkipIntroDescription => 'Intro-markeringen na enkele seconden automatisch overslaan'; @override String get autoSkipCredits => 'Credits Automatisch Overslaan'; @override String get autoSkipCreditsDescription => 'Credits automatisch overslaan en volgende aflevering afspelen'; @override String get autoSkipDelay => 'Vertraging Automatisch Overslaan'; @override String autoSkipDelayDescription({required Object seconds}) => '${seconds} seconden wachten voor automatisch overslaan'; @override String get downloads => 'Downloads'; @override String get downloadLocationDescription => 'Kies waar gedownloade content wordt opgeslagen'; @override String get downloadLocationDefault => 'Standaard (App-opslag)'; @override String get downloadLocationCustom => 'Aangepaste Locatie'; @override String get selectFolder => 'Selecteer Map'; @override String get resetToDefault => 'Herstel naar Standaard'; @override String currentPath({required Object path}) => 'Huidig: ${path}'; @override String get downloadLocationChanged => 'Downloadlocatie gewijzigd'; @override String get downloadLocationReset => 'Downloadlocatie hersteld naar standaard'; @override String get downloadLocationInvalid => 'Geselecteerde map is niet beschrijfbaar'; @override String get downloadLocationSelectError => 'Kan map niet selecteren'; @override String get downloadOnWifiOnly => 'Alleen via WiFi downloaden'; @override String get downloadOnWifiOnlyDescription => 'Voorkom downloads bij gebruik van mobiele data'; @override String get cellularDownloadBlocked => 'Downloads zijn uitgeschakeld bij mobiele data. Maak verbinding met WiFi of wijzig de instelling.'; } // Path: search class _StringsSearchNl implements _StringsSearchEn { _StringsSearchNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get hint => 'Zoek films, series, muziek...'; @override String get tryDifferentTerm => 'Probeer een andere zoekterm'; @override String get searchYourMedia => 'Zoek in je media'; @override String get enterTitleActorOrKeyword => 'Voer een titel, acteur of trefwoord in'; } // Path: hotkeys class _StringsHotkeysNl implements _StringsHotkeysEn { _StringsHotkeysNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String setShortcutFor({required Object actionName}) => 'Stel sneltoets in voor ${actionName}'; @override String get clearShortcut => 'Wis sneltoets'; } // Path: pinEntry class _StringsPinEntryNl implements _StringsPinEntryEn { _StringsPinEntryNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get enterPin => 'Voer PIN in'; @override String get showPin => 'Toon PIN'; @override String get hidePin => 'Verberg PIN'; } // Path: fileInfo class _StringsFileInfoNl implements _StringsFileInfoEn { _StringsFileInfoNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Bestand info'; @override String get video => 'Video'; @override String get audio => 'Audio'; @override String get file => 'Bestand'; @override String get advanced => 'Geavanceerd'; @override String get codec => 'Codec'; @override String get resolution => 'Resolutie'; @override String get bitrate => 'Bitrate'; @override String get frameRate => 'Frame rate'; @override String get aspectRatio => 'Beeldverhouding'; @override String get profile => 'Profiel'; @override String get bitDepth => 'Bit diepte'; @override String get colorSpace => 'Kleurruimte'; @override String get colorRange => 'Kleurbereik'; @override String get colorPrimaries => 'Kleurprimaires'; @override String get chromaSubsampling => 'Chroma subsampling'; @override String get channels => 'Kanalen'; @override String get path => 'Pad'; @override String get size => 'Grootte'; @override String get container => 'Container'; @override String get duration => 'Duur'; @override String get optimizedForStreaming => 'Geoptimaliseerd voor streaming'; @override String get has64bitOffsets => '64-bit Offsets'; } // Path: mediaMenu class _StringsMediaMenuNl implements _StringsMediaMenuEn { _StringsMediaMenuNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get markAsWatched => 'Markeer als gekeken'; @override String get markAsUnwatched => 'Markeer als ongekeken'; @override String get removeFromContinueWatching => 'Verwijder uit Doorgaan met kijken'; @override String get goToSeries => 'Ga naar serie'; @override String get goToSeason => 'Ga naar seizoen'; @override String get shufflePlay => 'Willekeurig afspelen'; @override String get fileInfo => 'Bestand info'; } // Path: accessibility class _StringsAccessibilityNl implements _StringsAccessibilityEn { _StringsAccessibilityNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String mediaCardMovie({required Object title}) => '${title}, film'; @override String mediaCardShow({required Object title}) => '${title}, TV-serie'; @override String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; @override String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; @override String get mediaCardWatched => 'bekeken'; @override String mediaCardPartiallyWatched({required Object percent}) => '${percent} procent bekeken'; @override String get mediaCardUnwatched => 'niet bekeken'; @override String get tapToPlay => 'Tik om af te spelen'; } // Path: tooltips class _StringsTooltipsNl implements _StringsTooltipsEn { _StringsTooltipsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get shufflePlay => 'Willekeurig afspelen'; @override String get markAsWatched => 'Markeer als gekeken'; @override String get markAsUnwatched => 'Markeer als ongekeken'; } // Path: videoControls class _StringsVideoControlsNl implements _StringsVideoControlsEn { _StringsVideoControlsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get audioLabel => 'Audio'; @override String get subtitlesLabel => 'Ondertitels'; @override String get resetToZero => 'Reset naar 0ms'; @override String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; @override String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; @override String playsLater({required Object label}) => '${label} speelt later af'; @override String playsEarlier({required Object label}) => '${label} speelt eerder af'; @override String get noOffset => 'Geen offset'; @override String get letterbox => 'Letterbox'; @override String get fillScreen => 'Vul scherm'; @override String get stretch => 'Uitrekken'; @override String get lockRotation => 'Vergrendel rotatie'; @override String get unlockRotation => 'Ontgrendel rotatie'; @override String get sleepTimer => 'Slaaptimer'; @override String get timerActive => 'Timer actief'; @override String playbackWillPauseIn({required Object duration}) => 'Afspelen wordt gepauzeerd over ${duration}'; @override String get sleepTimerCompleted => 'Slaaptimer voltooid - afspelen gepauzeerd'; @override String get playButton => 'Afspelen'; @override String get pauseButton => 'Pauzeren'; @override String seekBackwardButton({required Object seconds}) => 'Terugspoelen ${seconds} seconden'; @override String seekForwardButton({required Object seconds}) => 'Vooruitspoelen ${seconds} seconden'; @override String get previousButton => 'Vorige aflevering'; @override String get nextButton => 'Volgende aflevering'; @override String get previousChapterButton => 'Vorig hoofdstuk'; @override String get nextChapterButton => 'Volgend hoofdstuk'; @override String get muteButton => 'Dempen'; @override String get unmuteButton => 'Dempen opheffen'; @override String get settingsButton => 'Video-instellingen'; @override String get audioTrackButton => 'Audiosporen'; @override String get subtitlesButton => 'Ondertitels'; @override String get chaptersButton => 'Hoofdstukken'; @override String get versionsButton => 'Videoversies'; @override String get aspectRatioButton => 'Beeldverhouding'; @override String get fullscreenButton => 'Volledig scherm activeren'; @override String get exitFullscreenButton => 'Volledig scherm verlaten'; @override String get rotationLockButton => 'Rotatievergrendeling'; @override String get timelineSlider => 'Videotijdlijn'; @override String get volumeSlider => 'Volumeniveau'; @override String get backButton => 'Terug'; } // Path: userStatus class _StringsUserStatusNl implements _StringsUserStatusEn { _StringsUserStatusNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get admin => 'Beheerder'; @override String get restricted => 'Beperkt'; @override String get protected => 'Beschermd'; @override String get current => 'HUIDIG'; } // Path: messages class _StringsMessagesNl implements _StringsMessagesEn { _StringsMessagesNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get markedAsWatched => 'Gemarkeerd als gekeken'; @override String get markedAsUnwatched => 'Gemarkeerd als ongekeken'; @override String get markedAsWatchedOffline => 'Gemarkeerd als gekeken (sync wanneer online)'; @override String get markedAsUnwatchedOffline => 'Gemarkeerd als ongekeken (sync wanneer online)'; @override String get removedFromContinueWatching => 'Verwijderd uit Doorgaan met kijken'; @override String errorLoading({required Object error}) => 'Fout: ${error}'; @override String get fileInfoNotAvailable => 'Bestand informatie niet beschikbaar'; @override String errorLoadingFileInfo({required Object error}) => 'Fout bij laden bestand info: ${error}'; @override String get errorLoadingSeries => 'Fout bij laden serie'; @override String get errorLoadingSeason => 'Fout bij laden seizoen'; @override String get musicNotSupported => 'Muziek afspelen wordt nog niet ondersteund'; @override String get logsCleared => 'Logs gewist'; @override String get logsCopied => 'Logs gekopieerd naar klembord'; @override String get noLogsAvailable => 'Geen logs beschikbaar'; @override String libraryScanning({required Object title}) => 'Scannen "${title}"...'; @override String libraryScanStarted({required Object title}) => 'Bibliotheek scan gestart voor "${title}"'; @override String libraryScanFailed({required Object error}) => 'Kon bibliotheek niet scannen: ${error}'; @override String metadataRefreshing({required Object title}) => 'Metadata vernieuwen voor "${title}"...'; @override String metadataRefreshStarted({required Object title}) => 'Metadata vernieuwen gestart voor "${title}"'; @override String metadataRefreshFailed({required Object error}) => 'Kon metadata niet vernieuwen: ${error}'; @override String get logoutConfirm => 'Weet je zeker dat je wilt uitloggen?'; @override String get noSeasonsFound => 'Geen seizoenen gevonden'; @override String get noEpisodesFound => 'Geen afleveringen gevonden in eerste seizoen'; @override String get noEpisodesFoundGeneral => 'Geen afleveringen gevonden'; @override String get noResultsFound => 'Geen resultaten gevonden'; @override String sleepTimerSet({required Object label}) => 'Slaap timer ingesteld voor ${label}'; @override String get noItemsAvailable => 'Geen items beschikbaar'; @override String get failedToCreatePlayQueue => 'Kan afspeelwachtrij niet maken'; @override String get failedToCreatePlayQueueNoItems => 'Kan afspeelwachtrij niet maken - geen items'; @override String failedPlayback({required Object action, required Object error}) => 'Afspelen van ${action} mislukt: ${error}'; @override String get youAreOffline => 'Je bent offline'; @override String get offlineFeatureUnavailable => 'Deze functie vereist een internetverbinding. Je downloads en instellingen zijn nog steeds beschikbaar.'; } // Path: subtitlingStyling class _StringsSubtitlingStylingNl implements _StringsSubtitlingStylingEn { _StringsSubtitlingStylingNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get stylingOptions => 'Opmaak opties'; @override String get fontSize => 'Lettergrootte'; @override String get textColor => 'Tekstkleur'; @override String get borderSize => 'Rand grootte'; @override String get borderColor => 'Randkleur'; @override String get backgroundOpacity => 'Achtergrond transparantie'; @override String get backgroundColor => 'Achtergrondkleur'; } // Path: dialog class _StringsDialogNl implements _StringsDialogEn { _StringsDialogNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get confirmAction => 'Bevestig actie'; @override String get cancel => 'Annuleren'; @override String get playNow => 'Nu afspelen'; } // Path: discover class _StringsDiscoverNl implements _StringsDiscoverEn { _StringsDiscoverNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Ontdekken'; @override String get switchProfile => 'Wissel van profiel'; @override String get switchServer => 'Wissel van server'; @override String get logout => 'Uitloggen'; @override String get noContentAvailable => 'Geen inhoud beschikbaar'; @override String get addMediaToLibraries => 'Voeg wat media toe aan je bibliotheken'; @override String get continueWatching => 'Verder kijken'; @override String get play => 'Afspelen'; @override String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; @override String get pause => 'Pauzeren'; @override String get overview => 'Overzicht'; @override String get cast => 'Acteurs'; @override String get seasons => 'Seizoenen'; @override String get studio => 'Studio'; @override String get rating => 'Leeftijd'; @override String get watched => 'Bekeken'; @override String episodeCount({required Object count}) => '${count} afleveringen'; @override String watchedProgress({required Object watched, required Object total}) => '${watched}/${total} gekeken'; @override String get movie => 'Film'; @override String get tvShow => 'TV Serie'; @override String minutesLeft({required Object minutes}) => '${minutes} min over'; } // Path: errors class _StringsErrorsNl implements _StringsErrorsEn { _StringsErrorsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String searchFailed({required Object error}) => 'Zoeken mislukt: ${error}'; @override String connectionTimeout({required Object context}) => 'Verbinding time-out tijdens laden ${context}'; @override String get connectionFailed => 'Kan geen verbinding maken met Plex server'; @override String failedToLoad({required Object context, required Object error}) => 'Kon ${context} niet laden: ${error}'; @override String get noClientAvailable => 'Geen client beschikbaar'; @override String authenticationFailed({required Object error}) => 'Authenticatie mislukt: ${error}'; @override String get couldNotLaunchUrl => 'Kon auth URL niet openen'; @override String get pleaseEnterToken => 'Voer een token in'; @override String get invalidToken => 'Ongeldig token'; @override String failedToVerifyToken({required Object error}) => 'Kon token niet verifiëren: ${error}'; @override String failedToSwitchProfile({required Object displayName}) => 'Kon niet wisselen naar ${displayName}'; } // Path: libraries class _StringsLibrariesNl implements _StringsLibrariesEn { _StringsLibrariesNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Bibliotheken'; @override String get scanLibraryFiles => 'Scan bibliotheek bestanden'; @override String get scanLibrary => 'Scan bibliotheek'; @override String get analyze => 'Analyseren'; @override String get analyzeLibrary => 'Analyseer bibliotheek'; @override String get refreshMetadata => 'Vernieuw metadata'; @override String get emptyTrash => 'Prullenbak legen'; @override String emptyingTrash({required Object title}) => 'Prullenbak legen voor "${title}"...'; @override String trashEmptied({required Object title}) => 'Prullenbak geleegd voor "${title}"'; @override String failedToEmptyTrash({required Object error}) => 'Kon prullenbak niet legen: ${error}'; @override String analyzing({required Object title}) => 'Analyseren "${title}"...'; @override String analysisStarted({required Object title}) => 'Analyse gestart voor "${title}"'; @override String failedToAnalyze({required Object error}) => 'Kon bibliotheek niet analyseren: ${error}'; @override String get noLibrariesFound => 'Geen bibliotheken gevonden'; @override String get thisLibraryIsEmpty => 'Deze bibliotheek is leeg'; @override String get all => 'Alles'; @override String get clearAll => 'Alles wissen'; @override String scanLibraryConfirm({required Object title}) => 'Weet je zeker dat je "${title}" wilt scannen?'; @override String analyzeLibraryConfirm({required Object title}) => 'Weet je zeker dat je "${title}" wilt analyseren?'; @override String refreshMetadataConfirm({required Object title}) => 'Weet je zeker dat je metadata wilt vernieuwen voor "${title}"?'; @override String emptyTrashConfirm({required Object title}) => 'Weet je zeker dat je de prullenbak wilt legen voor "${title}"?'; @override String get manageLibraries => 'Beheer bibliotheken'; @override String get sort => 'Sorteren'; @override String get sortBy => 'Sorteer op'; @override String get filters => 'Filters'; @override String get confirmActionMessage => 'Weet je zeker dat je deze actie wilt uitvoeren?'; @override String get showLibrary => 'Toon bibliotheek'; @override String get hideLibrary => 'Verberg bibliotheek'; @override String get libraryOptions => 'Bibliotheek opties'; @override String get content => 'bibliotheekinhoud'; @override String get selectLibrary => 'Bibliotheek kiezen'; @override String filtersWithCount({required Object count}) => 'Filters (${count})'; @override String get noRecommendations => 'Geen aanbevelingen beschikbaar'; @override String get noCollections => 'Geen collecties in deze bibliotheek'; @override String get noFoldersFound => 'Geen mappen gevonden'; @override String get folders => 'mappen'; @override late final _StringsLibrariesTabsNl tabs = _StringsLibrariesTabsNl._(_root); @override late final _StringsLibrariesGroupingsNl groupings = _StringsLibrariesGroupingsNl._(_root); } // Path: about class _StringsAboutNl implements _StringsAboutEn { _StringsAboutNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Over'; @override String get openSourceLicenses => 'Open Source licenties'; @override String versionLabel({required Object version}) => 'Versie ${version}'; @override String get appDescription => 'Een mooie Plex client voor Flutter'; @override String get viewLicensesDescription => 'Bekijk licenties van third-party bibliotheken'; } // Path: serverSelection class _StringsServerSelectionNl implements _StringsServerSelectionEn { _StringsServerSelectionNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get allServerConnectionsFailed => 'Kon niet verbinden met servers. Controleer je netwerk en probeer opnieuw.'; @override String get noServersFound => 'Geen servers gevonden'; @override String noServersFoundForAccount({required Object username, required Object email}) => 'Geen servers gevonden voor ${username} (${email})'; @override String failedToLoadServers({required Object error}) => 'Kon servers niet laden: ${error}'; } // Path: hubDetail class _StringsHubDetailNl implements _StringsHubDetailEn { _StringsHubDetailNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Titel'; @override String get releaseYear => 'Uitgavejaar'; @override String get dateAdded => 'Datum toegevoegd'; @override String get rating => 'Beoordeling'; @override String get noItemsFound => 'Geen items gevonden'; } // Path: logs class _StringsLogsNl implements _StringsLogsEn { _StringsLogsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get clearLogs => 'Wis logs'; @override String get copyLogs => 'Kopieer logs'; @override String get error => 'Fout:'; @override String get stackTrace => 'Stacktracering:'; } // Path: licenses class _StringsLicensesNl implements _StringsLicensesEn { _StringsLicensesNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get relatedPackages => 'Gerelateerde pakketten'; @override String get license => 'Licentie'; @override String licenseNumber({required Object number}) => 'Licentie ${number}'; @override String licensesCount({required Object count}) => '${count} licenties'; } // Path: navigation class _StringsNavigationNl implements _StringsNavigationEn { _StringsNavigationNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get home => 'Thuis'; @override String get search => 'Zoeken'; @override String get libraries => 'Bibliotheken'; @override String get settings => 'Instellingen'; @override String get downloads => 'Downloads'; } // Path: downloads class _StringsDownloadsNl implements _StringsDownloadsEn { _StringsDownloadsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Downloads'; @override String get manage => 'Beheren'; @override String get tvShows => 'Series'; @override String get movies => 'Films'; @override String get noDownloads => 'Nog geen downloads'; @override String get noDownloadsDescription => 'Gedownloade content verschijnt hier voor offline weergave'; @override String get downloadNow => 'Download'; @override String get deleteDownload => 'Download verwijderen'; @override String get retryDownload => 'Download opnieuw proberen'; @override String get downloadQueued => 'Download in wachtrij'; @override String episodesQueued({required Object count}) => '${count} afleveringen in wachtrij voor download'; @override String get downloadDeleted => 'Download verwijderd'; @override String deleteConfirm({required Object title}) => 'Weet je zeker dat je "${title}" wilt verwijderen? Het gedownloade bestand wordt van je apparaat verwijderd.'; @override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Verwijderen van ${title}... (${current} van ${total})'; } // Path: playlists class _StringsPlaylistsNl implements _StringsPlaylistsEn { _StringsPlaylistsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Afspeellijsten'; @override String get noPlaylists => 'Geen afspeellijsten gevonden'; @override String get create => 'Afspeellijst maken'; @override String get playlistName => 'Naam afspeellijst'; @override String get enterPlaylistName => 'Voer naam afspeellijst in'; @override String get delete => 'Afspeellijst verwijderen'; @override String get removeItem => 'Verwijderen uit afspeellijst'; @override String get smartPlaylist => 'Slimme afspeellijst'; @override String itemCount({required Object count}) => '${count} items'; @override String get oneItem => '1 item'; @override String get emptyPlaylist => 'Deze afspeellijst is leeg'; @override String get deleteConfirm => 'Afspeellijst verwijderen?'; @override String deleteMessage({required Object name}) => 'Weet je zeker dat je "${name}" wilt verwijderen?'; @override String get created => 'Afspeellijst gemaakt'; @override String get deleted => 'Afspeellijst verwijderd'; @override String get itemAdded => 'Toegevoegd aan afspeellijst'; @override String get itemRemoved => 'Verwijderd uit afspeellijst'; @override String get selectPlaylist => 'Selecteer afspeellijst'; @override String get createNewPlaylist => 'Nieuwe afspeellijst maken'; @override String get errorCreating => 'Fout bij maken afspeellijst'; @override String get errorDeleting => 'Fout bij verwijderen afspeellijst'; @override String get errorLoading => 'Fout bij laden afspeellijsten'; @override String get errorAdding => 'Fout bij toevoegen aan afspeellijst'; @override String get errorReordering => 'Fout bij herschikken van afspeellijstitem'; @override String get errorRemoving => 'Fout bij verwijderen uit afspeellijst'; @override String get playlist => 'Afspeellijst'; } // Path: collections class _StringsCollectionsNl implements _StringsCollectionsEn { _StringsCollectionsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get title => 'Collecties'; @override String get collection => 'Collectie'; @override String get empty => 'Collectie is leeg'; @override String get unknownLibrarySection => 'Kan niet verwijderen: onbekende bibliotheeksectie'; @override String get deleteCollection => 'Collectie verwijderen'; @override String deleteConfirm({required Object title}) => 'Weet je zeker dat je "${title}" wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.'; @override String get deleted => 'Collectie verwijderd'; @override String get deleteFailed => 'Collectie verwijderen mislukt'; @override String deleteFailedWithError({required Object error}) => 'Collectie verwijderen mislukt: ${error}'; @override String failedToLoadItems({required Object error}) => 'Collectie-items laden mislukt: ${error}'; @override String get selectCollection => 'Selecteer collectie'; @override String get createNewCollection => 'Nieuwe collectie maken'; @override String get collectionName => 'Collectienaam'; @override String get enterCollectionName => 'Voer collectienaam in'; @override String get addedToCollection => 'Toegevoegd aan collectie'; @override String get errorAddingToCollection => 'Fout bij toevoegen aan collectie'; @override String get created => 'Collectie gemaakt'; @override String get removeFromCollection => 'Verwijderen uit collectie'; @override String removeFromCollectionConfirm({required Object title}) => '"${title}" uit deze collectie verwijderen?'; @override String get removedFromCollection => 'Uit collectie verwijderd'; @override String get removeFromCollectionFailed => 'Verwijderen uit collectie mislukt'; @override String removeFromCollectionError({required Object error}) => 'Fout bij verwijderen uit collectie: ${error}'; } // Path: libraries.tabs class _StringsLibrariesTabsNl implements _StringsLibrariesTabsEn { _StringsLibrariesTabsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get recommended => 'Aanbevolen'; @override String get browse => 'Bladeren'; @override String get collections => 'Collecties'; @override String get playlists => 'Afspeellijsten'; } // Path: libraries.groupings class _StringsLibrariesGroupingsNl implements _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsNl._(this._root); @override final _StringsNl _root; // ignore: unused_field // Translations @override String get all => 'Alles'; @override String get movies => 'Films'; @override String get shows => 'Series'; @override String get seasons => 'Seizoenen'; @override String get episodes => 'Afleveringen'; @override String get folders => 'Mappen'; } // Path: class _StringsSv implements Translations { /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. _StringsSv.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = TranslationMetadata( locale: AppLocale.sv, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsSv _root = this; // ignore: unused_field // Translations @override late final _StringsAppSv app = _StringsAppSv._(_root); @override late final _StringsAuthSv auth = _StringsAuthSv._(_root); @override late final _StringsCommonSv common = _StringsCommonSv._(_root); @override late final _StringsScreensSv screens = _StringsScreensSv._(_root); @override late final _StringsUpdateSv update = _StringsUpdateSv._(_root); @override late final _StringsSettingsSv settings = _StringsSettingsSv._(_root); @override late final _StringsSearchSv search = _StringsSearchSv._(_root); @override late final _StringsHotkeysSv hotkeys = _StringsHotkeysSv._(_root); @override late final _StringsPinEntrySv pinEntry = _StringsPinEntrySv._(_root); @override late final _StringsFileInfoSv fileInfo = _StringsFileInfoSv._(_root); @override late final _StringsMediaMenuSv mediaMenu = _StringsMediaMenuSv._(_root); @override late final _StringsAccessibilitySv accessibility = _StringsAccessibilitySv._(_root); @override late final _StringsTooltipsSv tooltips = _StringsTooltipsSv._(_root); @override late final _StringsVideoControlsSv videoControls = _StringsVideoControlsSv._(_root); @override late final _StringsUserStatusSv userStatus = _StringsUserStatusSv._(_root); @override late final _StringsMessagesSv messages = _StringsMessagesSv._(_root); @override late final _StringsSubtitlingStylingSv subtitlingStyling = _StringsSubtitlingStylingSv._(_root); @override late final _StringsDialogSv dialog = _StringsDialogSv._(_root); @override late final _StringsDiscoverSv discover = _StringsDiscoverSv._(_root); @override late final _StringsErrorsSv errors = _StringsErrorsSv._(_root); @override late final _StringsLibrariesSv libraries = _StringsLibrariesSv._(_root); @override late final _StringsAboutSv about = _StringsAboutSv._(_root); @override late final _StringsServerSelectionSv serverSelection = _StringsServerSelectionSv._(_root); @override late final _StringsHubDetailSv hubDetail = _StringsHubDetailSv._(_root); @override late final _StringsLogsSv logs = _StringsLogsSv._(_root); @override late final _StringsLicensesSv licenses = _StringsLicensesSv._(_root); @override late final _StringsNavigationSv navigation = _StringsNavigationSv._(_root); @override late final _StringsDownloadsSv downloads = _StringsDownloadsSv._(_root); @override late final _StringsPlaylistsSv playlists = _StringsPlaylistsSv._(_root); @override late final _StringsCollectionsSv collections = _StringsCollectionsSv._(_root); } // Path: app class _StringsAppSv implements _StringsAppEn { _StringsAppSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Plezy'; @override String get loading => 'Laddar...'; } // Path: auth class _StringsAuthSv implements _StringsAuthEn { _StringsAuthSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get signInWithPlex => 'Logga in med Plex'; @override String get showQRCode => 'Visa QR-kod'; @override String get cancel => 'Avbryt'; @override String get authenticate => 'Autentisera'; @override String get retry => 'Försök igen'; @override String get debugEnterToken => 'Debug: Ange Plex-token'; @override String get plexTokenLabel => 'Plex-autentiseringstoken'; @override String get plexTokenHint => 'Ange din Plex.tv-token'; @override String get authenticationTimeout => 'Autentisering tog för lång tid. Försök igen.'; @override String get scanQRCodeInstruction => 'Skanna denna QR-kod med en enhet inloggad på Plex för att autentisera.'; @override String get waitingForAuth => 'Väntar på autentisering...\nVänligen slutför inloggning i din webbläsare.'; } // Path: common class _StringsCommonSv implements _StringsCommonEn { _StringsCommonSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get cancel => 'Avbryt'; @override String get save => 'Spara'; @override String get close => 'Stäng'; @override String get clear => 'Rensa'; @override String get reset => 'Återställ'; @override String get later => 'Senare'; @override String get submit => 'Skicka'; @override String get confirm => 'Bekräfta'; @override String get retry => 'Försök igen'; @override String get logout => 'Logga ut'; @override String get unknown => 'Okänd'; @override String get refresh => 'Uppdatera'; @override String get yes => 'Ja'; @override String get no => 'Nej'; @override String get delete => 'Ta bort'; @override String get shuffle => 'Blanda'; @override String get addTo => 'Lägg till i...'; } // Path: screens class _StringsScreensSv implements _StringsScreensEn { _StringsScreensSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get licenses => 'Licenser'; @override String get selectServer => 'Välj server'; @override String get switchProfile => 'Byt profil'; @override String get subtitleStyling => 'Undertext-styling'; @override String get search => 'Sök'; @override String get logs => 'Loggar'; } // Path: update class _StringsUpdateSv implements _StringsUpdateEn { _StringsUpdateSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get available => 'Uppdatering tillgänglig'; @override String versionAvailable({required Object version}) => 'Version ${version} är tillgänglig'; @override String currentVersion({required Object version}) => 'Nuvarande: ${version}'; @override String get skipVersion => 'Hoppa över denna version'; @override String get viewRelease => 'Visa release'; @override String get latestVersion => 'Du har den senaste versionen'; @override String get checkFailed => 'Misslyckades att kontrollera uppdateringar'; } // Path: settings class _StringsSettingsSv implements _StringsSettingsEn { _StringsSettingsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Inställningar'; @override String get language => 'Språk'; @override String get theme => 'Tema'; @override String get appearance => 'Utseende'; @override String get videoPlayback => 'Videouppspelning'; @override String get advanced => 'Avancerat'; @override String get useSeasonPostersDescription => 'Visa säsongsaffisch istället för serieaffisch för avsnitt'; @override String get showHeroSectionDescription => 'Visa utvalda innehållskarusell på startsidan'; @override String get secondsLabel => 'Sekunder'; @override String get minutesLabel => 'Minuter'; @override String get secondsShort => 's'; @override String get minutesShort => 'm'; @override String durationHint({required Object min, required Object max}) => 'Ange tid (${min}-${max})'; @override String get systemTheme => 'System'; @override String get systemThemeDescription => 'Följ systeminställningar'; @override String get lightTheme => 'Ljust'; @override String get darkTheme => 'Mörkt'; @override String get libraryDensity => 'Biblioteksdensitet'; @override String get compact => 'Kompakt'; @override String get compactDescription => 'Mindre kort, fler objekt synliga'; @override String get normal => 'Normal'; @override String get normalDescription => 'Standardstorlek'; @override String get comfortable => 'Bekväm'; @override String get comfortableDescription => 'Större kort, färre objekt synliga'; @override String get viewMode => 'Visningsläge'; @override String get gridView => 'Rutnät'; @override String get gridViewDescription => 'Visa objekt i rutnätslayout'; @override String get listView => 'Lista'; @override String get listViewDescription => 'Visa objekt i listlayout'; @override String get useSeasonPosters => 'Använd säsongsaffischer'; @override String get showHeroSection => 'Visa hjältesektion'; @override String get hardwareDecoding => 'Hårdvaruavkodning'; @override String get hardwareDecodingDescription => 'Använd hårdvaruacceleration när tillgängligt'; @override String get bufferSize => 'Bufferstorlek'; @override String bufferSizeMB({required Object size}) => '${size}MB'; @override String get subtitleStyling => 'Undertext-styling'; @override String get subtitleStylingDescription => 'Anpassa undertextutseende'; @override String get smallSkipDuration => 'Kort hoppvaraktighet'; @override String get largeSkipDuration => 'Lång hoppvaraktighet'; @override String secondsUnit({required Object seconds}) => '${seconds} sekunder'; @override String get defaultSleepTimer => 'Standard sovtimer'; @override String minutesUnit({required Object minutes}) => '${minutes} minuter'; @override String get rememberTrackSelections => 'Kom ihåg spårval per serie/film'; @override String get rememberTrackSelectionsDescription => 'Spara automatiskt ljud- och undertextspråkpreferenser när du ändrar spår under uppspelning'; @override String get videoPlayerControls => 'Videospelar-kontroller'; @override String get keyboardShortcuts => 'Tangentbordsgenvägar'; @override String get keyboardShortcutsDescription => 'Anpassa tangentbordsgenvägar'; @override String get videoPlayerNavigation => 'Navigering i videospelaren'; @override String get videoPlayerNavigationDescription => 'Använd piltangenter för att navigera videospelarens kontroller'; @override String get debugLogging => 'Felsökningsloggning'; @override String get debugLoggingDescription => 'Aktivera detaljerad loggning för felsökning'; @override String get viewLogs => 'Visa loggar'; @override String get viewLogsDescription => 'Visa applikationsloggar'; @override String get clearCache => 'Rensa cache'; @override String get clearCacheDescription => 'Detta rensar alla cachade bilder och data. Appen kan ta längre tid att ladda innehåll efter cache-rensning.'; @override String get clearCacheSuccess => 'Cache rensad framgångsrikt'; @override String get resetSettings => 'Återställ inställningar'; @override String get resetSettingsDescription => 'Detta återställer alla inställningar till standardvärden. Denna åtgärd kan inte ångras.'; @override String get resetSettingsSuccess => 'Inställningar återställda framgångsrikt'; @override String get shortcutsReset => 'Genvägar återställda till standard'; @override String get about => 'Om'; @override String get aboutDescription => 'Appinformation och licenser'; @override String get updates => 'Uppdateringar'; @override String get updateAvailable => 'Uppdatering tillgänglig'; @override String get checkForUpdates => 'Kontrollera uppdateringar'; @override String get validationErrorEnterNumber => 'Vänligen ange ett giltigt nummer'; @override String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'Tiden måste vara mellan ${min} och ${max} ${unit}'; @override String shortcutAlreadyAssigned({required Object action}) => 'Genväg redan tilldelad ${action}'; @override String shortcutUpdated({required Object action}) => 'Genväg uppdaterad för ${action}'; @override String get autoSkip => 'Auto Hoppa Över'; @override String get autoSkipIntro => 'Hoppa Över Intro Automatiskt'; @override String get autoSkipIntroDescription => 'Hoppa automatiskt över intro-markörer efter några sekunder'; @override String get autoSkipCredits => 'Hoppa Över Credits Automatiskt'; @override String get autoSkipCreditsDescription => 'Hoppa automatiskt över credits och spela nästa avsnitt'; @override String get autoSkipDelay => 'Fördröjning Auto Hoppa Över'; @override String autoSkipDelayDescription({required Object seconds}) => 'Vänta ${seconds} sekunder innan automatisk överhoppning'; @override String get downloads => 'Nedladdningar'; @override String get downloadLocationDescription => 'Välj var nedladdat innehåll ska lagras'; @override String get downloadLocationDefault => 'Standard (App-lagring)'; @override String get downloadLocationCustom => 'Anpassad Plats'; @override String get selectFolder => 'Välj Mapp'; @override String get resetToDefault => 'Återställ till Standard'; @override String currentPath({required Object path}) => 'Nuvarande: ${path}'; @override String get downloadLocationChanged => 'Nedladdningsplats ändrad'; @override String get downloadLocationReset => 'Nedladdningsplats återställd till standard'; @override String get downloadLocationInvalid => 'Vald mapp är inte skrivbar'; @override String get downloadLocationSelectError => 'Kunde inte välja mapp'; @override String get downloadOnWifiOnly => 'Ladda ner endast på WiFi'; @override String get downloadOnWifiOnlyDescription => 'Förhindra nedladdningar vid användning av mobildata'; @override String get cellularDownloadBlocked => 'Nedladdningar är inaktiverade på mobildata. Anslut till WiFi eller ändra inställningen.'; } // Path: search class _StringsSearchSv implements _StringsSearchEn { _StringsSearchSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get hint => 'Sök filmer, serier, musik...'; @override String get tryDifferentTerm => 'Prova en annan sökterm'; @override String get searchYourMedia => 'Sök i dina media'; @override String get enterTitleActorOrKeyword => 'Ange en titel, skådespelare eller nyckelord'; } // Path: hotkeys class _StringsHotkeysSv implements _StringsHotkeysEn { _StringsHotkeysSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String setShortcutFor({required Object actionName}) => 'Sätt genväg för ${actionName}'; @override String get clearShortcut => 'Rensa genväg'; } // Path: pinEntry class _StringsPinEntrySv implements _StringsPinEntryEn { _StringsPinEntrySv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get enterPin => 'Ange PIN'; @override String get showPin => 'Visa PIN'; @override String get hidePin => 'Dölj PIN'; } // Path: fileInfo class _StringsFileInfoSv implements _StringsFileInfoEn { _StringsFileInfoSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Filinformation'; @override String get video => 'Video'; @override String get audio => 'Ljud'; @override String get file => 'Fil'; @override String get advanced => 'Avancerat'; @override String get codec => 'Kodek'; @override String get resolution => 'Upplösning'; @override String get bitrate => 'Bithastighet'; @override String get frameRate => 'Bildfrekvens'; @override String get aspectRatio => 'Bildförhållande'; @override String get profile => 'Profil'; @override String get bitDepth => 'Bitdjup'; @override String get colorSpace => 'Färgrymd'; @override String get colorRange => 'Färgområde'; @override String get colorPrimaries => 'Färggrunder'; @override String get chromaSubsampling => 'Kroma-undersampling'; @override String get channels => 'Kanaler'; @override String get path => 'Sökväg'; @override String get size => 'Storlek'; @override String get container => 'Container'; @override String get duration => 'Varaktighet'; @override String get optimizedForStreaming => 'Optimerad för streaming'; @override String get has64bitOffsets => '64-bit offset'; } // Path: mediaMenu class _StringsMediaMenuSv implements _StringsMediaMenuEn { _StringsMediaMenuSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get markAsWatched => 'Markera som sedd'; @override String get markAsUnwatched => 'Markera som osedd'; @override String get removeFromContinueWatching => 'Ta bort från Fortsätt titta'; @override String get goToSeries => 'Gå till serie'; @override String get goToSeason => 'Gå till säsong'; @override String get shufflePlay => 'Blanda uppspelning'; @override String get fileInfo => 'Filinformation'; } // Path: accessibility class _StringsAccessibilitySv implements _StringsAccessibilityEn { _StringsAccessibilitySv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String mediaCardMovie({required Object title}) => '${title}, film'; @override String mediaCardShow({required Object title}) => '${title}, TV-serie'; @override String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; @override String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; @override String get mediaCardWatched => 'sedd'; @override String mediaCardPartiallyWatched({required Object percent}) => '${percent} procent sedd'; @override String get mediaCardUnwatched => 'osedd'; @override String get tapToPlay => 'Tryck för att spela'; } // Path: tooltips class _StringsTooltipsSv implements _StringsTooltipsEn { _StringsTooltipsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get shufflePlay => 'Blanda uppspelning'; @override String get markAsWatched => 'Markera som sedd'; @override String get markAsUnwatched => 'Markera som osedd'; } // Path: videoControls class _StringsVideoControlsSv implements _StringsVideoControlsEn { _StringsVideoControlsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get audioLabel => 'Ljud'; @override String get subtitlesLabel => 'Undertexter'; @override String get resetToZero => 'Återställ till 0ms'; @override String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; @override String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; @override String playsLater({required Object label}) => '${label} spelas senare'; @override String playsEarlier({required Object label}) => '${label} spelas tidigare'; @override String get noOffset => 'Ingen offset'; @override String get letterbox => 'Letterbox'; @override String get fillScreen => 'Fyll skärm'; @override String get stretch => 'Sträck'; @override String get lockRotation => 'Lås rotation'; @override String get unlockRotation => 'Lås upp rotation'; @override String get sleepTimer => 'Sovtimer'; @override String get timerActive => 'Timer aktiv'; @override String playbackWillPauseIn({required Object duration}) => 'Uppspelningen pausas om ${duration}'; @override String get sleepTimerCompleted => 'Sovtimer slutförd - uppspelning pausad'; @override String get playButton => 'Spela'; @override String get pauseButton => 'Pausa'; @override String seekBackwardButton({required Object seconds}) => 'Spola bakåt ${seconds} sekunder'; @override String seekForwardButton({required Object seconds}) => 'Spola framåt ${seconds} sekunder'; @override String get previousButton => 'Föregående avsnitt'; @override String get nextButton => 'Nästa avsnitt'; @override String get previousChapterButton => 'Föregående kapitel'; @override String get nextChapterButton => 'Nästa kapitel'; @override String get muteButton => 'Tysta'; @override String get unmuteButton => 'Slå på ljud'; @override String get settingsButton => 'Videoinställningar'; @override String get audioTrackButton => 'Ljudspår'; @override String get subtitlesButton => 'Undertexter'; @override String get chaptersButton => 'Kapitel'; @override String get versionsButton => 'Videoversioner'; @override String get aspectRatioButton => 'Bildförhållande'; @override String get fullscreenButton => 'Aktivera helskärm'; @override String get exitFullscreenButton => 'Avsluta helskärm'; @override String get rotationLockButton => 'Rotationslås'; @override String get timelineSlider => 'Videotidslinje'; @override String get volumeSlider => 'Volymnivå'; @override String get backButton => 'Tillbaka'; } // Path: userStatus class _StringsUserStatusSv implements _StringsUserStatusEn { _StringsUserStatusSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get admin => 'Admin'; @override String get restricted => 'Begränsad'; @override String get protected => 'Skyddad'; @override String get current => 'NUVARANDE'; } // Path: messages class _StringsMessagesSv implements _StringsMessagesEn { _StringsMessagesSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get markedAsWatched => 'Markerad som sedd'; @override String get markedAsUnwatched => 'Markerad som osedd'; @override String get markedAsWatchedOffline => 'Markerad som sedd (synkroniseras när online)'; @override String get markedAsUnwatchedOffline => 'Markerad som osedd (synkroniseras när online)'; @override String get removedFromContinueWatching => 'Borttagen från Fortsätt titta'; @override String errorLoading({required Object error}) => 'Fel: ${error}'; @override String get fileInfoNotAvailable => 'Filinformation inte tillgänglig'; @override String errorLoadingFileInfo({required Object error}) => 'Fel vid laddning av filinformation: ${error}'; @override String get errorLoadingSeries => 'Fel vid laddning av serie'; @override String get errorLoadingSeason => 'Fel vid laddning av säsong'; @override String get musicNotSupported => 'Musikuppspelning stöds inte ännu'; @override String get logsCleared => 'Loggar rensade'; @override String get logsCopied => 'Loggar kopierade till urklipp'; @override String get noLogsAvailable => 'Inga loggar tillgängliga'; @override String libraryScanning({required Object title}) => 'Skannar "${title}"...'; @override String libraryScanStarted({required Object title}) => 'Biblioteksskanning startad för "${title}"'; @override String libraryScanFailed({required Object error}) => 'Misslyckades att skanna bibliotek: ${error}'; @override String metadataRefreshing({required Object title}) => 'Uppdaterar metadata för "${title}"...'; @override String metadataRefreshStarted({required Object title}) => 'Metadata-uppdatering startad för "${title}"'; @override String metadataRefreshFailed({required Object error}) => 'Misslyckades att uppdatera metadata: ${error}'; @override String get logoutConfirm => 'Är du säker på att du vill logga ut?'; @override String get noSeasonsFound => 'Inga säsonger hittades'; @override String get noEpisodesFound => 'Inga avsnitt hittades i första säsongen'; @override String get noEpisodesFoundGeneral => 'Inga avsnitt hittades'; @override String get noResultsFound => 'Inga resultat hittades'; @override String sleepTimerSet({required Object label}) => 'Sovtimer inställd för ${label}'; @override String get noItemsAvailable => 'Inga objekt tillgängliga'; @override String get failedToCreatePlayQueue => 'Det gick inte att skapa uppspelningskö'; @override String get failedToCreatePlayQueueNoItems => 'Det gick inte att skapa uppspelningskö – inga objekt'; @override String failedPlayback({required Object action, required Object error}) => 'Kunde inte ${action}: ${error}'; @override String get youAreOffline => 'Du är offline'; @override String get offlineFeatureUnavailable => 'Denna funktion kräver en internetanslutning. Dina nedladdningar och inställningar är fortfarande tillgängliga.'; } // Path: subtitlingStyling class _StringsSubtitlingStylingSv implements _StringsSubtitlingStylingEn { _StringsSubtitlingStylingSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get stylingOptions => 'Stilalternativ'; @override String get fontSize => 'Teckenstorlek'; @override String get textColor => 'Textfärg'; @override String get borderSize => 'Kantstorlek'; @override String get borderColor => 'Kantfärg'; @override String get backgroundOpacity => 'Bakgrundsopacitet'; @override String get backgroundColor => 'Bakgrundsfärg'; } // Path: dialog class _StringsDialogSv implements _StringsDialogEn { _StringsDialogSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get confirmAction => 'Bekräfta åtgärd'; @override String get cancel => 'Avbryt'; @override String get playNow => 'Spela nu'; } // Path: discover class _StringsDiscoverSv implements _StringsDiscoverEn { _StringsDiscoverSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Upptäck'; @override String get switchProfile => 'Byt profil'; @override String get switchServer => 'Byt server'; @override String get logout => 'Logga ut'; @override String get noContentAvailable => 'Inget innehåll tillgängligt'; @override String get addMediaToLibraries => 'Lägg till media till dina bibliotek'; @override String get continueWatching => 'Fortsätt titta'; @override String get play => 'Spela'; @override String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; @override String get pause => 'Pausa'; @override String get overview => 'Översikt'; @override String get cast => 'Rollbesättning'; @override String get seasons => 'Säsonger'; @override String get studio => 'Studio'; @override String get rating => 'Åldersgräns'; @override String get watched => 'Tittad'; @override String episodeCount({required Object count}) => '${count} avsnitt'; @override String watchedProgress({required Object watched, required Object total}) => '${watched}/${total} sedda'; @override String get movie => 'Film'; @override String get tvShow => 'TV-serie'; @override String minutesLeft({required Object minutes}) => '${minutes} min kvar'; } // Path: errors class _StringsErrorsSv implements _StringsErrorsEn { _StringsErrorsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String searchFailed({required Object error}) => 'Sökning misslyckades: ${error}'; @override String connectionTimeout({required Object context}) => 'Anslutnings-timeout vid laddning ${context}'; @override String get connectionFailed => 'Kan inte ansluta till Plex-server'; @override String failedToLoad({required Object context, required Object error}) => 'Misslyckades att ladda ${context}: ${error}'; @override String get noClientAvailable => 'Ingen klient tillgänglig'; @override String authenticationFailed({required Object error}) => 'Autentisering misslyckades: ${error}'; @override String get couldNotLaunchUrl => 'Kunde inte öppna autentiserings-URL'; @override String get pleaseEnterToken => 'Vänligen ange en token'; @override String get invalidToken => 'Ogiltig token'; @override String failedToVerifyToken({required Object error}) => 'Misslyckades att verifiera token: ${error}'; @override String failedToSwitchProfile({required Object displayName}) => 'Misslyckades att byta till ${displayName}'; } // Path: libraries class _StringsLibrariesSv implements _StringsLibrariesEn { _StringsLibrariesSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Bibliotek'; @override String get scanLibraryFiles => 'Skanna biblioteksfiler'; @override String get scanLibrary => 'Skanna bibliotek'; @override String get analyze => 'Analysera'; @override String get analyzeLibrary => 'Analysera bibliotek'; @override String get refreshMetadata => 'Uppdatera metadata'; @override String get emptyTrash => 'Töm papperskorg'; @override String emptyingTrash({required Object title}) => 'Tömmer papperskorg för "${title}"...'; @override String trashEmptied({required Object title}) => 'Papperskorg tömd för "${title}"'; @override String failedToEmptyTrash({required Object error}) => 'Misslyckades att tömma papperskorg: ${error}'; @override String analyzing({required Object title}) => 'Analyserar "${title}"...'; @override String analysisStarted({required Object title}) => 'Analys startad för "${title}"'; @override String failedToAnalyze({required Object error}) => 'Misslyckades att analysera bibliotek: ${error}'; @override String get noLibrariesFound => 'Inga bibliotek hittades'; @override String get thisLibraryIsEmpty => 'Detta bibliotek är tomt'; @override String get all => 'Alla'; @override String get clearAll => 'Rensa alla'; @override String scanLibraryConfirm({required Object title}) => 'Är du säker på att du vill skanna "${title}"?'; @override String analyzeLibraryConfirm({required Object title}) => 'Är du säker på att du vill analysera "${title}"?'; @override String refreshMetadataConfirm({required Object title}) => 'Är du säker på att du vill uppdatera metadata för "${title}"?'; @override String emptyTrashConfirm({required Object title}) => 'Är du säker på att du vill tömma papperskorgen för "${title}"?'; @override String get manageLibraries => 'Hantera bibliotek'; @override String get sort => 'Sortera'; @override String get sortBy => 'Sortera efter'; @override String get filters => 'Filter'; @override String get confirmActionMessage => 'Är du säker på att du vill utföra denna åtgärd?'; @override String get showLibrary => 'Visa bibliotek'; @override String get hideLibrary => 'Dölj bibliotek'; @override String get libraryOptions => 'Biblioteksalternativ'; @override String get content => 'bibliotekets innehåll'; @override String get selectLibrary => 'Välj bibliotek'; @override String filtersWithCount({required Object count}) => 'Filter (${count})'; @override String get noRecommendations => 'Inga rekommendationer tillgängliga'; @override String get noCollections => 'Inga samlingar i det här biblioteket'; @override String get noFoldersFound => 'Inga mappar hittades'; @override String get folders => 'mappar'; @override late final _StringsLibrariesTabsSv tabs = _StringsLibrariesTabsSv._(_root); @override late final _StringsLibrariesGroupingsSv groupings = _StringsLibrariesGroupingsSv._(_root); } // Path: about class _StringsAboutSv implements _StringsAboutEn { _StringsAboutSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Om'; @override String get openSourceLicenses => 'Öppen källkod-licenser'; @override String versionLabel({required Object version}) => 'Version ${version}'; @override String get appDescription => 'En vacker Plex-klient för Flutter'; @override String get viewLicensesDescription => 'Visa licenser för tredjepartsbibliotek'; } // Path: serverSelection class _StringsServerSelectionSv implements _StringsServerSelectionEn { _StringsServerSelectionSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get allServerConnectionsFailed => 'Misslyckades att ansluta till servrar. Kontrollera ditt nätverk och försök igen.'; @override String get noServersFound => 'Inga servrar hittades'; @override String noServersFoundForAccount({required Object username, required Object email}) => 'Inga servrar hittades för ${username} (${email})'; @override String failedToLoadServers({required Object error}) => 'Misslyckades att ladda servrar: ${error}'; } // Path: hubDetail class _StringsHubDetailSv implements _StringsHubDetailEn { _StringsHubDetailSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Titel'; @override String get releaseYear => 'Utgivningsår'; @override String get dateAdded => 'Datum tillagd'; @override String get rating => 'Betyg'; @override String get noItemsFound => 'Inga objekt hittades'; } // Path: logs class _StringsLogsSv implements _StringsLogsEn { _StringsLogsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get clearLogs => 'Rensa loggar'; @override String get copyLogs => 'Kopiera loggar'; @override String get error => 'Fel:'; @override String get stackTrace => 'Stack trace:'; } // Path: licenses class _StringsLicensesSv implements _StringsLicensesEn { _StringsLicensesSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get relatedPackages => 'Relaterade paket'; @override String get license => 'Licens'; @override String licenseNumber({required Object number}) => 'Licens ${number}'; @override String licensesCount({required Object count}) => '${count} licenser'; } // Path: navigation class _StringsNavigationSv implements _StringsNavigationEn { _StringsNavigationSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get home => 'Hem'; @override String get search => 'Sök'; @override String get libraries => 'Bibliotek'; @override String get settings => 'Inställningar'; @override String get downloads => 'Nedladdningar'; } // Path: downloads class _StringsDownloadsSv implements _StringsDownloadsEn { _StringsDownloadsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Nedladdningar'; @override String get manage => 'Hantera'; @override String get tvShows => 'TV-serier'; @override String get movies => 'Filmer'; @override String get noDownloads => 'Inga nedladdningar ännu'; @override String get noDownloadsDescription => 'Nedladdat innehåll visas här för offline-visning'; @override String get downloadNow => 'Ladda ner'; @override String get deleteDownload => 'Ta bort nedladdning'; @override String get retryDownload => 'Försök igen'; @override String get downloadQueued => 'Nedladdning köad'; @override String episodesQueued({required Object count}) => '${count} avsnitt köade för nedladdning'; @override String get downloadDeleted => 'Nedladdning borttagen'; @override String deleteConfirm({required Object title}) => 'Är du säker på att du vill ta bort "${title}"? Den nedladdade filen kommer att tas bort från din enhet.'; @override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Tar bort ${title}... (${current} av ${total})'; } // Path: playlists class _StringsPlaylistsSv implements _StringsPlaylistsEn { _StringsPlaylistsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Spellistor'; @override String get noPlaylists => 'Inga spellistor hittades'; @override String get create => 'Skapa spellista'; @override String get playlistName => 'Spellistans namn'; @override String get enterPlaylistName => 'Ange spellistans namn'; @override String get delete => 'Ta bort spellista'; @override String get removeItem => 'Ta bort från spellista'; @override String get smartPlaylist => 'Smart spellista'; @override String itemCount({required Object count}) => '${count} objekt'; @override String get oneItem => '1 objekt'; @override String get emptyPlaylist => 'Denna spellista är tom'; @override String get deleteConfirm => 'Ta bort spellista?'; @override String deleteMessage({required Object name}) => 'Är du säker på att du vill ta bort "${name}"?'; @override String get created => 'Spellista skapad'; @override String get deleted => 'Spellista borttagen'; @override String get itemAdded => 'Tillagd i spellista'; @override String get itemRemoved => 'Borttagen från spellista'; @override String get selectPlaylist => 'Välj spellista'; @override String get createNewPlaylist => 'Skapa ny spellista'; @override String get errorCreating => 'Det gick inte att skapa spellista'; @override String get errorDeleting => 'Det gick inte att ta bort spellista'; @override String get errorLoading => 'Det gick inte att ladda spellistor'; @override String get errorAdding => 'Det gick inte att lägga till i spellista'; @override String get errorReordering => 'Det gick inte att omordna spellisteobjekt'; @override String get errorRemoving => 'Det gick inte att ta bort från spellista'; @override String get playlist => 'Spellista'; } // Path: collections class _StringsCollectionsSv implements _StringsCollectionsEn { _StringsCollectionsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get title => 'Samlingar'; @override String get collection => 'Samling'; @override String get empty => 'Samlingen är tom'; @override String get unknownLibrarySection => 'Kan inte ta bort: okänd bibliotekssektion'; @override String get deleteCollection => 'Ta bort samling'; @override String deleteConfirm({required Object title}) => 'Är du säker på att du vill ta bort "${title}"? Detta går inte att ångra.'; @override String get deleted => 'Samling borttagen'; @override String get deleteFailed => 'Det gick inte att ta bort samlingen'; @override String deleteFailedWithError({required Object error}) => 'Det gick inte att ta bort samlingen: ${error}'; @override String failedToLoadItems({required Object error}) => 'Det gick inte att läsa in samlingsobjekt: ${error}'; @override String get selectCollection => 'Välj samling'; @override String get createNewCollection => 'Skapa ny samling'; @override String get collectionName => 'Samlingsnamn'; @override String get enterCollectionName => 'Ange samlingsnamn'; @override String get addedToCollection => 'Tillagd i samling'; @override String get errorAddingToCollection => 'Fel vid tillägg i samling'; @override String get created => 'Samling skapad'; @override String get removeFromCollection => 'Ta bort från samling'; @override String removeFromCollectionConfirm({required Object title}) => 'Ta bort "${title}" från denna samling?'; @override String get removedFromCollection => 'Borttagen från samling'; @override String get removeFromCollectionFailed => 'Misslyckades med att ta bort från samling'; @override String removeFromCollectionError({required Object error}) => 'Fel vid borttagning från samling: ${error}'; } // Path: libraries.tabs class _StringsLibrariesTabsSv implements _StringsLibrariesTabsEn { _StringsLibrariesTabsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get recommended => 'Rekommenderat'; @override String get browse => 'Bläddra'; @override String get collections => 'Samlingar'; @override String get playlists => 'Spellistor'; } // Path: libraries.groupings class _StringsLibrariesGroupingsSv implements _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsSv._(this._root); @override final _StringsSv _root; // ignore: unused_field // Translations @override String get all => 'Alla'; @override String get movies => 'Filmer'; @override String get shows => 'Serier'; @override String get seasons => 'Säsonger'; @override String get episodes => 'Avsnitt'; @override String get folders => 'Mappar'; } // Path: class _StringsZh implements Translations { /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. _StringsZh.build({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = TranslationMetadata( locale: AppLocale.zh, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map @override dynamic operator[](String key) => $meta.getTranslation(key); @override late final _StringsZh _root = this; // ignore: unused_field // Translations @override late final _StringsAppZh app = _StringsAppZh._(_root); @override late final _StringsAuthZh auth = _StringsAuthZh._(_root); @override late final _StringsCommonZh common = _StringsCommonZh._(_root); @override late final _StringsScreensZh screens = _StringsScreensZh._(_root); @override late final _StringsUpdateZh update = _StringsUpdateZh._(_root); @override late final _StringsSettingsZh settings = _StringsSettingsZh._(_root); @override late final _StringsSearchZh search = _StringsSearchZh._(_root); @override late final _StringsHotkeysZh hotkeys = _StringsHotkeysZh._(_root); @override late final _StringsPinEntryZh pinEntry = _StringsPinEntryZh._(_root); @override late final _StringsFileInfoZh fileInfo = _StringsFileInfoZh._(_root); @override late final _StringsMediaMenuZh mediaMenu = _StringsMediaMenuZh._(_root); @override late final _StringsAccessibilityZh accessibility = _StringsAccessibilityZh._(_root); @override late final _StringsTooltipsZh tooltips = _StringsTooltipsZh._(_root); @override late final _StringsVideoControlsZh videoControls = _StringsVideoControlsZh._(_root); @override late final _StringsUserStatusZh userStatus = _StringsUserStatusZh._(_root); @override late final _StringsMessagesZh messages = _StringsMessagesZh._(_root); @override late final _StringsSubtitlingStylingZh subtitlingStyling = _StringsSubtitlingStylingZh._(_root); @override late final _StringsDialogZh dialog = _StringsDialogZh._(_root); @override late final _StringsDiscoverZh discover = _StringsDiscoverZh._(_root); @override late final _StringsErrorsZh errors = _StringsErrorsZh._(_root); @override late final _StringsLibrariesZh libraries = _StringsLibrariesZh._(_root); @override late final _StringsAboutZh about = _StringsAboutZh._(_root); @override late final _StringsServerSelectionZh serverSelection = _StringsServerSelectionZh._(_root); @override late final _StringsHubDetailZh hubDetail = _StringsHubDetailZh._(_root); @override late final _StringsLogsZh logs = _StringsLogsZh._(_root); @override late final _StringsLicensesZh licenses = _StringsLicensesZh._(_root); @override late final _StringsNavigationZh navigation = _StringsNavigationZh._(_root); @override late final _StringsDownloadsZh downloads = _StringsDownloadsZh._(_root); @override late final _StringsPlaylistsZh playlists = _StringsPlaylistsZh._(_root); @override late final _StringsCollectionsZh collections = _StringsCollectionsZh._(_root); } // Path: app class _StringsAppZh implements _StringsAppEn { _StringsAppZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => 'Plezy'; @override String get loading => '加载中...'; } // Path: auth class _StringsAuthZh implements _StringsAuthEn { _StringsAuthZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get signInWithPlex => '使用 Plex 登录'; @override String get showQRCode => '显示二维码'; @override String get cancel => '取消'; @override String get authenticate => '验证'; @override String get retry => '重试'; @override String get debugEnterToken => '调试:输入 Plex Token'; @override String get plexTokenLabel => 'Plex 授权令牌 (Auth Token)'; @override String get plexTokenHint => '输入你的 Plex.tv 令牌'; @override String get authenticationTimeout => '验证超时。请重试。'; @override String get scanQRCodeInstruction => '请使用已登录 Plex 的设备扫描此二维码进行验证。'; @override String get waitingForAuth => '等待验证中...\n请在你的浏览器中完成登录。'; } // Path: common class _StringsCommonZh implements _StringsCommonEn { _StringsCommonZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get cancel => '取消'; @override String get save => '保存'; @override String get close => '关闭'; @override String get clear => '清除'; @override String get reset => '重置'; @override String get later => '稍后'; @override String get submit => '提交'; @override String get confirm => '确认'; @override String get retry => '重试'; @override String get logout => '登出'; @override String get unknown => '未知'; @override String get refresh => '刷新'; @override String get yes => '是'; @override String get no => '否'; @override String get delete => '删除'; @override String get shuffle => '随机播放'; @override String get addTo => '添加到...'; } // Path: screens class _StringsScreensZh implements _StringsScreensEn { _StringsScreensZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get licenses => '许可证'; @override String get selectServer => '选择服务器'; @override String get switchProfile => '切换配置文件'; @override String get subtitleStyling => '字幕样式'; @override String get search => '搜索'; @override String get logs => '日志'; } // Path: update class _StringsUpdateZh implements _StringsUpdateEn { _StringsUpdateZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get available => '有可用更新'; @override String versionAvailable({required Object version}) => '版本 ${version} 已发布'; @override String currentVersion({required Object version}) => '当前版本: ${version}'; @override String get skipVersion => '跳过此版本'; @override String get viewRelease => '查看发布详情'; @override String get latestVersion => '已安装的版本是可用的最新版本'; @override String get checkFailed => '无法检查更新'; } // Path: settings class _StringsSettingsZh implements _StringsSettingsEn { _StringsSettingsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '设置'; @override String get language => '语言'; @override String get theme => '主题'; @override String get appearance => '外观'; @override String get videoPlayback => '视频播放'; @override String get advanced => '高级'; @override String get useSeasonPostersDescription => '为剧集显示季海报而非剧集海报'; @override String get showHeroSectionDescription => '在主屏幕上显示精选内容轮播区'; @override String get secondsLabel => '秒'; @override String get minutesLabel => '分钟'; @override String get secondsShort => 's'; @override String get minutesShort => 'm'; @override String durationHint({required Object min, required Object max}) => '输入时长 (${min}-${max})'; @override String get systemTheme => '系统'; @override String get systemThemeDescription => '跟随系统设置'; @override String get lightTheme => '浅色'; @override String get darkTheme => '深色'; @override String get libraryDensity => '媒体库密度'; @override String get compact => '紧凑'; @override String get compactDescription => '卡片更小,显示更多项目'; @override String get normal => '标准'; @override String get normalDescription => '默认尺寸'; @override String get comfortable => '舒适'; @override String get comfortableDescription => '卡片更大,显示更少项目'; @override String get viewMode => '视图模式'; @override String get gridView => '网格视图'; @override String get gridViewDescription => '以网格布局显示项目'; @override String get listView => '列表视图'; @override String get listViewDescription => '以列表布局显示项目'; @override String get useSeasonPosters => '使用季海报'; @override String get showHeroSection => '显示主要精选区'; @override String get hardwareDecoding => '硬件解码'; @override String get hardwareDecodingDescription => '如果可用,使用硬件加速'; @override String get bufferSize => '缓冲区大小'; @override String bufferSizeMB({required Object size}) => '${size}MB'; @override String get subtitleStyling => '字幕样式'; @override String get subtitleStylingDescription => '调整字幕外观'; @override String get smallSkipDuration => '短跳过时长'; @override String get largeSkipDuration => '长跳过时长'; @override String secondsUnit({required Object seconds}) => '${seconds} 秒'; @override String get defaultSleepTimer => '默认睡眠定时器'; @override String minutesUnit({required Object minutes}) => '${minutes} 分钟'; @override String get rememberTrackSelections => '记住每个剧集/电影的音轨选择'; @override String get rememberTrackSelectionsDescription => '在播放过程中更改音轨时自动保存音频和字幕语言偏好'; @override String get videoPlayerControls => '视频播放器控制'; @override String get keyboardShortcuts => '键盘快捷键'; @override String get keyboardShortcutsDescription => '自定义键盘快捷键'; @override String get videoPlayerNavigation => '视频播放器导航'; @override String get videoPlayerNavigationDescription => '使用方向键导航视频播放器控件'; @override String get debugLogging => '调试日志'; @override String get debugLoggingDescription => '启用详细日志记录以便故障排除'; @override String get viewLogs => '查看日志'; @override String get viewLogsDescription => '查看应用程序日志'; @override String get clearCache => '清除缓存'; @override String get clearCacheDescription => '这将清除所有缓存的图片和数据。清除缓存后,应用程序加载内容可能会变慢。'; @override String get clearCacheSuccess => '缓存清除成功'; @override String get resetSettings => '重置设置'; @override String get resetSettingsDescription => '这会将所有设置重置为其默认值。此操作无法撤销。'; @override String get resetSettingsSuccess => '设置重置成功'; @override String get shortcutsReset => '快捷键已重置为默认值'; @override String get about => '关于'; @override String get aboutDescription => '应用程序信息和许可证'; @override String get updates => '更新'; @override String get updateAvailable => '有可用更新'; @override String get checkForUpdates => '检查更新'; @override String get validationErrorEnterNumber => '请输入一个有效的数字'; @override String validationErrorDuration({required Object min, required Object max, required Object unit}) => '时长必须介于 ${min} 和 ${max} ${unit} 之间'; @override String shortcutAlreadyAssigned({required Object action}) => '快捷键已被分配给 ${action}'; @override String shortcutUpdated({required Object action}) => '快捷键已为 ${action} 更新'; @override String get autoSkip => '自动跳过'; @override String get autoSkipIntro => '自动跳过片头'; @override String get autoSkipIntroDescription => '几秒钟后自动跳过片头标记'; @override String get autoSkipCredits => '自动跳过片尾'; @override String get autoSkipCreditsDescription => '自动跳过片尾并播放下一集'; @override String get autoSkipDelay => '自动跳过延迟'; @override String autoSkipDelayDescription({required Object seconds}) => '自动跳过前等待 ${seconds} 秒'; @override String get downloads => '下载'; @override String get downloadLocationDescription => '选择下载内容的存储位置'; @override String get downloadLocationDefault => '默认(应用存储)'; @override String get downloadLocationCustom => '自定义位置'; @override String get selectFolder => '选择文件夹'; @override String get resetToDefault => '重置为默认'; @override String currentPath({required Object path}) => '当前: ${path}'; @override String get downloadLocationChanged => '下载位置已更改'; @override String get downloadLocationReset => '下载位置已重置为默认'; @override String get downloadLocationInvalid => '所选文件夹不可写入'; @override String get downloadLocationSelectError => '选择文件夹失败'; @override String get downloadOnWifiOnly => '仅在 WiFi 时下载'; @override String get downloadOnWifiOnlyDescription => '使用蜂窝数据时禁止下载'; @override String get cellularDownloadBlocked => '蜂窝数据下已禁用下载。请连接 WiFi 或更改设置。'; } // Path: search class _StringsSearchZh implements _StringsSearchEn { _StringsSearchZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get hint => '搜索电影、系列、音乐...'; @override String get tryDifferentTerm => '尝试不同的搜索词'; @override String get searchYourMedia => '搜索媒体'; @override String get enterTitleActorOrKeyword => '输入标题、演员或关键词'; } // Path: hotkeys class _StringsHotkeysZh implements _StringsHotkeysEn { _StringsHotkeysZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String setShortcutFor({required Object actionName}) => '为 ${actionName} 设置快捷键'; @override String get clearShortcut => '清除快捷键'; } // Path: pinEntry class _StringsPinEntryZh implements _StringsPinEntryEn { _StringsPinEntryZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get enterPin => '输入 PIN'; @override String get showPin => '显示 PIN'; @override String get hidePin => '隐藏 PIN'; } // Path: fileInfo class _StringsFileInfoZh implements _StringsFileInfoEn { _StringsFileInfoZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '文件信息'; @override String get video => '视频'; @override String get audio => '音频'; @override String get file => '文件'; @override String get advanced => '高级'; @override String get codec => '编解码器'; @override String get resolution => '分辨率'; @override String get bitrate => '比特率'; @override String get frameRate => '帧率'; @override String get aspectRatio => '宽高比'; @override String get profile => '配置文件'; @override String get bitDepth => '位深度'; @override String get colorSpace => '色彩空间'; @override String get colorRange => '色彩范围'; @override String get colorPrimaries => '颜色原色'; @override String get chromaSubsampling => '色度子采样'; @override String get channels => '声道'; @override String get path => '路径'; @override String get size => '大小'; @override String get container => '容器'; @override String get duration => '时长'; @override String get optimizedForStreaming => '已优化用于流媒体'; @override String get has64bitOffsets => '64位偏移量'; } // Path: mediaMenu class _StringsMediaMenuZh implements _StringsMediaMenuEn { _StringsMediaMenuZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get markAsWatched => '标记为已观看'; @override String get markAsUnwatched => '标记为未观看'; @override String get removeFromContinueWatching => '从继续观看中移除'; @override String get goToSeries => '转到系列'; @override String get goToSeason => '转到季'; @override String get shufflePlay => '随机播放'; @override String get fileInfo => '文件信息'; } // Path: accessibility class _StringsAccessibilityZh implements _StringsAccessibilityEn { _StringsAccessibilityZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String mediaCardMovie({required Object title}) => '${title}, 电影'; @override String mediaCardShow({required Object title}) => '${title}, 电视剧'; @override String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; @override String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; @override String get mediaCardWatched => '已观看'; @override String mediaCardPartiallyWatched({required Object percent}) => '已观看 ${percent} 百分比'; @override String get mediaCardUnwatched => '未观看'; @override String get tapToPlay => '点击播放'; } // Path: tooltips class _StringsTooltipsZh implements _StringsTooltipsEn { _StringsTooltipsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get shufflePlay => '随机播放'; @override String get markAsWatched => '标记为已观看'; @override String get markAsUnwatched => '标记为未观看'; } // Path: videoControls class _StringsVideoControlsZh implements _StringsVideoControlsEn { _StringsVideoControlsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get audioLabel => '音频'; @override String get subtitlesLabel => '字幕'; @override String get resetToZero => '重置为 0ms'; @override String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; @override String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; @override String playsLater({required Object label}) => '${label} 播放较晚'; @override String playsEarlier({required Object label}) => '${label} 播放较早'; @override String get noOffset => '无偏移'; @override String get letterbox => '信箱模式(Letterbox)'; @override String get fillScreen => '填充屏幕'; @override String get stretch => '拉伸'; @override String get lockRotation => '锁定旋转'; @override String get unlockRotation => '解锁旋转'; @override String get sleepTimer => '睡眠定时器'; @override String get timerActive => '定时器已激活'; @override String playbackWillPauseIn({required Object duration}) => '播放将在 ${duration} 后暂停'; @override String get sleepTimerCompleted => '睡眠定时器已完成 - 播放已暂停'; @override String get playButton => '播放'; @override String get pauseButton => '暂停'; @override String seekBackwardButton({required Object seconds}) => '后退 ${seconds} 秒'; @override String seekForwardButton({required Object seconds}) => '前进 ${seconds} 秒'; @override String get previousButton => '上一集'; @override String get nextButton => '下一集'; @override String get previousChapterButton => '上一章节'; @override String get nextChapterButton => '下一章节'; @override String get muteButton => '静音'; @override String get unmuteButton => '取消静音'; @override String get settingsButton => '视频设置'; @override String get audioTrackButton => '音轨'; @override String get subtitlesButton => '字幕'; @override String get chaptersButton => '章节'; @override String get versionsButton => '视频版本'; @override String get aspectRatioButton => '宽高比'; @override String get fullscreenButton => '进入全屏'; @override String get exitFullscreenButton => '退出全屏'; @override String get rotationLockButton => '旋转锁定'; @override String get timelineSlider => '视频时间轴'; @override String get volumeSlider => '音量调节'; @override String get backButton => '返回'; } // Path: userStatus class _StringsUserStatusZh implements _StringsUserStatusEn { _StringsUserStatusZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get admin => '管理员'; @override String get restricted => '受限'; @override String get protected => '受保护'; @override String get current => '当前'; } // Path: messages class _StringsMessagesZh implements _StringsMessagesEn { _StringsMessagesZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get markedAsWatched => '已标记为已观看'; @override String get markedAsUnwatched => '已标记为未观看'; @override String get markedAsWatchedOffline => '已标记为已观看 (将在联网时同步)'; @override String get markedAsUnwatchedOffline => '已标记为未观看 (将在联网时同步)'; @override String get removedFromContinueWatching => '已从继续观看中移除'; @override String errorLoading({required Object error}) => '错误: ${error}'; @override String get fileInfoNotAvailable => '文件信息不可用'; @override String errorLoadingFileInfo({required Object error}) => '加载文件信息时出错: ${error}'; @override String get errorLoadingSeries => '加载系列时出错'; @override String get errorLoadingSeason => '加载季时出错'; @override String get musicNotSupported => '尚不支持播放音乐'; @override String get logsCleared => '日志已清除'; @override String get logsCopied => '日志已复制到剪贴板'; @override String get noLogsAvailable => '没有可用日志'; @override String libraryScanning({required Object title}) => '正在扫描 “${title}”...'; @override String libraryScanStarted({required Object title}) => '已开始扫描 “${title}” 媒体库'; @override String libraryScanFailed({required Object error}) => '无法扫描媒体库: ${error}'; @override String metadataRefreshing({required Object title}) => '正在刷新 “${title}” 的元数据...'; @override String metadataRefreshStarted({required Object title}) => '已开始刷新 “${title}” 的元数据'; @override String metadataRefreshFailed({required Object error}) => '无法刷新元数据: ${error}'; @override String get logoutConfirm => '你确定要登出吗?'; @override String get noSeasonsFound => '未找到季'; @override String get noEpisodesFound => '在第一季中未找到剧集'; @override String get noEpisodesFoundGeneral => '未找到剧集'; @override String get noResultsFound => '未找到结果'; @override String sleepTimerSet({required Object label}) => '睡眠定时器已设置为 ${label}'; @override String get noItemsAvailable => '没有可用的项目'; @override String get failedToCreatePlayQueue => '创建播放队列失败'; @override String get failedToCreatePlayQueueNoItems => '创建播放队列失败 - 没有项目'; @override String failedPlayback({required Object action, required Object error}) => '无法${action}: ${error}'; @override String get youAreOffline => '您已离线'; @override String get offlineFeatureUnavailable => '此功能需要网络连接。您的下载内容和设置仍然可用。'; } // Path: subtitlingStyling class _StringsSubtitlingStylingZh implements _StringsSubtitlingStylingEn { _StringsSubtitlingStylingZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get stylingOptions => '样式选项'; @override String get fontSize => '字号'; @override String get textColor => '文本颜色'; @override String get borderSize => '边框大小'; @override String get borderColor => '边框颜色'; @override String get backgroundOpacity => '背景不透明度'; @override String get backgroundColor => '背景颜色'; } // Path: dialog class _StringsDialogZh implements _StringsDialogEn { _StringsDialogZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get confirmAction => '确认操作'; @override String get cancel => '取消'; @override String get playNow => '立即播放'; } // Path: discover class _StringsDiscoverZh implements _StringsDiscoverEn { _StringsDiscoverZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '发现'; @override String get switchProfile => '切换配置文件'; @override String get switchServer => '切换服务器'; @override String get logout => '登出'; @override String get noContentAvailable => '没有可用内容'; @override String get addMediaToLibraries => '请向你的媒体库添加一些媒体'; @override String get continueWatching => '继续观看'; @override String get play => '播放'; @override String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; @override String get pause => '暂停'; @override String get overview => '概述'; @override String get cast => '演员表'; @override String get seasons => '季数'; @override String get studio => '制作公司'; @override String get rating => '年龄分级'; @override String get watched => '已观看'; @override String episodeCount({required Object count}) => '${count} 集'; @override String watchedProgress({required Object watched, required Object total}) => '已观看 ${watched}/${total} 集'; @override String get movie => '电影'; @override String get tvShow => '电视剧'; @override String minutesLeft({required Object minutes}) => '剩余 ${minutes} 分钟'; } // Path: errors class _StringsErrorsZh implements _StringsErrorsEn { _StringsErrorsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String searchFailed({required Object error}) => '搜索失败: ${error}'; @override String connectionTimeout({required Object context}) => '加载 ${context} 时连接超时'; @override String get connectionFailed => '无法连接到 Plex 服务器'; @override String failedToLoad({required Object context, required Object error}) => '无法加载 ${context}: ${error}'; @override String get noClientAvailable => '没有可用客户端'; @override String authenticationFailed({required Object error}) => '验证失败: ${error}'; @override String get couldNotLaunchUrl => '无法打开授权 URL'; @override String get pleaseEnterToken => '请输入一个令牌'; @override String get invalidToken => '令牌无效'; @override String failedToVerifyToken({required Object error}) => '无法验证令牌: ${error}'; @override String failedToSwitchProfile({required Object displayName}) => '无法切换到 ${displayName}'; } // Path: libraries class _StringsLibrariesZh implements _StringsLibrariesEn { _StringsLibrariesZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '媒体库'; @override String get scanLibraryFiles => '扫描媒体库文件'; @override String get scanLibrary => '扫描媒体库'; @override String get analyze => '分析'; @override String get analyzeLibrary => '分析媒体库'; @override String get refreshMetadata => '刷新元数据'; @override String get emptyTrash => '清空回收站'; @override String emptyingTrash({required Object title}) => '正在清空 “${title}” 的回收站...'; @override String trashEmptied({required Object title}) => '已清空 “${title}” 的回收站'; @override String failedToEmptyTrash({required Object error}) => '无法清空回收站: ${error}'; @override String analyzing({required Object title}) => '正在分析 “${title}”...'; @override String analysisStarted({required Object title}) => '已开始分析 “${title}”'; @override String failedToAnalyze({required Object error}) => '无法分析媒体库: ${error}'; @override String get noLibrariesFound => '未找到媒体库'; @override String get thisLibraryIsEmpty => '此媒体库为空'; @override String get all => '全部'; @override String get clearAll => '全部清除'; @override String scanLibraryConfirm({required Object title}) => '确定要扫描 “${title}” 吗?'; @override String analyzeLibraryConfirm({required Object title}) => '确定要分析 “${title}” 吗?'; @override String refreshMetadataConfirm({required Object title}) => '确定要刷新 “${title}” 的元数据吗?'; @override String emptyTrashConfirm({required Object title}) => '确定要清空 “${title}” 的回收站吗?'; @override String get manageLibraries => '管理媒体库'; @override String get sort => '排序'; @override String get sortBy => '排序依据'; @override String get filters => '筛选器'; @override String get confirmActionMessage => '确定要执行此操作吗?'; @override String get showLibrary => '显示媒体库'; @override String get hideLibrary => '隐藏媒体库'; @override String get libraryOptions => '媒体库选项'; @override String get content => '媒体库内容'; @override String get selectLibrary => '选择媒体库'; @override String filtersWithCount({required Object count}) => '筛选器(${count})'; @override String get noRecommendations => '暂无推荐'; @override String get noCollections => '此媒体库中没有合集'; @override String get noFoldersFound => '未找到文件夹'; @override String get folders => '文件夹'; @override late final _StringsLibrariesTabsZh tabs = _StringsLibrariesTabsZh._(_root); @override late final _StringsLibrariesGroupingsZh groupings = _StringsLibrariesGroupingsZh._(_root); } // Path: about class _StringsAboutZh implements _StringsAboutEn { _StringsAboutZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '关于'; @override String get openSourceLicenses => '开源许可证'; @override String versionLabel({required Object version}) => '版本 ${version}'; @override String get appDescription => '一款精美的 Flutter Plex 客户端'; @override String get viewLicensesDescription => '查看第三方库的许可证'; } // Path: serverSelection class _StringsServerSelectionZh implements _StringsServerSelectionEn { _StringsServerSelectionZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get allServerConnectionsFailed => '无法连接到任何服务器。请检查你的网络并重试。'; @override String get noServersFound => '未找到服务器'; @override String noServersFoundForAccount({required Object username, required Object email}) => '未找到 ${username} (${email}) 的服务器'; @override String failedToLoadServers({required Object error}) => '无法加载服务器: ${error}'; } // Path: hubDetail class _StringsHubDetailZh implements _StringsHubDetailEn { _StringsHubDetailZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '标题'; @override String get releaseYear => '发行年份'; @override String get dateAdded => '添加日期'; @override String get rating => '评分'; @override String get noItemsFound => '未找到项目'; } // Path: logs class _StringsLogsZh implements _StringsLogsEn { _StringsLogsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get clearLogs => '清除日志'; @override String get copyLogs => '复制日志'; @override String get error => '错误:'; @override String get stackTrace => '堆栈跟踪 (Stack Trace):'; } // Path: licenses class _StringsLicensesZh implements _StringsLicensesEn { _StringsLicensesZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get relatedPackages => '相关软件包'; @override String get license => '许可证'; @override String licenseNumber({required Object number}) => '许可证 ${number}'; @override String licensesCount({required Object count}) => '${count} 个许可证'; } // Path: navigation class _StringsNavigationZh implements _StringsNavigationEn { _StringsNavigationZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get home => '主页'; @override String get search => '搜索'; @override String get libraries => '媒体库'; @override String get settings => '设置'; @override String get downloads => '下载'; } // Path: downloads class _StringsDownloadsZh implements _StringsDownloadsEn { _StringsDownloadsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '下载'; @override String get manage => '管理'; @override String get tvShows => '电视剧'; @override String get movies => '电影'; @override String get noDownloads => '暂无下载'; @override String get noDownloadsDescription => '下载的内容将在此处显示以供离线观看'; @override String get downloadNow => '下载'; @override String get deleteDownload => '删除下载'; @override String get retryDownload => '重试下载'; @override String get downloadQueued => '下载已排队'; @override String episodesQueued({required Object count}) => '${count} 集已加入下载队列'; @override String get downloadDeleted => '下载已删除'; @override String deleteConfirm({required Object title}) => '确定要删除 "${title}" 吗?下载的文件将从您的设备中删除。'; @override String deletingWithProgress({required Object title, required Object current, required Object total}) => '正在删除 ${title}... (${current}/${total})'; } // Path: playlists class _StringsPlaylistsZh implements _StringsPlaylistsEn { _StringsPlaylistsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '播放列表'; @override String get noPlaylists => '未找到播放列表'; @override String get create => '创建播放列表'; @override String get playlistName => '播放列表名称'; @override String get enterPlaylistName => '输入播放列表名称'; @override String get delete => '删除播放列表'; @override String get removeItem => '从播放列表中移除'; @override String get smartPlaylist => '智能播放列表'; @override String itemCount({required Object count}) => '${count} 个项目'; @override String get oneItem => '1 个项目'; @override String get emptyPlaylist => '此播放列表为空'; @override String get deleteConfirm => '删除播放列表?'; @override String deleteMessage({required Object name}) => '确定要删除 "${name}" 吗?'; @override String get created => '播放列表已创建'; @override String get deleted => '播放列表已删除'; @override String get itemAdded => '已添加到播放列表'; @override String get itemRemoved => '已从播放列表中移除'; @override String get selectPlaylist => '选择播放列表'; @override String get createNewPlaylist => '创建新播放列表'; @override String get errorCreating => '创建播放列表失败'; @override String get errorDeleting => '删除播放列表失败'; @override String get errorLoading => '加载播放列表失败'; @override String get errorAdding => '添加到播放列表失败'; @override String get errorReordering => '重新排序播放列表项目失败'; @override String get errorRemoving => '从播放列表中移除失败'; @override String get playlist => '播放列表'; } // Path: collections class _StringsCollectionsZh implements _StringsCollectionsEn { _StringsCollectionsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get title => '合集'; @override String get collection => '合集'; @override String get empty => '合集为空'; @override String get unknownLibrarySection => '无法删除:未知的媒体库分区'; @override String get deleteCollection => '删除合集'; @override String deleteConfirm({required Object title}) => '确定要删除"${title}"吗?此操作无法撤销。'; @override String get deleted => '已删除合集'; @override String get deleteFailed => '删除合集失败'; @override String deleteFailedWithError({required Object error}) => '删除合集失败:${error}'; @override String failedToLoadItems({required Object error}) => '加载合集项目失败:${error}'; @override String get selectCollection => '选择合集'; @override String get createNewCollection => '创建新合集'; @override String get collectionName => '合集名称'; @override String get enterCollectionName => '输入合集名称'; @override String get addedToCollection => '已添加到合集'; @override String get errorAddingToCollection => '添加到合集失败'; @override String get created => '已创建合集'; @override String get removeFromCollection => '从合集移除'; @override String removeFromCollectionConfirm({required Object title}) => '将“${title}”从此合集移除?'; @override String get removedFromCollection => '已从合集移除'; @override String get removeFromCollectionFailed => '从合集移除失败'; @override String removeFromCollectionError({required Object error}) => '从合集移除时出错:${error}'; } // Path: libraries.tabs class _StringsLibrariesTabsZh implements _StringsLibrariesTabsEn { _StringsLibrariesTabsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get recommended => '推荐'; @override String get browse => '浏览'; @override String get collections => '合集'; @override String get playlists => '播放列表'; } // Path: libraries.groupings class _StringsLibrariesGroupingsZh implements _StringsLibrariesGroupingsEn { _StringsLibrariesGroupingsZh._(this._root); @override final _StringsZh _root; // ignore: unused_field // Translations @override String get all => '全部'; @override String get movies => '电影'; @override String get shows => '剧集'; @override String get seasons => '季'; @override String get episodes => '集'; @override String get folders => '文件夹'; } /// Flat map(s) containing all translations. /// Only for edge cases! For simple maps, use the map function of this library. extension on Translations { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return 'Loading...'; case 'auth.signInWithPlex': return 'Sign in with Plex'; case 'auth.showQRCode': return 'Show QR Code'; case 'auth.cancel': return 'Cancel'; case 'auth.authenticate': return 'Authenticate'; case 'auth.retry': return 'Retry'; case 'auth.debugEnterToken': return 'Debug: Enter Plex Token'; case 'auth.plexTokenLabel': return 'Plex Auth Token'; case 'auth.plexTokenHint': return 'Enter your Plex.tv token'; case 'auth.authenticationTimeout': return 'Authentication timed out. Please try again.'; case 'auth.scanQRCodeInstruction': return 'Scan this QR code with a device logged into Plex to authenticate.'; case 'auth.waitingForAuth': return 'Waiting for authentication...\nPlease complete sign-in in your browser.'; case 'common.cancel': return 'Cancel'; case 'common.save': return 'Save'; case 'common.close': return 'Close'; case 'common.clear': return 'Clear'; case 'common.reset': return 'Reset'; case 'common.later': return 'Later'; case 'common.submit': return 'Submit'; case 'common.confirm': return 'Confirm'; case 'common.retry': return 'Retry'; case 'common.logout': return 'Logout'; case 'common.unknown': return 'Unknown'; case 'common.refresh': return 'Refresh'; case 'common.yes': return 'Yes'; case 'common.no': return 'No'; case 'common.delete': return 'Delete'; case 'common.shuffle': return 'Shuffle'; case 'common.addTo': return 'Add to...'; case 'screens.licenses': return 'Licenses'; case 'screens.switchProfile': return 'Switch Profile'; case 'screens.subtitleStyling': return 'Subtitle Styling'; case 'screens.search': return 'Search'; case 'screens.logs': return 'Logs'; case 'update.available': return 'Update Available'; case 'update.versionAvailable': return ({required Object version}) => 'Version ${version} is available'; case 'update.currentVersion': return ({required Object version}) => 'Current: ${version}'; case 'update.skipVersion': return 'Skip This Version'; case 'update.viewRelease': return 'View Release'; case 'update.latestVersion': return 'You are on the latest version'; case 'update.checkFailed': return 'Failed to check for updates'; case 'settings.title': return 'Settings'; case 'settings.language': return 'Language'; case 'settings.theme': return 'Theme'; case 'settings.appearance': return 'Appearance'; case 'settings.videoPlayback': return 'Video Playback'; case 'settings.advanced': return 'Advanced'; case 'settings.useSeasonPostersDescription': return 'Show season poster instead of series poster for episodes'; case 'settings.showHeroSectionDescription': return 'Display featured content carousel on home screen'; case 'settings.secondsLabel': return 'Seconds'; case 'settings.minutesLabel': return 'Minutes'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => 'Enter duration (${min}-${max})'; case 'settings.systemTheme': return 'System'; case 'settings.systemThemeDescription': return 'Follow system settings'; case 'settings.lightTheme': return 'Light'; case 'settings.darkTheme': return 'Dark'; case 'settings.libraryDensity': return 'Library Density'; case 'settings.compact': return 'Compact'; case 'settings.compactDescription': return 'Smaller cards, more items visible'; case 'settings.normal': return 'Normal'; case 'settings.normalDescription': return 'Default size'; case 'settings.comfortable': return 'Comfortable'; case 'settings.comfortableDescription': return 'Larger cards, fewer items visible'; case 'settings.viewMode': return 'View Mode'; case 'settings.gridView': return 'Grid'; case 'settings.gridViewDescription': return 'Display items in a grid layout'; case 'settings.listView': return 'List'; case 'settings.listViewDescription': return 'Display items in a list layout'; case 'settings.useSeasonPosters': return 'Use Season Posters'; case 'settings.showHeroSection': return 'Show Hero Section'; case 'settings.hardwareDecoding': return 'Hardware Decoding'; case 'settings.hardwareDecodingDescription': return 'Use hardware acceleration when available'; case 'settings.bufferSize': return 'Buffer Size'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return 'Subtitle Styling'; case 'settings.subtitleStylingDescription': return 'Customize subtitle appearance'; case 'settings.smallSkipDuration': return 'Small Skip Duration'; case 'settings.largeSkipDuration': return 'Large Skip Duration'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} seconds'; case 'settings.defaultSleepTimer': return 'Default Sleep Timer'; case 'settings.minutesUnit': return ({required Object minutes}) => '${minutes} minutes'; case 'settings.rememberTrackSelections': return 'Remember track selections per show/movie'; case 'settings.rememberTrackSelectionsDescription': return 'Automatically save audio and subtitle language preferences when you change tracks during playback'; case 'settings.videoPlayerControls': return 'Video Player Controls'; case 'settings.keyboardShortcuts': return 'Keyboard Shortcuts'; case 'settings.keyboardShortcutsDescription': return 'Customize keyboard shortcuts'; case 'settings.videoPlayerNavigation': return 'Video Player Navigation'; case 'settings.videoPlayerNavigationDescription': return 'Use arrow keys to navigate video player controls'; case 'settings.debugLogging': return 'Debug Logging'; case 'settings.debugLoggingDescription': return 'Enable detailed logging for troubleshooting'; case 'settings.viewLogs': return 'View Logs'; case 'settings.viewLogsDescription': return 'View application logs'; case 'settings.clearCache': return 'Clear Cache'; case 'settings.clearCacheDescription': return 'This will clear all cached images and data. The app may take longer to load content after clearing the cache.'; case 'settings.clearCacheSuccess': return 'Cache cleared successfully'; case 'settings.resetSettings': return 'Reset Settings'; case 'settings.resetSettingsDescription': return 'This will reset all settings to their default values. This action cannot be undone.'; case 'settings.resetSettingsSuccess': return 'Settings reset successfully'; case 'settings.shortcutsReset': return 'Shortcuts reset to defaults'; case 'settings.about': return 'About'; case 'settings.aboutDescription': return 'App information and licenses'; case 'settings.updates': return 'Updates'; case 'settings.updateAvailable': return 'Update Available'; case 'settings.checkForUpdates': return 'Check for Updates'; case 'settings.validationErrorEnterNumber': return 'Please enter a valid number'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => 'Duration must be between ${min} and ${max} ${unit}'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => 'Shortcut already assigned to ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => 'Shortcut updated for ${action}'; case 'settings.autoSkip': return 'Auto Skip'; case 'settings.autoSkipIntro': return 'Auto Skip Intro'; case 'settings.autoSkipIntroDescription': return 'Automatically skip intro markers after a few seconds'; case 'settings.autoSkipCredits': return 'Auto Skip Credits'; case 'settings.autoSkipCreditsDescription': return 'Automatically skip credits and play next episode'; case 'settings.autoSkipDelay': return 'Auto Skip Delay'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => 'Wait ${seconds} seconds before auto-skipping'; case 'settings.downloads': return 'Downloads'; case 'settings.downloadLocationDescription': return 'Choose where to store downloaded content'; case 'settings.downloadLocationDefault': return 'Default (App Storage)'; case 'settings.downloadLocationCustom': return 'Custom Location'; case 'settings.selectFolder': return 'Select Folder'; case 'settings.resetToDefault': return 'Reset to Default'; case 'settings.currentPath': return ({required Object path}) => 'Current: ${path}'; case 'settings.downloadLocationChanged': return 'Download location changed'; case 'settings.downloadLocationReset': return 'Download location reset to default'; case 'settings.downloadLocationInvalid': return 'Selected folder is not writable'; case 'settings.downloadLocationSelectError': return 'Failed to select folder'; case 'settings.downloadOnWifiOnly': return 'Download on WiFi only'; case 'settings.downloadOnWifiOnlyDescription': return 'Prevent downloads when on cellular data'; case 'settings.cellularDownloadBlocked': return 'Downloads are disabled on cellular data. Connect to WiFi or change the setting.'; case 'search.hint': return 'Search movies, shows, music...'; case 'search.tryDifferentTerm': return 'Try a different search term'; case 'search.searchYourMedia': return 'Search your media'; case 'search.enterTitleActorOrKeyword': return 'Enter a title, actor, or keyword'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Set Shortcut for ${actionName}'; case 'hotkeys.clearShortcut': return 'Clear shortcut'; case 'pinEntry.enterPin': return 'Enter PIN'; case 'pinEntry.showPin': return 'Show PIN'; case 'pinEntry.hidePin': return 'Hide PIN'; case 'fileInfo.title': return 'File Info'; case 'fileInfo.video': return 'Video'; case 'fileInfo.audio': return 'Audio'; case 'fileInfo.file': return 'File'; case 'fileInfo.advanced': return 'Advanced'; case 'fileInfo.codec': return 'Codec'; case 'fileInfo.resolution': return 'Resolution'; case 'fileInfo.bitrate': return 'Bitrate'; case 'fileInfo.frameRate': return 'Frame Rate'; case 'fileInfo.aspectRatio': return 'Aspect Ratio'; case 'fileInfo.profile': return 'Profile'; case 'fileInfo.bitDepth': return 'Bit Depth'; case 'fileInfo.colorSpace': return 'Color Space'; case 'fileInfo.colorRange': return 'Color Range'; case 'fileInfo.colorPrimaries': return 'Color Primaries'; case 'fileInfo.chromaSubsampling': return 'Chroma Subsampling'; case 'fileInfo.channels': return 'Channels'; case 'fileInfo.path': return 'Path'; case 'fileInfo.size': return 'Size'; case 'fileInfo.container': return 'Container'; case 'fileInfo.duration': return 'Duration'; case 'fileInfo.optimizedForStreaming': return 'Optimized for Streaming'; case 'fileInfo.has64bitOffsets': return '64-bit Offsets'; case 'mediaMenu.markAsWatched': return 'Mark as Watched'; case 'mediaMenu.markAsUnwatched': return 'Mark as Unwatched'; case 'mediaMenu.removeFromContinueWatching': return 'Remove from Continue Watching'; case 'mediaMenu.goToSeries': return 'Go to series'; case 'mediaMenu.goToSeason': return 'Go to season'; case 'mediaMenu.shufflePlay': return 'Shuffle Play'; case 'mediaMenu.fileInfo': return 'File Info'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, movie'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, TV show'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return 'watched'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '${percent} percent watched'; case 'accessibility.mediaCardUnwatched': return 'unwatched'; case 'accessibility.tapToPlay': return 'Tap to play'; case 'tooltips.shufflePlay': return 'Shuffle play'; case 'tooltips.markAsWatched': return 'Mark as watched'; case 'tooltips.markAsUnwatched': return 'Mark as unwatched'; case 'videoControls.audioLabel': return 'Audio'; case 'videoControls.subtitlesLabel': return 'Subtitles'; case 'videoControls.resetToZero': return 'Reset to 0ms'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} plays later'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} plays earlier'; case 'videoControls.noOffset': return 'No offset'; case 'videoControls.letterbox': return 'Letterbox'; case 'videoControls.fillScreen': return 'Fill screen'; case 'videoControls.stretch': return 'Stretch'; case 'videoControls.lockRotation': return 'Lock rotation'; case 'videoControls.unlockRotation': return 'Unlock rotation'; case 'videoControls.sleepTimer': return 'Sleep Timer'; case 'videoControls.timerActive': return 'Timer Active'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => 'Playback will pause in ${duration}'; case 'videoControls.sleepTimerCompleted': return 'Sleep timer completed - playback paused'; case 'videoControls.playButton': return 'Play'; case 'videoControls.pauseButton': return 'Pause'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => 'Seek backward ${seconds} seconds'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => 'Seek forward ${seconds} seconds'; case 'videoControls.previousButton': return 'Previous episode'; case 'videoControls.nextButton': return 'Next episode'; case 'videoControls.previousChapterButton': return 'Previous chapter'; case 'videoControls.nextChapterButton': return 'Next chapter'; case 'videoControls.muteButton': return 'Mute'; case 'videoControls.unmuteButton': return 'Unmute'; case 'videoControls.settingsButton': return 'Video settings'; case 'videoControls.audioTrackButton': return 'Audio tracks'; case 'videoControls.subtitlesButton': return 'Subtitles'; case 'videoControls.chaptersButton': return 'Chapters'; case 'videoControls.versionsButton': return 'Video versions'; case 'videoControls.aspectRatioButton': return 'Aspect ratio'; case 'videoControls.fullscreenButton': return 'Enter fullscreen'; case 'videoControls.exitFullscreenButton': return 'Exit fullscreen'; case 'videoControls.rotationLockButton': return 'Rotation lock'; case 'videoControls.timelineSlider': return 'Video timeline'; case 'videoControls.volumeSlider': return 'Volume level'; case 'videoControls.backButton': return 'Back'; case 'userStatus.admin': return 'Admin'; case 'userStatus.restricted': return 'Restricted'; case 'userStatus.protected': return 'Protected'; case 'userStatus.current': return 'CURRENT'; case 'messages.markedAsWatched': return 'Marked as watched'; case 'messages.markedAsUnwatched': return 'Marked as unwatched'; case 'messages.markedAsWatchedOffline': return 'Marked as watched (will sync when online)'; case 'messages.markedAsUnwatchedOffline': return 'Marked as unwatched (will sync when online)'; case 'messages.removedFromContinueWatching': return 'Removed from Continue Watching'; case 'messages.errorLoading': return ({required Object error}) => 'Error: ${error}'; case 'messages.fileInfoNotAvailable': return 'File information not available'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => 'Error loading file info: ${error}'; case 'messages.errorLoadingSeries': return 'Error loading series'; case 'messages.errorLoadingSeason': return 'Error loading season'; case 'messages.musicNotSupported': return 'Music playback is not yet supported'; case 'messages.logsCleared': return 'Logs cleared'; case 'messages.logsCopied': return 'Logs copied to clipboard'; case 'messages.noLogsAvailable': return 'No logs available'; case 'messages.libraryScanning': return ({required Object title}) => 'Scanning "${title}"...'; case 'messages.libraryScanStarted': return ({required Object title}) => 'Library scan started for "${title}"'; case 'messages.libraryScanFailed': return ({required Object error}) => 'Failed to scan library: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => 'Refreshing metadata for "${title}"...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => 'Metadata refresh started for "${title}"'; case 'messages.metadataRefreshFailed': return ({required Object error}) => 'Failed to refresh metadata: ${error}'; case 'messages.logoutConfirm': return 'Are you sure you want to logout?'; case 'messages.noSeasonsFound': return 'No seasons found'; case 'messages.noEpisodesFound': return 'No episodes found in first season'; case 'messages.noEpisodesFoundGeneral': return 'No episodes found'; case 'messages.noResultsFound': return 'No results found'; case 'messages.sleepTimerSet': return ({required Object label}) => 'Sleep timer set for ${label}'; case 'messages.noItemsAvailable': return 'No items available'; case 'messages.failedToCreatePlayQueue': return 'Failed to create play queue'; case 'messages.failedToCreatePlayQueueNoItems': return 'Failed to create play queue - no items'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => 'Failed to ${action}: ${error}'; case 'messages.youAreOffline': return 'You\'re Offline'; case 'messages.offlineFeatureUnavailable': return 'This feature requires an internet connection. Your downloads and settings are still available.'; case 'subtitlingStyling.stylingOptions': return 'Styling Options'; case 'subtitlingStyling.fontSize': return 'Font Size'; case 'subtitlingStyling.textColor': return 'Text Color'; case 'subtitlingStyling.borderSize': return 'Border Size'; case 'subtitlingStyling.borderColor': return 'Border Color'; case 'subtitlingStyling.backgroundOpacity': return 'Background Opacity'; case 'subtitlingStyling.backgroundColor': return 'Background Color'; case 'dialog.confirmAction': return 'Confirm Action'; case 'dialog.cancel': return 'Cancel'; case 'dialog.playNow': return 'Play Now'; case 'discover.title': return 'Discover'; case 'discover.switchProfile': return 'Switch Profile'; case 'discover.logout': return 'Logout'; case 'discover.noContentAvailable': return 'No content available'; case 'discover.addMediaToLibraries': return 'Add some media to your libraries'; case 'discover.continueWatching': return 'Continue Watching'; case 'discover.play': return 'Play'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return 'Pause'; case 'discover.overview': return 'Overview'; case 'discover.cast': return 'Cast'; case 'discover.seasons': return 'Seasons'; case 'discover.studio': return 'Studio'; case 'discover.rating': return 'Rating'; case 'discover.watched': return 'Watched'; case 'discover.episodeCount': return ({required Object count}) => '${count} episodes'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '${watched}/${total} watched'; case 'discover.movie': return 'Movie'; case 'discover.tvShow': return 'TV Show'; case 'discover.minutesLeft': return ({required Object minutes}) => '${minutes} min left'; case 'errors.searchFailed': return ({required Object error}) => 'Search failed: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => 'Connection timeout while loading ${context}'; case 'errors.connectionFailed': return 'Unable to connect to Plex server'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => 'Failed to load ${context}: ${error}'; case 'errors.noClientAvailable': return 'No client available'; case 'errors.authenticationFailed': return ({required Object error}) => 'Authentication failed: ${error}'; case 'errors.couldNotLaunchUrl': return 'Could not launch auth URL'; case 'errors.pleaseEnterToken': return 'Please enter a token'; case 'errors.invalidToken': return 'Invalid token'; case 'errors.failedToVerifyToken': return ({required Object error}) => 'Failed to verify token: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => 'Failed to switch to ${displayName}'; case 'libraries.title': return 'Libraries'; case 'libraries.scanLibraryFiles': return 'Scan Library Files'; case 'libraries.scanLibrary': return 'Scan Library'; case 'libraries.analyze': return 'Analyze'; case 'libraries.analyzeLibrary': return 'Analyze Library'; case 'libraries.refreshMetadata': return 'Refresh Metadata'; case 'libraries.emptyTrash': return 'Empty Trash'; case 'libraries.emptyingTrash': return ({required Object title}) => 'Emptying trash for "${title}"...'; case 'libraries.trashEmptied': return ({required Object title}) => 'Trash emptied for "${title}"'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => 'Failed to empty trash: ${error}'; case 'libraries.analyzing': return ({required Object title}) => 'Analyzing "${title}"...'; case 'libraries.analysisStarted': return ({required Object title}) => 'Analysis started for "${title}"'; case 'libraries.failedToAnalyze': return ({required Object error}) => 'Failed to analyze library: ${error}'; case 'libraries.noLibrariesFound': return 'No libraries found'; case 'libraries.thisLibraryIsEmpty': return 'This library is empty'; case 'libraries.all': return 'All'; case 'libraries.clearAll': return 'Clear All'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => 'Are you sure you want to scan "${title}"?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => 'Are you sure you want to analyze "${title}"?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => 'Are you sure you want to refresh metadata for "${title}"?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => 'Are you sure you want to empty trash for "${title}"?'; case 'libraries.manageLibraries': return 'Manage Libraries'; case 'libraries.sort': return 'Sort'; case 'libraries.sortBy': return 'Sort By'; case 'libraries.filters': return 'Filters'; case 'libraries.confirmActionMessage': return 'Are you sure you want to perform this action?'; case 'libraries.showLibrary': return 'Show library'; case 'libraries.hideLibrary': return 'Hide library'; case 'libraries.libraryOptions': return 'Library options'; case 'libraries.content': return 'library content'; case 'libraries.selectLibrary': return 'Select library'; case 'libraries.filtersWithCount': return ({required Object count}) => 'Filters (${count})'; case 'libraries.noRecommendations': return 'No recommendations available'; case 'libraries.noCollections': return 'No collections in this library'; case 'libraries.noFoldersFound': return 'No folders found'; case 'libraries.folders': return 'folders'; case 'libraries.tabs.recommended': return 'Recommended'; case 'libraries.tabs.browse': return 'Browse'; case 'libraries.tabs.collections': return 'Collections'; case 'libraries.tabs.playlists': return 'Playlists'; case 'libraries.groupings.all': return 'All'; case 'libraries.groupings.movies': return 'Movies'; case 'libraries.groupings.shows': return 'TV Shows'; case 'libraries.groupings.seasons': return 'Seasons'; case 'libraries.groupings.episodes': return 'Episodes'; case 'libraries.groupings.folders': return 'Folders'; case 'about.title': return 'About'; case 'about.openSourceLicenses': return 'Open Source Licenses'; case 'about.versionLabel': return ({required Object version}) => 'Version ${version}'; case 'about.appDescription': return 'A beautiful Plex client for Flutter'; case 'about.viewLicensesDescription': return 'View licenses of third-party libraries'; case 'serverSelection.allServerConnectionsFailed': return 'Failed to connect to any servers. Please check your network and try again.'; case 'serverSelection.noServersFound': return 'No servers found'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => 'No servers found for ${username} (${email})'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => 'Failed to load servers: ${error}'; case 'hubDetail.title': return 'Title'; case 'hubDetail.releaseYear': return 'Release Year'; case 'hubDetail.dateAdded': return 'Date Added'; case 'hubDetail.rating': return 'Rating'; case 'hubDetail.noItemsFound': return 'No items found'; case 'logs.clearLogs': return 'Clear Logs'; case 'logs.copyLogs': return 'Copy Logs'; case 'logs.error': return 'Error:'; case 'logs.stackTrace': return 'Stack Trace:'; case 'licenses.relatedPackages': return 'Related Packages'; case 'licenses.license': return 'License'; case 'licenses.licenseNumber': return ({required Object number}) => 'License ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} licenses'; case 'navigation.home': return 'Home'; case 'navigation.search': return 'Search'; case 'navigation.libraries': return 'Libraries'; case 'navigation.settings': return 'Settings'; case 'navigation.downloads': return 'Downloads'; case 'collections.title': return 'Collections'; case 'collections.collection': return 'Collection'; case 'collections.empty': return 'Collection is empty'; case 'collections.unknownLibrarySection': return 'Cannot delete: Unknown library section'; case 'collections.deleteCollection': return 'Delete Collection'; case 'collections.deleteConfirm': return ({required Object title}) => 'Are you sure you want to delete "${title}"? This action cannot be undone.'; case 'collections.deleted': return 'Collection deleted'; case 'collections.deleteFailed': return 'Failed to delete collection'; case 'collections.deleteFailedWithError': return ({required Object error}) => 'Failed to delete collection: ${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => 'Failed to load collection items: ${error}'; case 'collections.selectCollection': return 'Select Collection'; case 'collections.createNewCollection': return 'Create New Collection'; case 'collections.collectionName': return 'Collection Name'; case 'collections.enterCollectionName': return 'Enter collection name'; case 'collections.addedToCollection': return 'Added to collection'; case 'collections.errorAddingToCollection': return 'Failed to add to collection'; case 'collections.created': return 'Collection created'; case 'collections.removeFromCollection': return 'Remove from collection'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => 'Remove "${title}" from this collection?'; case 'collections.removedFromCollection': return 'Removed from collection'; case 'collections.removeFromCollectionFailed': return 'Failed to remove from collection'; case 'collections.removeFromCollectionError': return ({required Object error}) => 'Error removing from collection: ${error}'; case 'playlists.title': return 'Playlists'; case 'playlists.playlist': return 'Playlist'; case 'playlists.noPlaylists': return 'No playlists found'; case 'playlists.create': return 'Create Playlist'; case 'playlists.playlistName': return 'Playlist Name'; case 'playlists.enterPlaylistName': return 'Enter playlist name'; case 'playlists.delete': return 'Delete Playlist'; case 'playlists.removeItem': return 'Remove from Playlist'; case 'playlists.smartPlaylist': return 'Smart Playlist'; case 'playlists.itemCount': return ({required Object count}) => '${count} items'; case 'playlists.oneItem': return '1 item'; case 'playlists.emptyPlaylist': return 'This playlist is empty'; case 'playlists.deleteConfirm': return 'Delete Playlist?'; case 'playlists.deleteMessage': return ({required Object name}) => 'Are you sure you want to delete "${name}"?'; case 'playlists.created': return 'Playlist created'; case 'playlists.deleted': return 'Playlist deleted'; case 'playlists.itemAdded': return 'Added to playlist'; case 'playlists.itemRemoved': return 'Removed from playlist'; case 'playlists.selectPlaylist': return 'Select Playlist'; case 'playlists.createNewPlaylist': return 'Create New Playlist'; case 'playlists.errorCreating': return 'Failed to create playlist'; case 'playlists.errorDeleting': return 'Failed to delete playlist'; case 'playlists.errorLoading': return 'Failed to load playlists'; case 'playlists.errorAdding': return 'Failed to add to playlist'; case 'playlists.errorReordering': return 'Failed to reorder playlist item'; case 'playlists.errorRemoving': return 'Failed to remove from playlist'; case 'downloads.title': return 'Downloads'; case 'downloads.manage': return 'Manage'; case 'downloads.tvShows': return 'TV Shows'; case 'downloads.movies': return 'Movies'; case 'downloads.noDownloads': return 'No downloads yet'; case 'downloads.noDownloadsDescription': return 'Downloaded content will appear here for offline viewing'; case 'downloads.downloadNow': return 'Download'; case 'downloads.deleteDownload': return 'Delete download'; case 'downloads.retryDownload': return 'Retry download'; case 'downloads.downloadQueued': return 'Download queued'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} episodes queued for download'; case 'downloads.downloadDeleted': return 'Download deleted'; case 'downloads.deleteConfirm': return ({required Object title}) => 'Are you sure you want to delete "${title}"? This will remove the downloaded file from your device.'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => 'Deleting ${title}... (${current} of ${total})'; default: return null; } } } extension on _StringsDe { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return 'Lädt...'; case 'auth.signInWithPlex': return 'Mit Plex anmelden'; case 'auth.showQRCode': return 'QR-Code anzeigen'; case 'auth.cancel': return 'Abbrechen'; case 'auth.authenticate': return 'Authentifizieren'; case 'auth.retry': return 'Erneut versuchen'; case 'auth.debugEnterToken': return 'Debug: Plex-Token eingeben'; case 'auth.plexTokenLabel': return 'Plex-Auth-Token'; case 'auth.plexTokenHint': return 'Plex.tv-Token eingeben'; case 'auth.authenticationTimeout': return 'Authentifizierung abgelaufen. Bitte erneut versuchen.'; case 'auth.scanQRCodeInstruction': return 'Diesen QR-Code mit einem bei Plex angemeldeten Gerät scannen, um zu authentifizieren.'; case 'auth.waitingForAuth': return 'Warte auf Authentifizierung...\nBitte Anmeldung im Browser abschließen.'; case 'common.cancel': return 'Abbrechen'; case 'common.save': return 'Speichern'; case 'common.close': return 'Schließen'; case 'common.clear': return 'Leeren'; case 'common.reset': return 'Zurücksetzen'; case 'common.later': return 'Später'; case 'common.submit': return 'Senden'; case 'common.confirm': return 'Bestätigen'; case 'common.retry': return 'Erneut versuchen'; case 'common.logout': return 'Abmelden'; case 'common.unknown': return 'Unbekannt'; case 'common.refresh': return 'Aktualisieren'; case 'common.yes': return 'Ja'; case 'common.no': return 'Nein'; case 'common.delete': return 'Löschen'; case 'common.shuffle': return 'Zufall'; case 'common.addTo': return 'Hinzufügen zu...'; case 'screens.licenses': return 'Lizenzen'; case 'screens.selectServer': return 'Server auswählen'; case 'screens.switchProfile': return 'Profil wechseln'; case 'screens.subtitleStyling': return 'Untertitel-Stil'; case 'screens.search': return 'Suche'; case 'screens.logs': return 'Protokolle'; case 'update.available': return 'Update verfügbar'; case 'update.versionAvailable': return ({required Object version}) => 'Version ${version} ist verfügbar'; case 'update.currentVersion': return ({required Object version}) => 'Aktuell: ${version}'; case 'update.skipVersion': return 'Diese Version überspringen'; case 'update.viewRelease': return 'Release anzeigen'; case 'update.latestVersion': return 'Aktuellste Version installiert'; case 'update.checkFailed': return 'Fehler bei der Updateprüfung'; case 'settings.title': return 'Einstellungen'; case 'settings.language': return 'Sprache'; case 'settings.theme': return 'Design'; case 'settings.appearance': return 'Darstellung'; case 'settings.videoPlayback': return 'Videowiedergabe'; case 'settings.advanced': return 'Erweitert'; case 'settings.useSeasonPostersDescription': return 'Staffelposter statt Serienposter für Episoden anzeigen'; case 'settings.showHeroSectionDescription': return 'Bereich mit empfohlenen Inhalten auf der Startseite anzeigen'; case 'settings.secondsLabel': return 'Sekunden'; case 'settings.minutesLabel': return 'Minuten'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => 'Dauer eingeben (${min}-${max})'; case 'settings.systemTheme': return 'System'; case 'settings.systemThemeDescription': return 'Systemeinstellungen folgen'; case 'settings.lightTheme': return 'Hell'; case 'settings.darkTheme': return 'Dunkel'; case 'settings.libraryDensity': return 'Mediathekdichte'; case 'settings.compact': return 'Kompakt'; case 'settings.compactDescription': return 'Kleinere Karten, mehr Elemente sichtbar'; case 'settings.normal': return 'Normal'; case 'settings.normalDescription': return 'Standardgröße'; case 'settings.comfortable': return 'Großzügig'; case 'settings.comfortableDescription': return 'Größere Karten, weniger Elemente sichtbar'; case 'settings.viewMode': return 'Ansichtsmodus'; case 'settings.gridView': return 'Raster'; case 'settings.gridViewDescription': return 'Elemente im Raster anzeigen'; case 'settings.listView': return 'Liste'; case 'settings.listViewDescription': return 'Elemente in Listenansicht anzeigen'; case 'settings.useSeasonPosters': return 'Staffelposter verwenden'; case 'settings.showHeroSection': return 'Hero-Bereich anzeigen'; case 'settings.hardwareDecoding': return 'Hardware-Decodierung'; case 'settings.hardwareDecodingDescription': return 'Hardwarebeschleunigung verwenden, sofern verfügbar'; case 'settings.bufferSize': return 'Puffergröße'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return 'Untertitel-Stil'; case 'settings.subtitleStylingDescription': return 'Aussehen von Untertiteln anpassen'; case 'settings.smallSkipDuration': return 'Kleine Sprungdauer'; case 'settings.largeSkipDuration': return 'Große Sprungdauer'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} Sekunden'; case 'settings.defaultSleepTimer': return 'Standard-Sleep-Timer'; case 'settings.minutesUnit': return ({required Object minutes}) => '${minutes} Minuten'; case 'settings.rememberTrackSelections': return 'Spurauswahl pro Serie/Film merken'; case 'settings.rememberTrackSelectionsDescription': return 'Audio- und Untertitelsprache automatisch speichern, wenn während der Wiedergabe geändert'; case 'settings.videoPlayerControls': return 'Videoplayer-Steuerung'; case 'settings.keyboardShortcuts': return 'Tastenkürzel'; case 'settings.keyboardShortcutsDescription': return 'Tastenkürzel anpassen'; case 'settings.videoPlayerNavigation': return 'Videoplayer-Navigation'; case 'settings.videoPlayerNavigationDescription': return 'Pfeiltasten zur Navigation der Videoplayer-Steuerung verwenden'; case 'settings.debugLogging': return 'Debug-Protokollierung'; case 'settings.debugLoggingDescription': return 'Detaillierte Protokolle zur Fehleranalyse aktivieren'; case 'settings.viewLogs': return 'Protokolle anzeigen'; case 'settings.viewLogsDescription': return 'App-Protokolle anzeigen'; case 'settings.clearCache': return 'Cache löschen'; case 'settings.clearCacheDescription': return 'Löscht alle zwischengespeicherten Bilder und Daten. Die App kann danach langsamer laden.'; case 'settings.clearCacheSuccess': return 'Cache erfolgreich gelöscht'; case 'settings.resetSettings': return 'Einstellungen zurücksetzen'; case 'settings.resetSettingsDescription': return 'Alle Einstellungen auf Standard zurücksetzen. Dies kann nicht rückgängig gemacht werden.'; case 'settings.resetSettingsSuccess': return 'Einstellungen erfolgreich zurückgesetzt'; case 'settings.shortcutsReset': return 'Tastenkürzel auf Standard zurückgesetzt'; case 'settings.about': return 'Über'; case 'settings.aboutDescription': return 'App-Informationen und Lizenzen'; case 'settings.updates': return 'Updates'; case 'settings.updateAvailable': return 'Update verfügbar'; case 'settings.checkForUpdates': return 'Nach Updates suchen'; case 'settings.validationErrorEnterNumber': return 'Bitte eine gültige Zahl eingeben'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => 'Dauer muss zwischen ${min} und ${max} ${unit} liegen'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => 'Tastenkürzel bereits zugewiesen an ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => 'Tastenkürzel aktualisiert für ${action}'; case 'settings.autoSkip': return 'Automatisches Überspringen'; case 'settings.autoSkipIntro': return 'Intro automatisch überspringen'; case 'settings.autoSkipIntroDescription': return 'Intro-Marker nach wenigen Sekunden automatisch überspringen'; case 'settings.autoSkipCredits': return 'Abspann automatisch überspringen'; case 'settings.autoSkipCreditsDescription': return 'Abspann automatisch überspringen und nächste Episode abspielen'; case 'settings.autoSkipDelay': return 'Verzögerung für automatisches Überspringen'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => '${seconds} Sekunden vor dem automatischen Überspringen warten'; case 'settings.downloads': return 'Downloads'; case 'settings.downloadLocationDescription': return 'Speicherort für heruntergeladene Inhalte wählen'; case 'settings.downloadLocationDefault': return 'Standard (App-Speicher)'; case 'settings.downloadLocationCustom': return 'Benutzerdefinierter Speicherort'; case 'settings.selectFolder': return 'Ordner auswählen'; case 'settings.resetToDefault': return 'Auf Standard zurücksetzen'; case 'settings.currentPath': return ({required Object path}) => 'Aktuell: ${path}'; case 'settings.downloadLocationChanged': return 'Download-Speicherort geändert'; case 'settings.downloadLocationReset': return 'Download-Speicherort auf Standard zurückgesetzt'; case 'settings.downloadLocationInvalid': return 'Ausgewählter Ordner ist nicht beschreibbar'; case 'settings.downloadLocationSelectError': return 'Ordnerauswahl fehlgeschlagen'; case 'settings.downloadOnWifiOnly': return 'Nur über WLAN herunterladen'; case 'settings.downloadOnWifiOnlyDescription': return 'Downloads über mobile Daten verhindern'; case 'settings.cellularDownloadBlocked': return 'Downloads sind über mobile Daten deaktiviert. Verbinde dich mit einem WLAN oder ändere die Einstellung.'; case 'search.hint': return 'Filme, Serien, Musik suchen...'; case 'search.tryDifferentTerm': return 'Anderen Suchbegriff versuchen'; case 'search.searchYourMedia': return 'In den eigenen Medien suchen'; case 'search.enterTitleActorOrKeyword': return 'Titel, Schauspieler oder Stichwort eingeben'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Tastenkürzel festlegen für ${actionName}'; case 'hotkeys.clearShortcut': return 'Kürzel löschen'; case 'pinEntry.enterPin': return 'PIN eingeben'; case 'pinEntry.showPin': return 'PIN anzeigen'; case 'pinEntry.hidePin': return 'PIN verbergen'; case 'fileInfo.title': return 'Dateiinfo'; case 'fileInfo.video': return 'Video'; case 'fileInfo.audio': return 'Audio'; case 'fileInfo.file': return 'Datei'; case 'fileInfo.advanced': return 'Erweitert'; case 'fileInfo.codec': return 'Codec'; case 'fileInfo.resolution': return 'Auflösung'; case 'fileInfo.bitrate': return 'Bitrate'; case 'fileInfo.frameRate': return 'Bildrate'; case 'fileInfo.aspectRatio': return 'Seitenverhältnis'; case 'fileInfo.profile': return 'Profil'; case 'fileInfo.bitDepth': return 'Farbtiefe'; case 'fileInfo.colorSpace': return 'Farbraum'; case 'fileInfo.colorRange': return 'Farbbereich'; case 'fileInfo.colorPrimaries': return 'Primärfarben'; case 'fileInfo.chromaSubsampling': return 'Chroma-Subsampling'; case 'fileInfo.channels': return 'Kanäle'; case 'fileInfo.path': return 'Pfad'; case 'fileInfo.size': return 'Größe'; case 'fileInfo.container': return 'Container'; case 'fileInfo.duration': return 'Dauer'; case 'fileInfo.optimizedForStreaming': return 'Für Streaming optimiert'; case 'fileInfo.has64bitOffsets': return '64-Bit-Offsets'; case 'mediaMenu.markAsWatched': return 'Als gesehen markieren'; case 'mediaMenu.markAsUnwatched': return 'Als ungesehen markieren'; case 'mediaMenu.removeFromContinueWatching': return 'Aus ‚Weiterschauen‘ entfernen'; case 'mediaMenu.goToSeries': return 'Zur Serie'; case 'mediaMenu.goToSeason': return 'Zur Staffel'; case 'mediaMenu.shufflePlay': return 'Zufallswiedergabe'; case 'mediaMenu.fileInfo': return 'Dateiinfo'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, Film'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, Serie'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return 'angesehen'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '${percent} Prozent angesehen'; case 'accessibility.mediaCardUnwatched': return 'ungeschaut'; case 'accessibility.tapToPlay': return 'Zum Abspielen tippen'; case 'tooltips.shufflePlay': return 'Zufallswiedergabe'; case 'tooltips.markAsWatched': return 'Als gesehen markieren'; case 'tooltips.markAsUnwatched': return 'Als ungesehen markieren'; case 'videoControls.audioLabel': return 'Audio'; case 'videoControls.subtitlesLabel': return 'Untertitel'; case 'videoControls.resetToZero': return 'Auf 0 ms zurücksetzen'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} spielt später'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} spielt früher'; case 'videoControls.noOffset': return 'Kein Offset'; case 'videoControls.letterbox': return 'Letterbox'; case 'videoControls.fillScreen': return 'Bild füllen'; case 'videoControls.stretch': return 'Strecken'; case 'videoControls.lockRotation': return 'Rotation sperren'; case 'videoControls.unlockRotation': return 'Rotation entsperren'; case 'videoControls.sleepTimer': return 'Schlaftimer'; case 'videoControls.timerActive': return 'Schlaftimer aktiv'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => 'Wiedergabe wird in ${duration} pausiert'; case 'videoControls.sleepTimerCompleted': return 'Schlaftimer abgelaufen – Wiedergabe pausiert'; case 'videoControls.playButton': return 'Wiedergeben'; case 'videoControls.pauseButton': return 'Pause'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => '${seconds} Sekunden zurück'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => '${seconds} Sekunden vor'; case 'videoControls.previousButton': return 'Vorherige Episode'; case 'videoControls.nextButton': return 'Nächste Episode'; case 'videoControls.previousChapterButton': return 'Vorheriges Kapitel'; case 'videoControls.nextChapterButton': return 'Nächstes Kapitel'; case 'videoControls.muteButton': return 'Stumm schalten'; case 'videoControls.unmuteButton': return 'Stummschaltung aufheben'; case 'videoControls.settingsButton': return 'Videoeinstellungen'; case 'videoControls.audioTrackButton': return 'Tonspuren'; case 'videoControls.subtitlesButton': return 'Untertitel'; case 'videoControls.chaptersButton': return 'Kapitel'; case 'videoControls.versionsButton': return 'Videoversionen'; case 'videoControls.aspectRatioButton': return 'Seitenverhältnis'; case 'videoControls.fullscreenButton': return 'Vollbild aktivieren'; case 'videoControls.exitFullscreenButton': return 'Vollbild verlassen'; case 'videoControls.rotationLockButton': return 'Dreh­sperre'; case 'videoControls.timelineSlider': return 'Video-Zeitleiste'; case 'videoControls.volumeSlider': return 'Lautstärkepegel'; case 'videoControls.backButton': return 'Zurück'; case 'userStatus.admin': return 'Eigentümer'; case 'userStatus.restricted': return 'Eingeschränkt'; case 'userStatus.protected': return 'Geschützt'; case 'userStatus.current': return 'AKTUELL'; case 'messages.markedAsWatched': return 'Als gesehen markiert'; case 'messages.markedAsUnwatched': return 'Als ungesehen markiert'; case 'messages.markedAsWatchedOffline': return 'Als gesehen markiert (wird synchronisiert, wenn online)'; case 'messages.markedAsUnwatchedOffline': return 'Als ungesehen markiert (wird synchronisiert, wenn online)'; case 'messages.removedFromContinueWatching': return 'Aus ‚Weiterschauen\' entfernt'; case 'messages.errorLoading': return ({required Object error}) => 'Fehler: ${error}'; case 'messages.fileInfoNotAvailable': return 'Dateiinfo nicht verfügbar'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => 'Fehler beim Laden der Dateiinfo: ${error}'; case 'messages.errorLoadingSeries': return 'Fehler beim Laden der Serie'; case 'messages.errorLoadingSeason': return 'Fehler beim Laden der Staffel'; case 'messages.musicNotSupported': return 'Musikwiedergabe wird noch nicht unterstützt'; case 'messages.logsCleared': return 'Protokolle gelöscht'; case 'messages.logsCopied': return 'Protokolle in Zwischenablage kopiert'; case 'messages.noLogsAvailable': return 'Keine Protokolle verfügbar'; case 'messages.libraryScanning': return ({required Object title}) => 'Scanne „${title}“...'; case 'messages.libraryScanStarted': return ({required Object title}) => 'Mediathekscan gestartet für „${title}“'; case 'messages.libraryScanFailed': return ({required Object error}) => 'Fehler beim Scannen der Mediathek: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => 'Metadaten werden aktualisiert für „${title}“...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => 'Metadaten-Aktualisierung gestartet für „${title}“'; case 'messages.metadataRefreshFailed': return ({required Object error}) => 'Metadaten konnten nicht aktualisiert werden: ${error}'; case 'messages.logoutConfirm': return 'Abmeldung wirklich durchführen?'; case 'messages.noSeasonsFound': return 'Keine Staffeln gefunden'; case 'messages.noEpisodesFound': return 'Keine Episoden in der ersten Staffel gefunden'; case 'messages.noEpisodesFoundGeneral': return 'Keine Episoden gefunden'; case 'messages.noResultsFound': return 'Keine Ergebnisse gefunden'; case 'messages.sleepTimerSet': return ({required Object label}) => 'Sleep-Timer gesetzt auf ${label}'; case 'messages.noItemsAvailable': return 'Keine Elemente verfügbar'; case 'messages.failedToCreatePlayQueue': return 'Wiedergabewarteschlange konnte nicht erstellt werden'; case 'messages.failedToCreatePlayQueueNoItems': return 'Wiedergabewarteschlange konnte nicht erstellt werden – keine Elemente'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => 'Wiedergabe für ${action} fehlgeschlagen: ${error}'; case 'messages.youAreOffline': return 'Du bist offline'; case 'messages.offlineFeatureUnavailable': return 'Diese Funktion erfordert eine Internetverbindung. Deine Downloads und Einstellungen sind weiterhin verfügbar.'; case 'subtitlingStyling.stylingOptions': return 'Stiloptionen'; case 'subtitlingStyling.fontSize': return 'Schriftgröße'; case 'subtitlingStyling.textColor': return 'Textfarbe'; case 'subtitlingStyling.borderSize': return 'Rahmengröße'; case 'subtitlingStyling.borderColor': return 'Rahmenfarbe'; case 'subtitlingStyling.backgroundOpacity': return 'Hintergrunddeckkraft'; case 'subtitlingStyling.backgroundColor': return 'Hintergrundfarbe'; case 'dialog.confirmAction': return 'Aktion bestätigen'; case 'dialog.cancel': return 'Abbrechen'; case 'dialog.playNow': return 'Jetzt abspielen'; case 'discover.title': return 'Entdecken'; case 'discover.switchProfile': return 'Profil wechseln'; case 'discover.switchServer': return 'Server wechseln'; case 'discover.logout': return 'Abmelden'; case 'discover.noContentAvailable': return 'Kein Inhalt verfügbar'; case 'discover.addMediaToLibraries': return 'Medien zur Mediathek hinzufügen'; case 'discover.continueWatching': return 'Weiterschauen'; case 'discover.play': return 'Abspielen'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return 'Pause'; case 'discover.overview': return 'Übersicht'; case 'discover.cast': return 'Besetzung'; case 'discover.seasons': return 'Staffeln'; case 'discover.studio': return 'Studio'; case 'discover.rating': return 'Altersfreigabe'; case 'discover.watched': return 'Gesehen'; case 'discover.episodeCount': return ({required Object count}) => '${count} Episoden'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '${watched} von ${total} gesehen'; case 'discover.movie': return 'Film'; case 'discover.tvShow': return 'Serie'; case 'discover.minutesLeft': return ({required Object minutes}) => '${minutes} Min übrig'; case 'errors.searchFailed': return ({required Object error}) => 'Suche fehlgeschlagen: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => 'Zeitüberschreitung beim Laden von ${context}'; case 'errors.connectionFailed': return 'Verbindung zum Plex-Server fehlgeschlagen'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => 'Fehler beim Laden von ${context}: ${error}'; case 'errors.noClientAvailable': return 'Kein Client verfügbar'; case 'errors.authenticationFailed': return ({required Object error}) => 'Authentifizierung fehlgeschlagen: ${error}'; case 'errors.couldNotLaunchUrl': return 'Auth-URL konnte nicht geöffnet werden'; case 'errors.pleaseEnterToken': return 'Bitte Token eingeben'; case 'errors.invalidToken': return 'Ungültiges Token'; case 'errors.failedToVerifyToken': return ({required Object error}) => 'Token-Verifizierung fehlgeschlagen: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => 'Profilwechsel zu ${displayName} fehlgeschlagen'; case 'libraries.title': return 'Mediatheken'; case 'libraries.scanLibraryFiles': return 'Mediatheksdateien scannen'; case 'libraries.scanLibrary': return 'Mediathek scannen'; case 'libraries.analyze': return 'Analysieren'; case 'libraries.analyzeLibrary': return 'Mediathek analysieren'; case 'libraries.refreshMetadata': return 'Metadaten aktualisieren'; case 'libraries.emptyTrash': return 'Papierkorb leeren'; case 'libraries.emptyingTrash': return ({required Object title}) => 'Papierkorb für „${title}“ wird geleert...'; case 'libraries.trashEmptied': return ({required Object title}) => 'Papierkorb für „${title}“ geleert'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => 'Papierkorb konnte nicht geleert werden: ${error}'; case 'libraries.analyzing': return ({required Object title}) => 'Analysiere „${title}“...'; case 'libraries.analysisStarted': return ({required Object title}) => 'Analyse gestartet für „${title}“'; case 'libraries.failedToAnalyze': return ({required Object error}) => 'Analyse der Mediathek fehlgeschlagen: ${error}'; case 'libraries.noLibrariesFound': return 'Keine Mediatheken gefunden'; case 'libraries.thisLibraryIsEmpty': return 'Diese Mediathek ist leer'; case 'libraries.all': return 'Alle'; case 'libraries.clearAll': return 'Alle löschen'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => '„${title}“ wirklich scannen?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => '„${title}“ wirklich analysieren?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => 'Metadaten für „${title}“ wirklich aktualisieren?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => 'Papierkorb für „${title}“ wirklich leeren?'; case 'libraries.manageLibraries': return 'Mediatheken verwalten'; case 'libraries.sort': return 'Sortieren'; case 'libraries.sortBy': return 'Sortieren nach'; case 'libraries.filters': return 'Filter'; case 'libraries.confirmActionMessage': return 'Aktion wirklich durchführen?'; case 'libraries.showLibrary': return 'Mediathek anzeigen'; case 'libraries.hideLibrary': return 'Mediathek ausblenden'; case 'libraries.libraryOptions': return 'Mediatheksoptionen'; case 'libraries.content': return 'Bibliotheksinhalt'; case 'libraries.selectLibrary': return 'Bibliothek auswählen'; case 'libraries.filtersWithCount': return ({required Object count}) => 'Filter (${count})'; case 'libraries.noRecommendations': return 'Keine Empfehlungen verfügbar'; case 'libraries.noCollections': return 'Keine Sammlungen in dieser Mediathek'; case 'libraries.noFoldersFound': return 'Keine Ordner gefunden'; case 'libraries.folders': return 'Ordner'; case 'libraries.tabs.recommended': return 'Empfohlen'; case 'libraries.tabs.browse': return 'Durchsuchen'; case 'libraries.tabs.collections': return 'Sammlungen'; case 'libraries.tabs.playlists': return 'Wiedergabelisten'; case 'libraries.groupings.all': return 'Alle'; case 'libraries.groupings.movies': return 'Filme'; case 'libraries.groupings.shows': return 'Serien'; case 'libraries.groupings.seasons': return 'Staffeln'; case 'libraries.groupings.episodes': return 'Episoden'; case 'libraries.groupings.folders': return 'Ordner'; case 'about.title': return 'Über'; case 'about.openSourceLicenses': return 'Open-Source-Lizenzen'; case 'about.versionLabel': return ({required Object version}) => 'Version ${version}'; case 'about.appDescription': return 'Ein schöner Plex-Client für Flutter'; case 'about.viewLicensesDescription': return 'Lizenzen von Drittanbieter-Bibliotheken anzeigen'; case 'serverSelection.allServerConnectionsFailed': return 'Verbindung zu allen Servern fehlgeschlagen. Bitte Netzwerk prüfen und erneut versuchen.'; case 'serverSelection.noServersFound': return 'Keine Server gefunden'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => 'Keine Server gefunden für ${username} (${email})'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => 'Server konnten nicht geladen werden: ${error}'; case 'hubDetail.title': return 'Titel'; case 'hubDetail.releaseYear': return 'Erscheinungsjahr'; case 'hubDetail.dateAdded': return 'Hinzugefügt am'; case 'hubDetail.rating': return 'Bewertung'; case 'hubDetail.noItemsFound': return 'Keine Elemente gefunden'; case 'logs.clearLogs': return 'Protokolle löschen'; case 'logs.copyLogs': return 'Protokolle kopieren'; case 'logs.error': return 'Fehler:'; case 'logs.stackTrace': return 'Stacktrace:'; case 'licenses.relatedPackages': return 'Verwandte Pakete'; case 'licenses.license': return 'Lizenz'; case 'licenses.licenseNumber': return ({required Object number}) => 'Lizenz ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} Lizenzen'; case 'navigation.home': return 'Start'; case 'navigation.search': return 'Suche'; case 'navigation.libraries': return 'Mediatheken'; case 'navigation.settings': return 'Einstellungen'; case 'navigation.downloads': return 'Downloads'; case 'downloads.title': return 'Downloads'; case 'downloads.manage': return 'Verwalten'; case 'downloads.tvShows': return 'Serien'; case 'downloads.movies': return 'Filme'; case 'downloads.noDownloads': return 'Noch keine Downloads'; case 'downloads.noDownloadsDescription': return 'Heruntergeladene Inhalte werden hier für die Offline-Wiedergabe angezeigt'; case 'downloads.downloadNow': return 'Herunterladen'; case 'downloads.deleteDownload': return 'Download löschen'; case 'downloads.retryDownload': return 'Download wiederholen'; case 'downloads.downloadQueued': return 'Download in Warteschlange'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} Episoden zum Download hinzugefügt'; case 'downloads.downloadDeleted': return 'Download gelöscht'; case 'downloads.deleteConfirm': return ({required Object title}) => 'Möchtest du "${title}" wirklich löschen? Die heruntergeladene Datei wird von deinem Gerät entfernt.'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => 'Lösche ${title}... (${current} von ${total})'; case 'playlists.title': return 'Wiedergabelisten'; case 'playlists.noPlaylists': return 'Keine Wiedergabelisten gefunden'; case 'playlists.create': return 'Wiedergabeliste erstellen'; case 'playlists.playlistName': return 'Name der Wiedergabeliste'; case 'playlists.enterPlaylistName': return 'Name der Wiedergabeliste eingeben'; case 'playlists.delete': return 'Wiedergabeliste löschen'; case 'playlists.removeItem': return 'Aus Wiedergabeliste entfernen'; case 'playlists.smartPlaylist': return 'Intelligente Wiedergabeliste'; case 'playlists.itemCount': return ({required Object count}) => '${count} Elemente'; case 'playlists.oneItem': return '1 Element'; case 'playlists.emptyPlaylist': return 'Diese Wiedergabeliste ist leer'; case 'playlists.deleteConfirm': return 'Wiedergabeliste löschen?'; case 'playlists.deleteMessage': return ({required Object name}) => 'Soll "${name}" wirklich gelöscht werden?'; case 'playlists.created': return 'Wiedergabeliste erstellt'; case 'playlists.deleted': return 'Wiedergabeliste gelöscht'; case 'playlists.itemAdded': return 'Zur Wiedergabeliste hinzugefügt'; case 'playlists.itemRemoved': return 'Aus Wiedergabeliste entfernt'; case 'playlists.selectPlaylist': return 'Wiedergabeliste auswählen'; case 'playlists.createNewPlaylist': return 'Neue Wiedergabeliste erstellen'; case 'playlists.errorCreating': return 'Wiedergabeliste konnte nicht erstellt werden'; case 'playlists.errorDeleting': return 'Wiedergabeliste konnte nicht gelöscht werden'; case 'playlists.errorLoading': return 'Wiedergabelisten konnten nicht geladen werden'; case 'playlists.errorAdding': return 'Konnte nicht zur Wiedergabeliste hinzugefügt werden'; case 'playlists.errorReordering': return 'Element der Wiedergabeliste konnte nicht neu geordnet werden'; case 'playlists.errorRemoving': return 'Konnte nicht aus der Wiedergabeliste entfernt werden'; case 'playlists.playlist': return 'Wiedergabeliste'; case 'collections.title': return 'Sammlungen'; case 'collections.collection': return 'Sammlung'; case 'collections.empty': return 'Sammlung ist leer'; case 'collections.unknownLibrarySection': return 'Löschen nicht möglich: Unbekannte Bibliothekssektion'; case 'collections.deleteCollection': return 'Sammlung löschen'; case 'collections.deleteConfirm': return ({required Object title}) => 'Sind Sie sicher, dass Sie "${title}" löschen möchten? Dies kann nicht rückgängig gemacht werden.'; case 'collections.deleted': return 'Sammlung gelöscht'; case 'collections.deleteFailed': return 'Sammlung konnte nicht gelöscht werden'; case 'collections.deleteFailedWithError': return ({required Object error}) => 'Sammlung konnte nicht gelöscht werden: ${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => 'Sammlungselemente konnten nicht geladen werden: ${error}'; case 'collections.selectCollection': return 'Sammlung auswählen'; case 'collections.createNewCollection': return 'Neue Sammlung erstellen'; case 'collections.collectionName': return 'Sammlungsname'; case 'collections.enterCollectionName': return 'Sammlungsnamen eingeben'; case 'collections.addedToCollection': return 'Zur Sammlung hinzugefügt'; case 'collections.errorAddingToCollection': return 'Fehler beim Hinzufügen zur Sammlung'; case 'collections.created': return 'Sammlung erstellt'; case 'collections.removeFromCollection': return 'Aus Sammlung entfernen'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => '"${title}" aus dieser Sammlung entfernen?'; case 'collections.removedFromCollection': return 'Aus Sammlung entfernt'; case 'collections.removeFromCollectionFailed': return 'Entfernen aus Sammlung fehlgeschlagen'; case 'collections.removeFromCollectionError': return ({required Object error}) => 'Fehler beim Entfernen aus der Sammlung: ${error}'; default: return null; } } } extension on _StringsIt { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return 'Caricamento...'; case 'auth.signInWithPlex': return 'Accedi con Plex'; case 'auth.showQRCode': return 'Mostra QR Code'; case 'auth.cancel': return 'Cancella'; case 'auth.authenticate': return 'Autenticazione'; case 'auth.retry': return 'Riprova'; case 'auth.debugEnterToken': return 'Debug: Inserisci Token Plex'; case 'auth.plexTokenLabel': return 'Token Auth Plex'; case 'auth.plexTokenHint': return 'Inserisci il tuo token di Plex.tv'; case 'auth.authenticationTimeout': return 'Autenticazione scaduta. Riprova.'; case 'auth.scanQRCodeInstruction': return 'Scansiona questo QR code con un dispositivo connesso a Plex per autenticarti.'; case 'auth.waitingForAuth': return 'In attesa di autenticazione...\nCompleta l\'accesso dal tuo browser.'; case 'common.cancel': return 'Cancella'; case 'common.save': return 'Salva'; case 'common.close': return 'Chiudi'; case 'common.clear': return 'Pulisci'; case 'common.reset': return 'Ripristina'; case 'common.later': return 'Più tardi'; case 'common.submit': return 'Invia'; case 'common.confirm': return 'Conferma'; case 'common.retry': return 'Riprova'; case 'common.logout': return 'Disconnetti'; case 'common.unknown': return 'Sconosciuto'; case 'common.refresh': return 'Aggiorna'; case 'common.yes': return 'Sì'; case 'common.no': return 'No'; case 'common.delete': return 'Elimina'; case 'common.shuffle': return 'Casuale'; case 'common.addTo': return 'Aggiungi a...'; case 'screens.licenses': return 'Licenze'; case 'screens.selectServer': return 'Seleziona server'; case 'screens.switchProfile': return 'Cambia profilo'; case 'screens.subtitleStyling': return 'Stile sottotitoli'; case 'screens.search': return 'Cerca'; case 'screens.logs': return 'Registro'; case 'update.available': return 'Aggiornamento disponibile'; case 'update.versionAvailable': return ({required Object version}) => 'Versione ${version} disponibile'; case 'update.currentVersion': return ({required Object version}) => 'Corrente: ${version}'; case 'update.skipVersion': return 'Salta questa versione'; case 'update.viewRelease': return 'Visualizza dettagli release'; case 'update.latestVersion': return 'La versione installata è l\'ultima disponibile'; case 'update.checkFailed': return 'Impossibile controllare gli aggiornamenti'; case 'settings.title': return 'Impostazioni'; case 'settings.language': return 'Lingua'; case 'settings.theme': return 'Tema'; case 'settings.appearance': return 'Aspetto'; case 'settings.videoPlayback': return 'Riproduzione video'; case 'settings.advanced': return 'Avanzate'; case 'settings.useSeasonPostersDescription': return 'Mostra il poster della stagione invece del poster della serie per gli episodi'; case 'settings.showHeroSectionDescription': return 'Visualizza il carosello dei contenuti in primo piano sulla schermata iniziale'; case 'settings.secondsLabel': return 'Secondi'; case 'settings.minutesLabel': return 'Minuti'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => 'Inserisci durata (${min}-${max})'; case 'settings.systemTheme': return 'Sistema'; case 'settings.systemThemeDescription': return 'Segui le impostazioni di sistema'; case 'settings.lightTheme': return 'Chiaro'; case 'settings.darkTheme': return 'Scuro'; case 'settings.libraryDensity': return 'Densità libreria'; case 'settings.compact': return 'Compatta'; case 'settings.compactDescription': return 'Schede più piccole, più elementi visibili'; case 'settings.normal': return 'Normale'; case 'settings.normalDescription': return 'Dimensione predefinita'; case 'settings.comfortable': return 'Comoda'; case 'settings.comfortableDescription': return 'Schede più grandi, meno elementi visibili'; case 'settings.viewMode': return 'Modalità di visualizzazione'; case 'settings.gridView': return 'Griglia'; case 'settings.gridViewDescription': return 'Visualizza gli elementi in un layout a griglia'; case 'settings.listView': return 'Elenco'; case 'settings.listViewDescription': return 'Visualizza gli elementi in un layout a elenco'; case 'settings.useSeasonPosters': return 'Usa poster delle stagioni'; case 'settings.showHeroSection': return 'Mostra sezione principale'; case 'settings.hardwareDecoding': return 'Decodifica Hardware'; case 'settings.hardwareDecodingDescription': return 'Utilizza l\'accelerazione hardware quando disponibile'; case 'settings.bufferSize': return 'Dimensione buffer'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return 'Stile sottotitoli'; case 'settings.subtitleStylingDescription': return 'Personalizza l\'aspetto dei sottotitoli'; case 'settings.smallSkipDuration': return 'Durata skip breve'; case 'settings.largeSkipDuration': return 'Durata skip lungo'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} secondi'; case 'settings.defaultSleepTimer': return 'Timer spegnimento predefinito'; case 'settings.minutesUnit': return ({required Object minutes}) => '${minutes} minuti'; case 'settings.rememberTrackSelections': return 'Ricorda selezioni tracce per serie/film'; case 'settings.rememberTrackSelectionsDescription': return 'Salva automaticamente le preferenze delle lingue audio e sottotitoli quando cambi tracce durante la riproduzione'; case 'settings.videoPlayerControls': return 'Controlli del lettore video'; case 'settings.keyboardShortcuts': return 'Scorciatoie da tastiera'; case 'settings.keyboardShortcutsDescription': return 'Personalizza le scorciatoie da tastiera'; case 'settings.videoPlayerNavigation': return 'Navigazione del lettore video'; case 'settings.videoPlayerNavigationDescription': return 'Usa i tasti freccia per navigare nei controlli del lettore video'; case 'settings.debugLogging': return 'Log di debug'; case 'settings.debugLoggingDescription': return 'Abilita il logging dettagliato per la risoluzione dei problemi'; case 'settings.viewLogs': return 'Visualizza log'; case 'settings.viewLogsDescription': return 'Visualizza i log dell\'applicazione'; case 'settings.clearCache': return 'Svuota cache'; case 'settings.clearCacheDescription': return 'Questa opzione cancellerà tutte le immagini e i dati memorizzati nella cache. Dopo aver cancellato la cache, l\'app potrebbe impiegare più tempo per caricare i contenuti.'; case 'settings.clearCacheSuccess': return 'Cache cancellata correttamente'; case 'settings.resetSettings': return 'Ripristina impostazioni'; case 'settings.resetSettingsDescription': return 'Questa opzione ripristinerà tutte le impostazioni ai valori predefiniti. Non può essere annullata.'; case 'settings.resetSettingsSuccess': return 'Impostazioni ripristinate correttamente'; case 'settings.shortcutsReset': return 'Scorciatoie ripristinate alle impostazioni predefinite'; case 'settings.about': return 'Informazioni'; case 'settings.aboutDescription': return 'Informazioni sull\'app e le licenze'; case 'settings.updates': return 'Aggiornamenti'; case 'settings.updateAvailable': return 'Aggiornamento disponibile'; case 'settings.checkForUpdates': return 'Controlla aggiornamenti'; case 'settings.validationErrorEnterNumber': return 'Inserisci un numero valido'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => 'la durata deve essere compresa tra ${min} e ${max} ${unit}'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => 'Scorciatoia già assegnata a ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => 'Scorciatoia aggiornata per ${action}'; case 'settings.autoSkip': return 'Salto Automatico'; case 'settings.autoSkipIntro': return 'Salta Intro Automaticamente'; case 'settings.autoSkipIntroDescription': return 'Salta automaticamente i marcatori dell\'intro dopo alcuni secondi'; case 'settings.autoSkipCredits': return 'Salta Crediti Automaticamente'; case 'settings.autoSkipCreditsDescription': return 'Salta automaticamente i crediti e riproduci l\'episodio successivo'; case 'settings.autoSkipDelay': return 'Ritardo Salto Automatico'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => 'Aspetta ${seconds} secondi prima del salto automatico'; case 'settings.downloads': return 'Download'; case 'settings.downloadLocationDescription': return 'Scegli dove salvare i contenuti scaricati'; case 'settings.downloadLocationDefault': return 'Predefinita (Archiviazione App)'; case 'settings.downloadLocationCustom': return 'Posizione Personalizzata'; case 'settings.selectFolder': return 'Seleziona Cartella'; case 'settings.resetToDefault': return 'Ripristina Predefinita'; case 'settings.currentPath': return ({required Object path}) => 'Corrente: ${path}'; case 'settings.downloadLocationChanged': return 'Posizione di download modificata'; case 'settings.downloadLocationReset': return 'Posizione di download ripristinata a predefinita'; case 'settings.downloadLocationInvalid': return 'La cartella selezionata non è scrivibile'; case 'settings.downloadLocationSelectError': return 'Impossibile selezionare la cartella'; case 'settings.downloadOnWifiOnly': return 'Scarica solo con WiFi'; case 'settings.downloadOnWifiOnlyDescription': return 'Impedisci i download quando si utilizza la rete dati cellulare'; case 'settings.cellularDownloadBlocked': return 'I download sono disabilitati sulla rete dati cellulare. Connettiti al WiFi o modifica l\'impostazione.'; case 'search.hint': return 'Cerca film. spettacoli, musica...'; case 'search.tryDifferentTerm': return 'Prova altri termini di ricerca'; case 'search.searchYourMedia': return 'Cerca nei tuoi media'; case 'search.enterTitleActorOrKeyword': return 'Inserisci un titolo, attore o parola chiave'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Imposta scorciatoia per ${actionName}'; case 'hotkeys.clearShortcut': return 'Elimina scorciatoia'; case 'pinEntry.enterPin': return 'Inserisci PIN'; case 'pinEntry.showPin': return 'Mostra PIN'; case 'pinEntry.hidePin': return 'Nascondi PIN'; case 'fileInfo.title': return 'Info sul file'; case 'fileInfo.video': return 'Video'; case 'fileInfo.audio': return 'Audio'; case 'fileInfo.file': return 'File'; case 'fileInfo.advanced': return 'Avanzate'; case 'fileInfo.codec': return 'Codec'; case 'fileInfo.resolution': return 'Risoluzione'; case 'fileInfo.bitrate': return 'Bitrate'; case 'fileInfo.frameRate': return 'Frame Rate'; case 'fileInfo.aspectRatio': return 'Aspect Ratio'; case 'fileInfo.profile': return 'Profilo'; case 'fileInfo.bitDepth': return 'Profondità colore'; case 'fileInfo.colorSpace': return 'Spazio colore'; case 'fileInfo.colorRange': return 'Gamma colori'; case 'fileInfo.colorPrimaries': return 'Colori primari'; case 'fileInfo.chromaSubsampling': return 'Sottocampionamento cromatico'; case 'fileInfo.channels': return 'Canali'; case 'fileInfo.path': return 'Percorso'; case 'fileInfo.size': return 'Dimensione'; case 'fileInfo.container': return 'Contenitore'; case 'fileInfo.duration': return 'Durata'; case 'fileInfo.optimizedForStreaming': return 'Ottimizzato per lo streaming'; case 'fileInfo.has64bitOffsets': return 'Offset a 64-bit'; case 'mediaMenu.markAsWatched': return 'Segna come visto'; case 'mediaMenu.markAsUnwatched': return 'Segna come non visto'; case 'mediaMenu.removeFromContinueWatching': return 'Rimuovi da Continua a guardare'; case 'mediaMenu.goToSeries': return 'Vai alle serie'; case 'mediaMenu.goToSeason': return 'Vai alla stagione'; case 'mediaMenu.shufflePlay': return 'Riproduzione casuale'; case 'mediaMenu.fileInfo': return 'Info sul file'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, film'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, serie TV'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return 'visto'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '${percent} percento visto'; case 'accessibility.mediaCardUnwatched': return 'non visto'; case 'accessibility.tapToPlay': return 'Tocca per riprodurre'; case 'tooltips.shufflePlay': return 'Riproduzione casuale'; case 'tooltips.markAsWatched': return 'Segna come visto'; case 'tooltips.markAsUnwatched': return 'Segna come non visto'; case 'videoControls.audioLabel': return 'Audio'; case 'videoControls.subtitlesLabel': return 'Sottotitoli'; case 'videoControls.resetToZero': return 'Riporta a 0ms'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} riprodotto dopo'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} riprodotto prima'; case 'videoControls.noOffset': return 'Nessun offset'; case 'videoControls.letterbox': return 'Letterbox'; case 'videoControls.fillScreen': return 'Riempi schermo'; case 'videoControls.stretch': return 'Allunga'; case 'videoControls.lockRotation': return 'Blocca rotazione'; case 'videoControls.unlockRotation': return 'Sblocca rotazione'; case 'videoControls.sleepTimer': return 'Timer di spegnimento'; case 'videoControls.timerActive': return 'Timer attivo'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => 'La riproduzione si interromperà tra ${duration}'; case 'videoControls.sleepTimerCompleted': return 'Timer di spegnimento completato - riproduzione in pausa'; case 'videoControls.playButton': return 'Riproduci'; case 'videoControls.pauseButton': return 'Pausa'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => 'Riavvolgi di ${seconds} secondi'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => 'Avanza di ${seconds} secondi'; case 'videoControls.previousButton': return 'Episodio precedente'; case 'videoControls.nextButton': return 'Episodio successivo'; case 'videoControls.previousChapterButton': return 'Capitolo precedente'; case 'videoControls.nextChapterButton': return 'Capitolo successivo'; case 'videoControls.muteButton': return 'Silenzia'; case 'videoControls.unmuteButton': return 'Riattiva audio'; case 'videoControls.settingsButton': return 'Impostazioni video'; case 'videoControls.audioTrackButton': return 'Tracce audio'; case 'videoControls.subtitlesButton': return 'Sottotitoli'; case 'videoControls.chaptersButton': return 'Capitoli'; case 'videoControls.versionsButton': return 'Versioni video'; case 'videoControls.aspectRatioButton': return 'Proporzioni'; case 'videoControls.fullscreenButton': return 'Attiva schermo intero'; case 'videoControls.exitFullscreenButton': return 'Esci da schermo intero'; case 'videoControls.rotationLockButton': return 'Blocco rotazione'; case 'videoControls.timelineSlider': return 'Timeline video'; case 'videoControls.volumeSlider': return 'Livello volume'; case 'videoControls.backButton': return 'Indietro'; case 'userStatus.admin': return 'Admin'; case 'userStatus.restricted': return 'Limitato'; case 'userStatus.protected': return 'Protetto'; case 'userStatus.current': return 'ATTUALE'; case 'messages.markedAsWatched': return 'Segna come visto'; case 'messages.markedAsUnwatched': return 'Segna come non visto'; case 'messages.markedAsWatchedOffline': return 'Segnato come visto (sincronizzato online)'; case 'messages.markedAsUnwatchedOffline': return 'Segnato come non visto (sincronizzato online)'; case 'messages.removedFromContinueWatching': return 'Rimosso da Continua a guardare'; case 'messages.errorLoading': return ({required Object error}) => 'Errore: ${error}'; case 'messages.fileInfoNotAvailable': return 'Informazioni sul file non disponibili'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => 'Errore caricamento informazioni sul file: ${error}'; case 'messages.errorLoadingSeries': return 'Errore caricamento serie'; case 'messages.errorLoadingSeason': return 'Errore caricamento stagione'; case 'messages.musicNotSupported': return 'La riproduzione musicale non è ancora supportata'; case 'messages.logsCleared': return 'Log eliminati'; case 'messages.logsCopied': return 'Log copiati negli appunti'; case 'messages.noLogsAvailable': return 'Nessun log disponibile'; case 'messages.libraryScanning': return ({required Object title}) => 'Scansione "${title}"...'; case 'messages.libraryScanStarted': return ({required Object title}) => 'Scansione libreria iniziata per "${title}"'; case 'messages.libraryScanFailed': return ({required Object error}) => 'Impossibile eseguire scansione della libreria: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => 'Aggiornamento metadati per "${title}"...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => 'Aggiornamento metadati per "${title}"'; case 'messages.metadataRefreshFailed': return ({required Object error}) => 'Errore aggiornamento metadati: ${error}'; case 'messages.logoutConfirm': return 'Sei sicuro di volerti disconnettere?'; case 'messages.noSeasonsFound': return 'Nessuna stagione trovata'; case 'messages.noEpisodesFound': return 'Nessun episodio trovato nella prima stagione'; case 'messages.noEpisodesFoundGeneral': return 'Nessun episodio trovato'; case 'messages.noResultsFound': return 'Nessun risultato'; case 'messages.sleepTimerSet': return ({required Object label}) => 'Imposta timer spegnimento per ${label}'; case 'messages.noItemsAvailable': return 'Nessun elemento disponibile'; case 'messages.failedToCreatePlayQueue': return 'Impossibile creare la coda di riproduzione'; case 'messages.failedToCreatePlayQueueNoItems': return 'Impossibile creare la coda di riproduzione - nessun elemento'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => 'Impossibile ${action}: ${error}'; case 'messages.youAreOffline': return 'Sei offline'; case 'messages.offlineFeatureUnavailable': return 'Questa funzione richiede una connessione internet. I tuoi download e le impostazioni sono ancora disponibili.'; case 'subtitlingStyling.stylingOptions': return 'Opzioni stile'; case 'subtitlingStyling.fontSize': return 'Dimensione'; case 'subtitlingStyling.textColor': return 'Colore testo'; case 'subtitlingStyling.borderSize': return 'Dimensione bordo'; case 'subtitlingStyling.borderColor': return 'Colore bordo'; case 'subtitlingStyling.backgroundOpacity': return 'Opacità sfondo'; case 'subtitlingStyling.backgroundColor': return 'Colore sfondo'; case 'dialog.confirmAction': return 'Conferma azione'; case 'dialog.cancel': return 'Cancella'; case 'dialog.playNow': return 'Riproduci ora'; case 'discover.title': return 'Esplora'; case 'discover.switchProfile': return 'Cambia profilo'; case 'discover.switchServer': return 'Cambia server'; case 'discover.logout': return 'Disconnetti'; case 'discover.noContentAvailable': return 'Nessun contenuto disponibile'; case 'discover.addMediaToLibraries': return 'Aggiungi alcuni file multimediali alle tue librerie'; case 'discover.continueWatching': return 'Continua a guardare'; case 'discover.play': return 'Riproduci'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return 'Pausa'; case 'discover.overview': return 'Panoramica'; case 'discover.cast': return 'Attori'; case 'discover.seasons': return 'Stagioni'; case 'discover.studio': return 'Studio'; case 'discover.rating': return 'Classificazione'; case 'discover.watched': return 'Guardato'; case 'discover.episodeCount': return ({required Object count}) => '${count} episodi'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '${watched}/${total} guardati'; case 'discover.movie': return 'Film'; case 'discover.tvShow': return 'Serie TV'; case 'discover.minutesLeft': return ({required Object minutes}) => '${minutes} minuti rimanenti'; case 'errors.searchFailed': return ({required Object error}) => 'Ricerca fallita: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => 'Timeout connessione durante caricamento di ${context}'; case 'errors.connectionFailed': return 'Impossibile connettersi al server Plex.'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => 'Impossibile caricare ${context}: ${error}'; case 'errors.noClientAvailable': return 'Nessun client disponibile'; case 'errors.authenticationFailed': return ({required Object error}) => 'Autenticazione fallita: ${error}'; case 'errors.couldNotLaunchUrl': return 'Impossibile avviare URL di autenticazione'; case 'errors.pleaseEnterToken': return 'Inserisci token'; case 'errors.invalidToken': return 'Token non valido'; case 'errors.failedToVerifyToken': return ({required Object error}) => 'Verifica token fallita: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => 'Impossibile passare a ${displayName}'; case 'libraries.title': return 'Librerie'; case 'libraries.scanLibraryFiles': return 'Scansiona file libreria'; case 'libraries.scanLibrary': return 'Scansiona libreria'; case 'libraries.analyze': return 'Analizza'; case 'libraries.analyzeLibrary': return 'Analizza libreria'; case 'libraries.refreshMetadata': return 'Aggiorna metadati'; case 'libraries.emptyTrash': return 'Svuota cestino'; case 'libraries.emptyingTrash': return ({required Object title}) => 'Svuotamento cestino per "${title}"...'; case 'libraries.trashEmptied': return ({required Object title}) => 'Cestino svuotato per "${title}"'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => 'Impossibile svuotare cestino: ${error}'; case 'libraries.analyzing': return ({required Object title}) => 'Analisi "${title}"...'; case 'libraries.analysisStarted': return ({required Object title}) => 'Analisi iniziata per "${title}"'; case 'libraries.failedToAnalyze': return ({required Object error}) => 'Impossibile analizzare libreria: ${error}'; case 'libraries.noLibrariesFound': return 'Nessuna libreria trovata'; case 'libraries.thisLibraryIsEmpty': return 'Questa libreria è vuota'; case 'libraries.all': return 'Tutto'; case 'libraries.clearAll': return 'Cancella tutto'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => 'Sei sicuro di voler scansionare "${title}"?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => 'Sei sicuro di voler analizzare "${title}"?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => 'Sei sicuro di voler aggiornare i metadati per "${title}"?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => 'Sei sicuro di voler svuotare il cestino per "${title}"?'; case 'libraries.manageLibraries': return 'Gestisci librerie'; case 'libraries.sort': return 'Ordina'; case 'libraries.sortBy': return 'Ordina per'; case 'libraries.filters': return 'Filtri'; case 'libraries.confirmActionMessage': return 'Sei sicuro di voler eseguire questa azione?'; case 'libraries.showLibrary': return 'Mostra libreria'; case 'libraries.hideLibrary': return 'Nascondi libreria'; case 'libraries.libraryOptions': return 'Opzioni libreria'; case 'libraries.content': return 'contenuto della libreria'; case 'libraries.selectLibrary': return 'Seleziona libreria'; case 'libraries.filtersWithCount': return ({required Object count}) => 'Filtri (${count})'; case 'libraries.noRecommendations': return 'Nessun consiglio disponibile'; case 'libraries.noCollections': return 'Nessuna raccolta in questa libreria'; case 'libraries.noFoldersFound': return 'Nessuna cartella trovata'; case 'libraries.folders': return 'cartelle'; case 'libraries.tabs.recommended': return 'Consigliati'; case 'libraries.tabs.browse': return 'Esplora'; case 'libraries.tabs.collections': return 'Raccolte'; case 'libraries.tabs.playlists': return 'Playlist'; case 'libraries.groupings.all': return 'Tutti'; case 'libraries.groupings.movies': return 'Film'; case 'libraries.groupings.shows': return 'Serie TV'; case 'libraries.groupings.seasons': return 'Stagioni'; case 'libraries.groupings.episodes': return 'Episodi'; case 'libraries.groupings.folders': return 'Cartelle'; case 'about.title': return 'Informazioni'; case 'about.openSourceLicenses': return 'Licenze Open Source'; case 'about.versionLabel': return ({required Object version}) => 'Versione ${version}'; case 'about.appDescription': return 'Un bellissimo client Plex per Flutter'; case 'about.viewLicensesDescription': return 'Visualizza le licenze delle librerie di terze parti'; case 'serverSelection.allServerConnectionsFailed': return 'Impossibile connettersi a nessun server. Controlla la tua rete e riprova.'; case 'serverSelection.noServersFound': return 'Nessun server trovato'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => 'Nessun server trovato per ${username} (${email})'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => 'Impossibile caricare i server: ${error}'; case 'hubDetail.title': return 'Titolo'; case 'hubDetail.releaseYear': return 'Anno rilascio'; case 'hubDetail.dateAdded': return 'Data aggiunta'; case 'hubDetail.rating': return 'Valutazione'; case 'hubDetail.noItemsFound': return 'Nessun elemento trovato'; case 'logs.clearLogs': return 'Cancella log'; case 'logs.copyLogs': return 'Copia log'; case 'logs.error': return 'Errore:'; case 'logs.stackTrace': return 'Traccia dello stack:'; case 'licenses.relatedPackages': return 'Pacchetti correlati'; case 'licenses.license': return 'Licenza'; case 'licenses.licenseNumber': return ({required Object number}) => 'Licenza ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} licenze'; case 'navigation.home': return 'Home'; case 'navigation.search': return 'Cerca'; case 'navigation.libraries': return 'Librerie'; case 'navigation.settings': return 'Impostazioni'; case 'navigation.downloads': return 'Download'; case 'downloads.title': return 'Download'; case 'downloads.manage': return 'Gestisci'; case 'downloads.tvShows': return 'Serie TV'; case 'downloads.movies': return 'Film'; case 'downloads.noDownloads': return 'Nessun download'; case 'downloads.noDownloadsDescription': return 'I contenuti scaricati appariranno qui per la visualizzazione offline'; case 'downloads.downloadNow': return 'Scarica'; case 'downloads.deleteDownload': return 'Elimina download'; case 'downloads.retryDownload': return 'Riprova download'; case 'downloads.downloadQueued': return 'Download in coda'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} episodi in coda per il download'; case 'downloads.downloadDeleted': return 'Download eliminato'; case 'downloads.deleteConfirm': return ({required Object title}) => 'Sei sicuro di voler eliminare "${title}"? Il file scaricato verrà rimosso dal tuo dispositivo.'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => 'Eliminazione di ${title}... (${current} di ${total})'; case 'playlists.title': return 'Playlist'; case 'playlists.noPlaylists': return 'Nessuna playlist trovata'; case 'playlists.create': return 'Crea playlist'; case 'playlists.playlistName': return 'Nome playlist'; case 'playlists.enterPlaylistName': return 'Inserisci nome playlist'; case 'playlists.delete': return 'Elimina playlist'; case 'playlists.removeItem': return 'Rimuovi da playlist'; case 'playlists.smartPlaylist': return 'Playlist intelligente'; case 'playlists.itemCount': return ({required Object count}) => '${count} elementi'; case 'playlists.oneItem': return '1 elemento'; case 'playlists.emptyPlaylist': return 'Questa playlist è vuota'; case 'playlists.deleteConfirm': return 'Eliminare playlist?'; case 'playlists.deleteMessage': return ({required Object name}) => 'Sei sicuro di voler eliminare "${name}"?'; case 'playlists.created': return 'Playlist creata'; case 'playlists.deleted': return 'Playlist eliminata'; case 'playlists.itemAdded': return 'Aggiunto alla playlist'; case 'playlists.itemRemoved': return 'Rimosso dalla playlist'; case 'playlists.selectPlaylist': return 'Seleziona playlist'; case 'playlists.createNewPlaylist': return 'Crea nuova playlist'; case 'playlists.errorCreating': return 'Errore durante la creazione della playlist'; case 'playlists.errorDeleting': return 'Errore durante l\'eliminazione della playlist'; case 'playlists.errorLoading': return 'Errore durante il caricamento delle playlist'; case 'playlists.errorAdding': return 'Errore durante l\'aggiunta alla playlist'; case 'playlists.errorReordering': return 'Errore durante il riordino dell\'elemento della playlist'; case 'playlists.errorRemoving': return 'Errore durante la rimozione dalla playlist'; case 'playlists.playlist': return 'Playlist'; case 'collections.title': return 'Raccolte'; case 'collections.collection': return 'Raccolta'; case 'collections.empty': return 'La raccolta è vuota'; case 'collections.unknownLibrarySection': return 'Impossibile eliminare: sezione libreria sconosciuta'; case 'collections.deleteCollection': return 'Elimina raccolta'; case 'collections.deleteConfirm': return ({required Object title}) => 'Sei sicuro di voler eliminare "${title}"? Questa azione non può essere annullata.'; case 'collections.deleted': return 'Raccolta eliminata'; case 'collections.deleteFailed': return 'Impossibile eliminare la raccolta'; case 'collections.deleteFailedWithError': return ({required Object error}) => 'Impossibile eliminare la raccolta: ${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => 'Impossibile caricare gli elementi della raccolta: ${error}'; case 'collections.selectCollection': return 'Seleziona raccolta'; case 'collections.createNewCollection': return 'Crea nuova raccolta'; case 'collections.collectionName': return 'Nome raccolta'; case 'collections.enterCollectionName': return 'Inserisci nome raccolta'; case 'collections.addedToCollection': return 'Aggiunto alla raccolta'; case 'collections.errorAddingToCollection': return 'Errore nell\'aggiunta alla raccolta'; case 'collections.created': return 'Raccolta creata'; case 'collections.removeFromCollection': return 'Rimuovi dalla raccolta'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => 'Rimuovere "${title}" da questa raccolta?'; case 'collections.removedFromCollection': return 'Rimosso dalla raccolta'; case 'collections.removeFromCollectionFailed': return 'Impossibile rimuovere dalla raccolta'; case 'collections.removeFromCollectionError': return ({required Object error}) => 'Errore durante la rimozione dalla raccolta: ${error}'; default: return null; } } } extension on _StringsNl { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return 'Laden...'; case 'auth.signInWithPlex': return 'Inloggen met Plex'; case 'auth.showQRCode': return 'Toon QR-code'; case 'auth.cancel': return 'Annuleren'; case 'auth.authenticate': return 'Authenticeren'; case 'auth.retry': return 'Opnieuw proberen'; case 'auth.debugEnterToken': return 'Debug: Voer Plex Token in'; case 'auth.plexTokenLabel': return 'Plex Authenticatietoken'; case 'auth.plexTokenHint': return 'Voer je Plex.tv token in'; case 'auth.authenticationTimeout': return 'Authenticatie verlopen. Probeer opnieuw.'; case 'auth.scanQRCodeInstruction': return 'Scan deze QR-code met een apparaat dat is ingelogd op Plex om te authenticeren.'; case 'auth.waitingForAuth': return 'Wachten op authenticatie...\nVoltooi het inloggen in je browser.'; case 'common.cancel': return 'Annuleren'; case 'common.save': return 'Opslaan'; case 'common.close': return 'Sluiten'; case 'common.clear': return 'Wissen'; case 'common.reset': return 'Resetten'; case 'common.later': return 'Later'; case 'common.submit': return 'Verzenden'; case 'common.confirm': return 'Bevestigen'; case 'common.retry': return 'Opnieuw proberen'; case 'common.logout': return 'Uitloggen'; case 'common.unknown': return 'Onbekend'; case 'common.refresh': return 'Vernieuwen'; case 'common.yes': return 'Ja'; case 'common.no': return 'Nee'; case 'common.delete': return 'Verwijderen'; case 'common.shuffle': return 'Willekeurig'; case 'common.addTo': return 'Toevoegen aan...'; case 'screens.licenses': return 'Licenties'; case 'screens.selectServer': return 'Selecteer server'; case 'screens.switchProfile': return 'Wissel van profiel'; case 'screens.subtitleStyling': return 'Ondertitel opmaak'; case 'screens.search': return 'Zoeken'; case 'screens.logs': return 'Logbestanden'; case 'update.available': return 'Update beschikbaar'; case 'update.versionAvailable': return ({required Object version}) => 'Versie ${version} is beschikbaar'; case 'update.currentVersion': return ({required Object version}) => 'Huidig: ${version}'; case 'update.skipVersion': return 'Deze versie overslaan'; case 'update.viewRelease': return 'Bekijk release'; case 'update.latestVersion': return 'Je hebt de nieuwste versie'; case 'update.checkFailed': return 'Kon niet controleren op updates'; case 'settings.title': return 'Instellingen'; case 'settings.language': return 'Taal'; case 'settings.theme': return 'Thema'; case 'settings.appearance': return 'Uiterlijk'; case 'settings.videoPlayback': return 'Video afspelen'; case 'settings.advanced': return 'Geavanceerd'; case 'settings.useSeasonPostersDescription': return 'Toon seizoenposter in plaats van serieposter voor afleveringen'; case 'settings.showHeroSectionDescription': return 'Toon uitgelichte inhoud carrousel op startscherm'; case 'settings.secondsLabel': return 'Seconden'; case 'settings.minutesLabel': return 'Minuten'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => 'Voer duur in (${min}-${max})'; case 'settings.systemTheme': return 'Systeem'; case 'settings.systemThemeDescription': return 'Volg systeeminstellingen'; case 'settings.lightTheme': return 'Licht'; case 'settings.darkTheme': return 'Donker'; case 'settings.libraryDensity': return 'Bibliotheek dichtheid'; case 'settings.compact': return 'Compact'; case 'settings.compactDescription': return 'Kleinere kaarten, meer items zichtbaar'; case 'settings.normal': return 'Normaal'; case 'settings.normalDescription': return 'Standaard grootte'; case 'settings.comfortable': return 'Comfortabel'; case 'settings.comfortableDescription': return 'Grotere kaarten, minder items zichtbaar'; case 'settings.viewMode': return 'Weergavemodus'; case 'settings.gridView': return 'Raster'; case 'settings.gridViewDescription': return 'Items weergeven in een rasterindeling'; case 'settings.listView': return 'Lijst'; case 'settings.listViewDescription': return 'Items weergeven in een lijstindeling'; case 'settings.useSeasonPosters': return 'Gebruik seizoenposters'; case 'settings.showHeroSection': return 'Toon hoofdsectie'; case 'settings.hardwareDecoding': return 'Hardware decodering'; case 'settings.hardwareDecodingDescription': return 'Gebruik hardware versnelling indien beschikbaar'; case 'settings.bufferSize': return 'Buffer grootte'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return 'Ondertitel opmaak'; case 'settings.subtitleStylingDescription': return 'Pas ondertitel uiterlijk aan'; case 'settings.smallSkipDuration': return 'Korte skip duur'; case 'settings.largeSkipDuration': return 'Lange skip duur'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} seconden'; case 'settings.defaultSleepTimer': return 'Standaard slaap timer'; case 'settings.minutesUnit': return ({required Object minutes}) => 'bij ${minutes} minuten'; case 'settings.rememberTrackSelections': return 'Onthoud track selecties per serie/film'; case 'settings.rememberTrackSelectionsDescription': return 'Bewaar automatisch audio- en ondertiteltaalvoorkeuren wanneer je tracks wijzigt tijdens afspelen'; case 'settings.videoPlayerControls': return 'Videospeler bediening'; case 'settings.keyboardShortcuts': return 'Toetsenbord sneltoetsen'; case 'settings.keyboardShortcutsDescription': return 'Pas toetsenbord sneltoetsen aan'; case 'settings.videoPlayerNavigation': return 'Videospeler navigatie'; case 'settings.videoPlayerNavigationDescription': return 'Gebruik pijltjestoetsen om door de videospeler bediening te navigeren'; case 'settings.debugLogging': return 'Debug logging'; case 'settings.debugLoggingDescription': return 'Schakel gedetailleerde logging in voor probleemoplossing'; case 'settings.viewLogs': return 'Bekijk logs'; case 'settings.viewLogsDescription': return 'Bekijk applicatie logs'; case 'settings.clearCache': return 'Cache wissen'; case 'settings.clearCacheDescription': return 'Dit wist alle gecachte afbeeldingen en gegevens. De app kan langer duren om inhoud te laden na het wissen van de cache.'; case 'settings.clearCacheSuccess': return 'Cache succesvol gewist'; case 'settings.resetSettings': return 'Instellingen resetten'; case 'settings.resetSettingsDescription': return 'Dit reset alle instellingen naar hun standaard waarden. Deze actie kan niet ongedaan gemaakt worden.'; case 'settings.resetSettingsSuccess': return 'Instellingen succesvol gereset'; case 'settings.shortcutsReset': return 'Sneltoetsen gereset naar standaard'; case 'settings.about': return 'Over'; case 'settings.aboutDescription': return 'App informatie en licenties'; case 'settings.updates': return 'Updates'; case 'settings.updateAvailable': return 'Update beschikbaar'; case 'settings.checkForUpdates': return 'Controleer op updates'; case 'settings.validationErrorEnterNumber': return 'Voer een geldig nummer in'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => 'Duur moet tussen ${min} en ${max} ${unit} zijn'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => 'Sneltoets al toegewezen aan ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => 'Sneltoets bijgewerkt voor ${action}'; case 'settings.autoSkip': return 'Automatisch Overslaan'; case 'settings.autoSkipIntro': return 'Intro Automatisch Overslaan'; case 'settings.autoSkipIntroDescription': return 'Intro-markeringen na enkele seconden automatisch overslaan'; case 'settings.autoSkipCredits': return 'Credits Automatisch Overslaan'; case 'settings.autoSkipCreditsDescription': return 'Credits automatisch overslaan en volgende aflevering afspelen'; case 'settings.autoSkipDelay': return 'Vertraging Automatisch Overslaan'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => '${seconds} seconden wachten voor automatisch overslaan'; case 'settings.downloads': return 'Downloads'; case 'settings.downloadLocationDescription': return 'Kies waar gedownloade content wordt opgeslagen'; case 'settings.downloadLocationDefault': return 'Standaard (App-opslag)'; case 'settings.downloadLocationCustom': return 'Aangepaste Locatie'; case 'settings.selectFolder': return 'Selecteer Map'; case 'settings.resetToDefault': return 'Herstel naar Standaard'; case 'settings.currentPath': return ({required Object path}) => 'Huidig: ${path}'; case 'settings.downloadLocationChanged': return 'Downloadlocatie gewijzigd'; case 'settings.downloadLocationReset': return 'Downloadlocatie hersteld naar standaard'; case 'settings.downloadLocationInvalid': return 'Geselecteerde map is niet beschrijfbaar'; case 'settings.downloadLocationSelectError': return 'Kan map niet selecteren'; case 'settings.downloadOnWifiOnly': return 'Alleen via WiFi downloaden'; case 'settings.downloadOnWifiOnlyDescription': return 'Voorkom downloads bij gebruik van mobiele data'; case 'settings.cellularDownloadBlocked': return 'Downloads zijn uitgeschakeld bij mobiele data. Maak verbinding met WiFi of wijzig de instelling.'; case 'search.hint': return 'Zoek films, series, muziek...'; case 'search.tryDifferentTerm': return 'Probeer een andere zoekterm'; case 'search.searchYourMedia': return 'Zoek in je media'; case 'search.enterTitleActorOrKeyword': return 'Voer een titel, acteur of trefwoord in'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Stel sneltoets in voor ${actionName}'; case 'hotkeys.clearShortcut': return 'Wis sneltoets'; case 'pinEntry.enterPin': return 'Voer PIN in'; case 'pinEntry.showPin': return 'Toon PIN'; case 'pinEntry.hidePin': return 'Verberg PIN'; case 'fileInfo.title': return 'Bestand info'; case 'fileInfo.video': return 'Video'; case 'fileInfo.audio': return 'Audio'; case 'fileInfo.file': return 'Bestand'; case 'fileInfo.advanced': return 'Geavanceerd'; case 'fileInfo.codec': return 'Codec'; case 'fileInfo.resolution': return 'Resolutie'; case 'fileInfo.bitrate': return 'Bitrate'; case 'fileInfo.frameRate': return 'Frame rate'; case 'fileInfo.aspectRatio': return 'Beeldverhouding'; case 'fileInfo.profile': return 'Profiel'; case 'fileInfo.bitDepth': return 'Bit diepte'; case 'fileInfo.colorSpace': return 'Kleurruimte'; case 'fileInfo.colorRange': return 'Kleurbereik'; case 'fileInfo.colorPrimaries': return 'Kleurprimaires'; case 'fileInfo.chromaSubsampling': return 'Chroma subsampling'; case 'fileInfo.channels': return 'Kanalen'; case 'fileInfo.path': return 'Pad'; case 'fileInfo.size': return 'Grootte'; case 'fileInfo.container': return 'Container'; case 'fileInfo.duration': return 'Duur'; case 'fileInfo.optimizedForStreaming': return 'Geoptimaliseerd voor streaming'; case 'fileInfo.has64bitOffsets': return '64-bit Offsets'; case 'mediaMenu.markAsWatched': return 'Markeer als gekeken'; case 'mediaMenu.markAsUnwatched': return 'Markeer als ongekeken'; case 'mediaMenu.removeFromContinueWatching': return 'Verwijder uit Doorgaan met kijken'; case 'mediaMenu.goToSeries': return 'Ga naar serie'; case 'mediaMenu.goToSeason': return 'Ga naar seizoen'; case 'mediaMenu.shufflePlay': return 'Willekeurig afspelen'; case 'mediaMenu.fileInfo': return 'Bestand info'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, film'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, TV-serie'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return 'bekeken'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '${percent} procent bekeken'; case 'accessibility.mediaCardUnwatched': return 'niet bekeken'; case 'accessibility.tapToPlay': return 'Tik om af te spelen'; case 'tooltips.shufflePlay': return 'Willekeurig afspelen'; case 'tooltips.markAsWatched': return 'Markeer als gekeken'; case 'tooltips.markAsUnwatched': return 'Markeer als ongekeken'; case 'videoControls.audioLabel': return 'Audio'; case 'videoControls.subtitlesLabel': return 'Ondertitels'; case 'videoControls.resetToZero': return 'Reset naar 0ms'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} speelt later af'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} speelt eerder af'; case 'videoControls.noOffset': return 'Geen offset'; case 'videoControls.letterbox': return 'Letterbox'; case 'videoControls.fillScreen': return 'Vul scherm'; case 'videoControls.stretch': return 'Uitrekken'; case 'videoControls.lockRotation': return 'Vergrendel rotatie'; case 'videoControls.unlockRotation': return 'Ontgrendel rotatie'; case 'videoControls.sleepTimer': return 'Slaaptimer'; case 'videoControls.timerActive': return 'Timer actief'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => 'Afspelen wordt gepauzeerd over ${duration}'; case 'videoControls.sleepTimerCompleted': return 'Slaaptimer voltooid - afspelen gepauzeerd'; case 'videoControls.playButton': return 'Afspelen'; case 'videoControls.pauseButton': return 'Pauzeren'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => 'Terugspoelen ${seconds} seconden'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => 'Vooruitspoelen ${seconds} seconden'; case 'videoControls.previousButton': return 'Vorige aflevering'; case 'videoControls.nextButton': return 'Volgende aflevering'; case 'videoControls.previousChapterButton': return 'Vorig hoofdstuk'; case 'videoControls.nextChapterButton': return 'Volgend hoofdstuk'; case 'videoControls.muteButton': return 'Dempen'; case 'videoControls.unmuteButton': return 'Dempen opheffen'; case 'videoControls.settingsButton': return 'Video-instellingen'; case 'videoControls.audioTrackButton': return 'Audiosporen'; case 'videoControls.subtitlesButton': return 'Ondertitels'; case 'videoControls.chaptersButton': return 'Hoofdstukken'; case 'videoControls.versionsButton': return 'Videoversies'; case 'videoControls.aspectRatioButton': return 'Beeldverhouding'; case 'videoControls.fullscreenButton': return 'Volledig scherm activeren'; case 'videoControls.exitFullscreenButton': return 'Volledig scherm verlaten'; case 'videoControls.rotationLockButton': return 'Rotatievergrendeling'; case 'videoControls.timelineSlider': return 'Videotijdlijn'; case 'videoControls.volumeSlider': return 'Volumeniveau'; case 'videoControls.backButton': return 'Terug'; case 'userStatus.admin': return 'Beheerder'; case 'userStatus.restricted': return 'Beperkt'; case 'userStatus.protected': return 'Beschermd'; case 'userStatus.current': return 'HUIDIG'; case 'messages.markedAsWatched': return 'Gemarkeerd als gekeken'; case 'messages.markedAsUnwatched': return 'Gemarkeerd als ongekeken'; case 'messages.markedAsWatchedOffline': return 'Gemarkeerd als gekeken (sync wanneer online)'; case 'messages.markedAsUnwatchedOffline': return 'Gemarkeerd als ongekeken (sync wanneer online)'; case 'messages.removedFromContinueWatching': return 'Verwijderd uit Doorgaan met kijken'; case 'messages.errorLoading': return ({required Object error}) => 'Fout: ${error}'; case 'messages.fileInfoNotAvailable': return 'Bestand informatie niet beschikbaar'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => 'Fout bij laden bestand info: ${error}'; case 'messages.errorLoadingSeries': return 'Fout bij laden serie'; case 'messages.errorLoadingSeason': return 'Fout bij laden seizoen'; case 'messages.musicNotSupported': return 'Muziek afspelen wordt nog niet ondersteund'; case 'messages.logsCleared': return 'Logs gewist'; case 'messages.logsCopied': return 'Logs gekopieerd naar klembord'; case 'messages.noLogsAvailable': return 'Geen logs beschikbaar'; case 'messages.libraryScanning': return ({required Object title}) => 'Scannen "${title}"...'; case 'messages.libraryScanStarted': return ({required Object title}) => 'Bibliotheek scan gestart voor "${title}"'; case 'messages.libraryScanFailed': return ({required Object error}) => 'Kon bibliotheek niet scannen: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => 'Metadata vernieuwen voor "${title}"...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => 'Metadata vernieuwen gestart voor "${title}"'; case 'messages.metadataRefreshFailed': return ({required Object error}) => 'Kon metadata niet vernieuwen: ${error}'; case 'messages.logoutConfirm': return 'Weet je zeker dat je wilt uitloggen?'; case 'messages.noSeasonsFound': return 'Geen seizoenen gevonden'; case 'messages.noEpisodesFound': return 'Geen afleveringen gevonden in eerste seizoen'; case 'messages.noEpisodesFoundGeneral': return 'Geen afleveringen gevonden'; case 'messages.noResultsFound': return 'Geen resultaten gevonden'; case 'messages.sleepTimerSet': return ({required Object label}) => 'Slaap timer ingesteld voor ${label}'; case 'messages.noItemsAvailable': return 'Geen items beschikbaar'; case 'messages.failedToCreatePlayQueue': return 'Kan afspeelwachtrij niet maken'; case 'messages.failedToCreatePlayQueueNoItems': return 'Kan afspeelwachtrij niet maken - geen items'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => 'Afspelen van ${action} mislukt: ${error}'; case 'messages.youAreOffline': return 'Je bent offline'; case 'messages.offlineFeatureUnavailable': return 'Deze functie vereist een internetverbinding. Je downloads en instellingen zijn nog steeds beschikbaar.'; case 'subtitlingStyling.stylingOptions': return 'Opmaak opties'; case 'subtitlingStyling.fontSize': return 'Lettergrootte'; case 'subtitlingStyling.textColor': return 'Tekstkleur'; case 'subtitlingStyling.borderSize': return 'Rand grootte'; case 'subtitlingStyling.borderColor': return 'Randkleur'; case 'subtitlingStyling.backgroundOpacity': return 'Achtergrond transparantie'; case 'subtitlingStyling.backgroundColor': return 'Achtergrondkleur'; case 'dialog.confirmAction': return 'Bevestig actie'; case 'dialog.cancel': return 'Annuleren'; case 'dialog.playNow': return 'Nu afspelen'; case 'discover.title': return 'Ontdekken'; case 'discover.switchProfile': return 'Wissel van profiel'; case 'discover.switchServer': return 'Wissel van server'; case 'discover.logout': return 'Uitloggen'; case 'discover.noContentAvailable': return 'Geen inhoud beschikbaar'; case 'discover.addMediaToLibraries': return 'Voeg wat media toe aan je bibliotheken'; case 'discover.continueWatching': return 'Verder kijken'; case 'discover.play': return 'Afspelen'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return 'Pauzeren'; case 'discover.overview': return 'Overzicht'; case 'discover.cast': return 'Acteurs'; case 'discover.seasons': return 'Seizoenen'; case 'discover.studio': return 'Studio'; case 'discover.rating': return 'Leeftijd'; case 'discover.watched': return 'Bekeken'; case 'discover.episodeCount': return ({required Object count}) => '${count} afleveringen'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '${watched}/${total} gekeken'; case 'discover.movie': return 'Film'; case 'discover.tvShow': return 'TV Serie'; case 'discover.minutesLeft': return ({required Object minutes}) => '${minutes} min over'; case 'errors.searchFailed': return ({required Object error}) => 'Zoeken mislukt: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => 'Verbinding time-out tijdens laden ${context}'; case 'errors.connectionFailed': return 'Kan geen verbinding maken met Plex server'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => 'Kon ${context} niet laden: ${error}'; case 'errors.noClientAvailable': return 'Geen client beschikbaar'; case 'errors.authenticationFailed': return ({required Object error}) => 'Authenticatie mislukt: ${error}'; case 'errors.couldNotLaunchUrl': return 'Kon auth URL niet openen'; case 'errors.pleaseEnterToken': return 'Voer een token in'; case 'errors.invalidToken': return 'Ongeldig token'; case 'errors.failedToVerifyToken': return ({required Object error}) => 'Kon token niet verifiëren: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => 'Kon niet wisselen naar ${displayName}'; case 'libraries.title': return 'Bibliotheken'; case 'libraries.scanLibraryFiles': return 'Scan bibliotheek bestanden'; case 'libraries.scanLibrary': return 'Scan bibliotheek'; case 'libraries.analyze': return 'Analyseren'; case 'libraries.analyzeLibrary': return 'Analyseer bibliotheek'; case 'libraries.refreshMetadata': return 'Vernieuw metadata'; case 'libraries.emptyTrash': return 'Prullenbak legen'; case 'libraries.emptyingTrash': return ({required Object title}) => 'Prullenbak legen voor "${title}"...'; case 'libraries.trashEmptied': return ({required Object title}) => 'Prullenbak geleegd voor "${title}"'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => 'Kon prullenbak niet legen: ${error}'; case 'libraries.analyzing': return ({required Object title}) => 'Analyseren "${title}"...'; case 'libraries.analysisStarted': return ({required Object title}) => 'Analyse gestart voor "${title}"'; case 'libraries.failedToAnalyze': return ({required Object error}) => 'Kon bibliotheek niet analyseren: ${error}'; case 'libraries.noLibrariesFound': return 'Geen bibliotheken gevonden'; case 'libraries.thisLibraryIsEmpty': return 'Deze bibliotheek is leeg'; case 'libraries.all': return 'Alles'; case 'libraries.clearAll': return 'Alles wissen'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => 'Weet je zeker dat je "${title}" wilt scannen?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => 'Weet je zeker dat je "${title}" wilt analyseren?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => 'Weet je zeker dat je metadata wilt vernieuwen voor "${title}"?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => 'Weet je zeker dat je de prullenbak wilt legen voor "${title}"?'; case 'libraries.manageLibraries': return 'Beheer bibliotheken'; case 'libraries.sort': return 'Sorteren'; case 'libraries.sortBy': return 'Sorteer op'; case 'libraries.filters': return 'Filters'; case 'libraries.confirmActionMessage': return 'Weet je zeker dat je deze actie wilt uitvoeren?'; case 'libraries.showLibrary': return 'Toon bibliotheek'; case 'libraries.hideLibrary': return 'Verberg bibliotheek'; case 'libraries.libraryOptions': return 'Bibliotheek opties'; case 'libraries.content': return 'bibliotheekinhoud'; case 'libraries.selectLibrary': return 'Bibliotheek kiezen'; case 'libraries.filtersWithCount': return ({required Object count}) => 'Filters (${count})'; case 'libraries.noRecommendations': return 'Geen aanbevelingen beschikbaar'; case 'libraries.noCollections': return 'Geen collecties in deze bibliotheek'; case 'libraries.noFoldersFound': return 'Geen mappen gevonden'; case 'libraries.folders': return 'mappen'; case 'libraries.tabs.recommended': return 'Aanbevolen'; case 'libraries.tabs.browse': return 'Bladeren'; case 'libraries.tabs.collections': return 'Collecties'; case 'libraries.tabs.playlists': return 'Afspeellijsten'; case 'libraries.groupings.all': return 'Alles'; case 'libraries.groupings.movies': return 'Films'; case 'libraries.groupings.shows': return 'Series'; case 'libraries.groupings.seasons': return 'Seizoenen'; case 'libraries.groupings.episodes': return 'Afleveringen'; case 'libraries.groupings.folders': return 'Mappen'; case 'about.title': return 'Over'; case 'about.openSourceLicenses': return 'Open Source licenties'; case 'about.versionLabel': return ({required Object version}) => 'Versie ${version}'; case 'about.appDescription': return 'Een mooie Plex client voor Flutter'; case 'about.viewLicensesDescription': return 'Bekijk licenties van third-party bibliotheken'; case 'serverSelection.allServerConnectionsFailed': return 'Kon niet verbinden met servers. Controleer je netwerk en probeer opnieuw.'; case 'serverSelection.noServersFound': return 'Geen servers gevonden'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => 'Geen servers gevonden voor ${username} (${email})'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => 'Kon servers niet laden: ${error}'; case 'hubDetail.title': return 'Titel'; case 'hubDetail.releaseYear': return 'Uitgavejaar'; case 'hubDetail.dateAdded': return 'Datum toegevoegd'; case 'hubDetail.rating': return 'Beoordeling'; case 'hubDetail.noItemsFound': return 'Geen items gevonden'; case 'logs.clearLogs': return 'Wis logs'; case 'logs.copyLogs': return 'Kopieer logs'; case 'logs.error': return 'Fout:'; case 'logs.stackTrace': return 'Stacktracering:'; case 'licenses.relatedPackages': return 'Gerelateerde pakketten'; case 'licenses.license': return 'Licentie'; case 'licenses.licenseNumber': return ({required Object number}) => 'Licentie ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} licenties'; case 'navigation.home': return 'Thuis'; case 'navigation.search': return 'Zoeken'; case 'navigation.libraries': return 'Bibliotheken'; case 'navigation.settings': return 'Instellingen'; case 'navigation.downloads': return 'Downloads'; case 'downloads.title': return 'Downloads'; case 'downloads.manage': return 'Beheren'; case 'downloads.tvShows': return 'Series'; case 'downloads.movies': return 'Films'; case 'downloads.noDownloads': return 'Nog geen downloads'; case 'downloads.noDownloadsDescription': return 'Gedownloade content verschijnt hier voor offline weergave'; case 'downloads.downloadNow': return 'Download'; case 'downloads.deleteDownload': return 'Download verwijderen'; case 'downloads.retryDownload': return 'Download opnieuw proberen'; case 'downloads.downloadQueued': return 'Download in wachtrij'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} afleveringen in wachtrij voor download'; case 'downloads.downloadDeleted': return 'Download verwijderd'; case 'downloads.deleteConfirm': return ({required Object title}) => 'Weet je zeker dat je "${title}" wilt verwijderen? Het gedownloade bestand wordt van je apparaat verwijderd.'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => 'Verwijderen van ${title}... (${current} van ${total})'; case 'playlists.title': return 'Afspeellijsten'; case 'playlists.noPlaylists': return 'Geen afspeellijsten gevonden'; case 'playlists.create': return 'Afspeellijst maken'; case 'playlists.playlistName': return 'Naam afspeellijst'; case 'playlists.enterPlaylistName': return 'Voer naam afspeellijst in'; case 'playlists.delete': return 'Afspeellijst verwijderen'; case 'playlists.removeItem': return 'Verwijderen uit afspeellijst'; case 'playlists.smartPlaylist': return 'Slimme afspeellijst'; case 'playlists.itemCount': return ({required Object count}) => '${count} items'; case 'playlists.oneItem': return '1 item'; case 'playlists.emptyPlaylist': return 'Deze afspeellijst is leeg'; case 'playlists.deleteConfirm': return 'Afspeellijst verwijderen?'; case 'playlists.deleteMessage': return ({required Object name}) => 'Weet je zeker dat je "${name}" wilt verwijderen?'; case 'playlists.created': return 'Afspeellijst gemaakt'; case 'playlists.deleted': return 'Afspeellijst verwijderd'; case 'playlists.itemAdded': return 'Toegevoegd aan afspeellijst'; case 'playlists.itemRemoved': return 'Verwijderd uit afspeellijst'; case 'playlists.selectPlaylist': return 'Selecteer afspeellijst'; case 'playlists.createNewPlaylist': return 'Nieuwe afspeellijst maken'; case 'playlists.errorCreating': return 'Fout bij maken afspeellijst'; case 'playlists.errorDeleting': return 'Fout bij verwijderen afspeellijst'; case 'playlists.errorLoading': return 'Fout bij laden afspeellijsten'; case 'playlists.errorAdding': return 'Fout bij toevoegen aan afspeellijst'; case 'playlists.errorReordering': return 'Fout bij herschikken van afspeellijstitem'; case 'playlists.errorRemoving': return 'Fout bij verwijderen uit afspeellijst'; case 'playlists.playlist': return 'Afspeellijst'; case 'collections.title': return 'Collecties'; case 'collections.collection': return 'Collectie'; case 'collections.empty': return 'Collectie is leeg'; case 'collections.unknownLibrarySection': return 'Kan niet verwijderen: onbekende bibliotheeksectie'; case 'collections.deleteCollection': return 'Collectie verwijderen'; case 'collections.deleteConfirm': return ({required Object title}) => 'Weet je zeker dat je "${title}" wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.'; case 'collections.deleted': return 'Collectie verwijderd'; case 'collections.deleteFailed': return 'Collectie verwijderen mislukt'; case 'collections.deleteFailedWithError': return ({required Object error}) => 'Collectie verwijderen mislukt: ${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => 'Collectie-items laden mislukt: ${error}'; case 'collections.selectCollection': return 'Selecteer collectie'; case 'collections.createNewCollection': return 'Nieuwe collectie maken'; case 'collections.collectionName': return 'Collectienaam'; case 'collections.enterCollectionName': return 'Voer collectienaam in'; case 'collections.addedToCollection': return 'Toegevoegd aan collectie'; case 'collections.errorAddingToCollection': return 'Fout bij toevoegen aan collectie'; case 'collections.created': return 'Collectie gemaakt'; case 'collections.removeFromCollection': return 'Verwijderen uit collectie'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => '"${title}" uit deze collectie verwijderen?'; case 'collections.removedFromCollection': return 'Uit collectie verwijderd'; case 'collections.removeFromCollectionFailed': return 'Verwijderen uit collectie mislukt'; case 'collections.removeFromCollectionError': return ({required Object error}) => 'Fout bij verwijderen uit collectie: ${error}'; default: return null; } } } extension on _StringsSv { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return 'Laddar...'; case 'auth.signInWithPlex': return 'Logga in med Plex'; case 'auth.showQRCode': return 'Visa QR-kod'; case 'auth.cancel': return 'Avbryt'; case 'auth.authenticate': return 'Autentisera'; case 'auth.retry': return 'Försök igen'; case 'auth.debugEnterToken': return 'Debug: Ange Plex-token'; case 'auth.plexTokenLabel': return 'Plex-autentiseringstoken'; case 'auth.plexTokenHint': return 'Ange din Plex.tv-token'; case 'auth.authenticationTimeout': return 'Autentisering tog för lång tid. Försök igen.'; case 'auth.scanQRCodeInstruction': return 'Skanna denna QR-kod med en enhet inloggad på Plex för att autentisera.'; case 'auth.waitingForAuth': return 'Väntar på autentisering...\nVänligen slutför inloggning i din webbläsare.'; case 'common.cancel': return 'Avbryt'; case 'common.save': return 'Spara'; case 'common.close': return 'Stäng'; case 'common.clear': return 'Rensa'; case 'common.reset': return 'Återställ'; case 'common.later': return 'Senare'; case 'common.submit': return 'Skicka'; case 'common.confirm': return 'Bekräfta'; case 'common.retry': return 'Försök igen'; case 'common.logout': return 'Logga ut'; case 'common.unknown': return 'Okänd'; case 'common.refresh': return 'Uppdatera'; case 'common.yes': return 'Ja'; case 'common.no': return 'Nej'; case 'common.delete': return 'Ta bort'; case 'common.shuffle': return 'Blanda'; case 'common.addTo': return 'Lägg till i...'; case 'screens.licenses': return 'Licenser'; case 'screens.selectServer': return 'Välj server'; case 'screens.switchProfile': return 'Byt profil'; case 'screens.subtitleStyling': return 'Undertext-styling'; case 'screens.search': return 'Sök'; case 'screens.logs': return 'Loggar'; case 'update.available': return 'Uppdatering tillgänglig'; case 'update.versionAvailable': return ({required Object version}) => 'Version ${version} är tillgänglig'; case 'update.currentVersion': return ({required Object version}) => 'Nuvarande: ${version}'; case 'update.skipVersion': return 'Hoppa över denna version'; case 'update.viewRelease': return 'Visa release'; case 'update.latestVersion': return 'Du har den senaste versionen'; case 'update.checkFailed': return 'Misslyckades att kontrollera uppdateringar'; case 'settings.title': return 'Inställningar'; case 'settings.language': return 'Språk'; case 'settings.theme': return 'Tema'; case 'settings.appearance': return 'Utseende'; case 'settings.videoPlayback': return 'Videouppspelning'; case 'settings.advanced': return 'Avancerat'; case 'settings.useSeasonPostersDescription': return 'Visa säsongsaffisch istället för serieaffisch för avsnitt'; case 'settings.showHeroSectionDescription': return 'Visa utvalda innehållskarusell på startsidan'; case 'settings.secondsLabel': return 'Sekunder'; case 'settings.minutesLabel': return 'Minuter'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => 'Ange tid (${min}-${max})'; case 'settings.systemTheme': return 'System'; case 'settings.systemThemeDescription': return 'Följ systeminställningar'; case 'settings.lightTheme': return 'Ljust'; case 'settings.darkTheme': return 'Mörkt'; case 'settings.libraryDensity': return 'Biblioteksdensitet'; case 'settings.compact': return 'Kompakt'; case 'settings.compactDescription': return 'Mindre kort, fler objekt synliga'; case 'settings.normal': return 'Normal'; case 'settings.normalDescription': return 'Standardstorlek'; case 'settings.comfortable': return 'Bekväm'; case 'settings.comfortableDescription': return 'Större kort, färre objekt synliga'; case 'settings.viewMode': return 'Visningsläge'; case 'settings.gridView': return 'Rutnät'; case 'settings.gridViewDescription': return 'Visa objekt i rutnätslayout'; case 'settings.listView': return 'Lista'; case 'settings.listViewDescription': return 'Visa objekt i listlayout'; case 'settings.useSeasonPosters': return 'Använd säsongsaffischer'; case 'settings.showHeroSection': return 'Visa hjältesektion'; case 'settings.hardwareDecoding': return 'Hårdvaruavkodning'; case 'settings.hardwareDecodingDescription': return 'Använd hårdvaruacceleration när tillgängligt'; case 'settings.bufferSize': return 'Bufferstorlek'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return 'Undertext-styling'; case 'settings.subtitleStylingDescription': return 'Anpassa undertextutseende'; case 'settings.smallSkipDuration': return 'Kort hoppvaraktighet'; case 'settings.largeSkipDuration': return 'Lång hoppvaraktighet'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} sekunder'; case 'settings.defaultSleepTimer': return 'Standard sovtimer'; case 'settings.minutesUnit': return ({required Object minutes}) => '${minutes} minuter'; case 'settings.rememberTrackSelections': return 'Kom ihåg spårval per serie/film'; case 'settings.rememberTrackSelectionsDescription': return 'Spara automatiskt ljud- och undertextspråkpreferenser när du ändrar spår under uppspelning'; case 'settings.videoPlayerControls': return 'Videospelar-kontroller'; case 'settings.keyboardShortcuts': return 'Tangentbordsgenvägar'; case 'settings.keyboardShortcutsDescription': return 'Anpassa tangentbordsgenvägar'; case 'settings.videoPlayerNavigation': return 'Navigering i videospelaren'; case 'settings.videoPlayerNavigationDescription': return 'Använd piltangenter för att navigera videospelarens kontroller'; case 'settings.debugLogging': return 'Felsökningsloggning'; case 'settings.debugLoggingDescription': return 'Aktivera detaljerad loggning för felsökning'; case 'settings.viewLogs': return 'Visa loggar'; case 'settings.viewLogsDescription': return 'Visa applikationsloggar'; case 'settings.clearCache': return 'Rensa cache'; case 'settings.clearCacheDescription': return 'Detta rensar alla cachade bilder och data. Appen kan ta längre tid att ladda innehåll efter cache-rensning.'; case 'settings.clearCacheSuccess': return 'Cache rensad framgångsrikt'; case 'settings.resetSettings': return 'Återställ inställningar'; case 'settings.resetSettingsDescription': return 'Detta återställer alla inställningar till standardvärden. Denna åtgärd kan inte ångras.'; case 'settings.resetSettingsSuccess': return 'Inställningar återställda framgångsrikt'; case 'settings.shortcutsReset': return 'Genvägar återställda till standard'; case 'settings.about': return 'Om'; case 'settings.aboutDescription': return 'Appinformation och licenser'; case 'settings.updates': return 'Uppdateringar'; case 'settings.updateAvailable': return 'Uppdatering tillgänglig'; case 'settings.checkForUpdates': return 'Kontrollera uppdateringar'; case 'settings.validationErrorEnterNumber': return 'Vänligen ange ett giltigt nummer'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => 'Tiden måste vara mellan ${min} och ${max} ${unit}'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => 'Genväg redan tilldelad ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => 'Genväg uppdaterad för ${action}'; case 'settings.autoSkip': return 'Auto Hoppa Över'; case 'settings.autoSkipIntro': return 'Hoppa Över Intro Automatiskt'; case 'settings.autoSkipIntroDescription': return 'Hoppa automatiskt över intro-markörer efter några sekunder'; case 'settings.autoSkipCredits': return 'Hoppa Över Credits Automatiskt'; case 'settings.autoSkipCreditsDescription': return 'Hoppa automatiskt över credits och spela nästa avsnitt'; case 'settings.autoSkipDelay': return 'Fördröjning Auto Hoppa Över'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => 'Vänta ${seconds} sekunder innan automatisk överhoppning'; case 'settings.downloads': return 'Nedladdningar'; case 'settings.downloadLocationDescription': return 'Välj var nedladdat innehåll ska lagras'; case 'settings.downloadLocationDefault': return 'Standard (App-lagring)'; case 'settings.downloadLocationCustom': return 'Anpassad Plats'; case 'settings.selectFolder': return 'Välj Mapp'; case 'settings.resetToDefault': return 'Återställ till Standard'; case 'settings.currentPath': return ({required Object path}) => 'Nuvarande: ${path}'; case 'settings.downloadLocationChanged': return 'Nedladdningsplats ändrad'; case 'settings.downloadLocationReset': return 'Nedladdningsplats återställd till standard'; case 'settings.downloadLocationInvalid': return 'Vald mapp är inte skrivbar'; case 'settings.downloadLocationSelectError': return 'Kunde inte välja mapp'; case 'settings.downloadOnWifiOnly': return 'Ladda ner endast på WiFi'; case 'settings.downloadOnWifiOnlyDescription': return 'Förhindra nedladdningar vid användning av mobildata'; case 'settings.cellularDownloadBlocked': return 'Nedladdningar är inaktiverade på mobildata. Anslut till WiFi eller ändra inställningen.'; case 'search.hint': return 'Sök filmer, serier, musik...'; case 'search.tryDifferentTerm': return 'Prova en annan sökterm'; case 'search.searchYourMedia': return 'Sök i dina media'; case 'search.enterTitleActorOrKeyword': return 'Ange en titel, skådespelare eller nyckelord'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => 'Sätt genväg för ${actionName}'; case 'hotkeys.clearShortcut': return 'Rensa genväg'; case 'pinEntry.enterPin': return 'Ange PIN'; case 'pinEntry.showPin': return 'Visa PIN'; case 'pinEntry.hidePin': return 'Dölj PIN'; case 'fileInfo.title': return 'Filinformation'; case 'fileInfo.video': return 'Video'; case 'fileInfo.audio': return 'Ljud'; case 'fileInfo.file': return 'Fil'; case 'fileInfo.advanced': return 'Avancerat'; case 'fileInfo.codec': return 'Kodek'; case 'fileInfo.resolution': return 'Upplösning'; case 'fileInfo.bitrate': return 'Bithastighet'; case 'fileInfo.frameRate': return 'Bildfrekvens'; case 'fileInfo.aspectRatio': return 'Bildförhållande'; case 'fileInfo.profile': return 'Profil'; case 'fileInfo.bitDepth': return 'Bitdjup'; case 'fileInfo.colorSpace': return 'Färgrymd'; case 'fileInfo.colorRange': return 'Färgområde'; case 'fileInfo.colorPrimaries': return 'Färggrunder'; case 'fileInfo.chromaSubsampling': return 'Kroma-undersampling'; case 'fileInfo.channels': return 'Kanaler'; case 'fileInfo.path': return 'Sökväg'; case 'fileInfo.size': return 'Storlek'; case 'fileInfo.container': return 'Container'; case 'fileInfo.duration': return 'Varaktighet'; case 'fileInfo.optimizedForStreaming': return 'Optimerad för streaming'; case 'fileInfo.has64bitOffsets': return '64-bit offset'; case 'mediaMenu.markAsWatched': return 'Markera som sedd'; case 'mediaMenu.markAsUnwatched': return 'Markera som osedd'; case 'mediaMenu.removeFromContinueWatching': return 'Ta bort från Fortsätt titta'; case 'mediaMenu.goToSeries': return 'Gå till serie'; case 'mediaMenu.goToSeason': return 'Gå till säsong'; case 'mediaMenu.shufflePlay': return 'Blanda uppspelning'; case 'mediaMenu.fileInfo': return 'Filinformation'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, film'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, TV-serie'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return 'sedd'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '${percent} procent sedd'; case 'accessibility.mediaCardUnwatched': return 'osedd'; case 'accessibility.tapToPlay': return 'Tryck för att spela'; case 'tooltips.shufflePlay': return 'Blanda uppspelning'; case 'tooltips.markAsWatched': return 'Markera som sedd'; case 'tooltips.markAsUnwatched': return 'Markera som osedd'; case 'videoControls.audioLabel': return 'Ljud'; case 'videoControls.subtitlesLabel': return 'Undertexter'; case 'videoControls.resetToZero': return 'Återställ till 0ms'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} spelas senare'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} spelas tidigare'; case 'videoControls.noOffset': return 'Ingen offset'; case 'videoControls.letterbox': return 'Letterbox'; case 'videoControls.fillScreen': return 'Fyll skärm'; case 'videoControls.stretch': return 'Sträck'; case 'videoControls.lockRotation': return 'Lås rotation'; case 'videoControls.unlockRotation': return 'Lås upp rotation'; case 'videoControls.sleepTimer': return 'Sovtimer'; case 'videoControls.timerActive': return 'Timer aktiv'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => 'Uppspelningen pausas om ${duration}'; case 'videoControls.sleepTimerCompleted': return 'Sovtimer slutförd - uppspelning pausad'; case 'videoControls.playButton': return 'Spela'; case 'videoControls.pauseButton': return 'Pausa'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => 'Spola bakåt ${seconds} sekunder'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => 'Spola framåt ${seconds} sekunder'; case 'videoControls.previousButton': return 'Föregående avsnitt'; case 'videoControls.nextButton': return 'Nästa avsnitt'; case 'videoControls.previousChapterButton': return 'Föregående kapitel'; case 'videoControls.nextChapterButton': return 'Nästa kapitel'; case 'videoControls.muteButton': return 'Tysta'; case 'videoControls.unmuteButton': return 'Slå på ljud'; case 'videoControls.settingsButton': return 'Videoinställningar'; case 'videoControls.audioTrackButton': return 'Ljudspår'; case 'videoControls.subtitlesButton': return 'Undertexter'; case 'videoControls.chaptersButton': return 'Kapitel'; case 'videoControls.versionsButton': return 'Videoversioner'; case 'videoControls.aspectRatioButton': return 'Bildförhållande'; case 'videoControls.fullscreenButton': return 'Aktivera helskärm'; case 'videoControls.exitFullscreenButton': return 'Avsluta helskärm'; case 'videoControls.rotationLockButton': return 'Rotationslås'; case 'videoControls.timelineSlider': return 'Videotidslinje'; case 'videoControls.volumeSlider': return 'Volymnivå'; case 'videoControls.backButton': return 'Tillbaka'; case 'userStatus.admin': return 'Admin'; case 'userStatus.restricted': return 'Begränsad'; case 'userStatus.protected': return 'Skyddad'; case 'userStatus.current': return 'NUVARANDE'; case 'messages.markedAsWatched': return 'Markerad som sedd'; case 'messages.markedAsUnwatched': return 'Markerad som osedd'; case 'messages.markedAsWatchedOffline': return 'Markerad som sedd (synkroniseras när online)'; case 'messages.markedAsUnwatchedOffline': return 'Markerad som osedd (synkroniseras när online)'; case 'messages.removedFromContinueWatching': return 'Borttagen från Fortsätt titta'; case 'messages.errorLoading': return ({required Object error}) => 'Fel: ${error}'; case 'messages.fileInfoNotAvailable': return 'Filinformation inte tillgänglig'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => 'Fel vid laddning av filinformation: ${error}'; case 'messages.errorLoadingSeries': return 'Fel vid laddning av serie'; case 'messages.errorLoadingSeason': return 'Fel vid laddning av säsong'; case 'messages.musicNotSupported': return 'Musikuppspelning stöds inte ännu'; case 'messages.logsCleared': return 'Loggar rensade'; case 'messages.logsCopied': return 'Loggar kopierade till urklipp'; case 'messages.noLogsAvailable': return 'Inga loggar tillgängliga'; case 'messages.libraryScanning': return ({required Object title}) => 'Skannar "${title}"...'; case 'messages.libraryScanStarted': return ({required Object title}) => 'Biblioteksskanning startad för "${title}"'; case 'messages.libraryScanFailed': return ({required Object error}) => 'Misslyckades att skanna bibliotek: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => 'Uppdaterar metadata för "${title}"...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => 'Metadata-uppdatering startad för "${title}"'; case 'messages.metadataRefreshFailed': return ({required Object error}) => 'Misslyckades att uppdatera metadata: ${error}'; case 'messages.logoutConfirm': return 'Är du säker på att du vill logga ut?'; case 'messages.noSeasonsFound': return 'Inga säsonger hittades'; case 'messages.noEpisodesFound': return 'Inga avsnitt hittades i första säsongen'; case 'messages.noEpisodesFoundGeneral': return 'Inga avsnitt hittades'; case 'messages.noResultsFound': return 'Inga resultat hittades'; case 'messages.sleepTimerSet': return ({required Object label}) => 'Sovtimer inställd för ${label}'; case 'messages.noItemsAvailable': return 'Inga objekt tillgängliga'; case 'messages.failedToCreatePlayQueue': return 'Det gick inte att skapa uppspelningskö'; case 'messages.failedToCreatePlayQueueNoItems': return 'Det gick inte att skapa uppspelningskö – inga objekt'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => 'Kunde inte ${action}: ${error}'; case 'messages.youAreOffline': return 'Du är offline'; case 'messages.offlineFeatureUnavailable': return 'Denna funktion kräver en internetanslutning. Dina nedladdningar och inställningar är fortfarande tillgängliga.'; case 'subtitlingStyling.stylingOptions': return 'Stilalternativ'; case 'subtitlingStyling.fontSize': return 'Teckenstorlek'; case 'subtitlingStyling.textColor': return 'Textfärg'; case 'subtitlingStyling.borderSize': return 'Kantstorlek'; case 'subtitlingStyling.borderColor': return 'Kantfärg'; case 'subtitlingStyling.backgroundOpacity': return 'Bakgrundsopacitet'; case 'subtitlingStyling.backgroundColor': return 'Bakgrundsfärg'; case 'dialog.confirmAction': return 'Bekräfta åtgärd'; case 'dialog.cancel': return 'Avbryt'; case 'dialog.playNow': return 'Spela nu'; case 'discover.title': return 'Upptäck'; case 'discover.switchProfile': return 'Byt profil'; case 'discover.switchServer': return 'Byt server'; case 'discover.logout': return 'Logga ut'; case 'discover.noContentAvailable': return 'Inget innehåll tillgängligt'; case 'discover.addMediaToLibraries': return 'Lägg till media till dina bibliotek'; case 'discover.continueWatching': return 'Fortsätt titta'; case 'discover.play': return 'Spela'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return 'Pausa'; case 'discover.overview': return 'Översikt'; case 'discover.cast': return 'Rollbesättning'; case 'discover.seasons': return 'Säsonger'; case 'discover.studio': return 'Studio'; case 'discover.rating': return 'Åldersgräns'; case 'discover.watched': return 'Tittad'; case 'discover.episodeCount': return ({required Object count}) => '${count} avsnitt'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '${watched}/${total} sedda'; case 'discover.movie': return 'Film'; case 'discover.tvShow': return 'TV-serie'; case 'discover.minutesLeft': return ({required Object minutes}) => '${minutes} min kvar'; case 'errors.searchFailed': return ({required Object error}) => 'Sökning misslyckades: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => 'Anslutnings-timeout vid laddning ${context}'; case 'errors.connectionFailed': return 'Kan inte ansluta till Plex-server'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => 'Misslyckades att ladda ${context}: ${error}'; case 'errors.noClientAvailable': return 'Ingen klient tillgänglig'; case 'errors.authenticationFailed': return ({required Object error}) => 'Autentisering misslyckades: ${error}'; case 'errors.couldNotLaunchUrl': return 'Kunde inte öppna autentiserings-URL'; case 'errors.pleaseEnterToken': return 'Vänligen ange en token'; case 'errors.invalidToken': return 'Ogiltig token'; case 'errors.failedToVerifyToken': return ({required Object error}) => 'Misslyckades att verifiera token: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => 'Misslyckades att byta till ${displayName}'; case 'libraries.title': return 'Bibliotek'; case 'libraries.scanLibraryFiles': return 'Skanna biblioteksfiler'; case 'libraries.scanLibrary': return 'Skanna bibliotek'; case 'libraries.analyze': return 'Analysera'; case 'libraries.analyzeLibrary': return 'Analysera bibliotek'; case 'libraries.refreshMetadata': return 'Uppdatera metadata'; case 'libraries.emptyTrash': return 'Töm papperskorg'; case 'libraries.emptyingTrash': return ({required Object title}) => 'Tömmer papperskorg för "${title}"...'; case 'libraries.trashEmptied': return ({required Object title}) => 'Papperskorg tömd för "${title}"'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => 'Misslyckades att tömma papperskorg: ${error}'; case 'libraries.analyzing': return ({required Object title}) => 'Analyserar "${title}"...'; case 'libraries.analysisStarted': return ({required Object title}) => 'Analys startad för "${title}"'; case 'libraries.failedToAnalyze': return ({required Object error}) => 'Misslyckades att analysera bibliotek: ${error}'; case 'libraries.noLibrariesFound': return 'Inga bibliotek hittades'; case 'libraries.thisLibraryIsEmpty': return 'Detta bibliotek är tomt'; case 'libraries.all': return 'Alla'; case 'libraries.clearAll': return 'Rensa alla'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => 'Är du säker på att du vill skanna "${title}"?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => 'Är du säker på att du vill analysera "${title}"?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => 'Är du säker på att du vill uppdatera metadata för "${title}"?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => 'Är du säker på att du vill tömma papperskorgen för "${title}"?'; case 'libraries.manageLibraries': return 'Hantera bibliotek'; case 'libraries.sort': return 'Sortera'; case 'libraries.sortBy': return 'Sortera efter'; case 'libraries.filters': return 'Filter'; case 'libraries.confirmActionMessage': return 'Är du säker på att du vill utföra denna åtgärd?'; case 'libraries.showLibrary': return 'Visa bibliotek'; case 'libraries.hideLibrary': return 'Dölj bibliotek'; case 'libraries.libraryOptions': return 'Biblioteksalternativ'; case 'libraries.content': return 'bibliotekets innehåll'; case 'libraries.selectLibrary': return 'Välj bibliotek'; case 'libraries.filtersWithCount': return ({required Object count}) => 'Filter (${count})'; case 'libraries.noRecommendations': return 'Inga rekommendationer tillgängliga'; case 'libraries.noCollections': return 'Inga samlingar i det här biblioteket'; case 'libraries.noFoldersFound': return 'Inga mappar hittades'; case 'libraries.folders': return 'mappar'; case 'libraries.tabs.recommended': return 'Rekommenderat'; case 'libraries.tabs.browse': return 'Bläddra'; case 'libraries.tabs.collections': return 'Samlingar'; case 'libraries.tabs.playlists': return 'Spellistor'; case 'libraries.groupings.all': return 'Alla'; case 'libraries.groupings.movies': return 'Filmer'; case 'libraries.groupings.shows': return 'Serier'; case 'libraries.groupings.seasons': return 'Säsonger'; case 'libraries.groupings.episodes': return 'Avsnitt'; case 'libraries.groupings.folders': return 'Mappar'; case 'about.title': return 'Om'; case 'about.openSourceLicenses': return 'Öppen källkod-licenser'; case 'about.versionLabel': return ({required Object version}) => 'Version ${version}'; case 'about.appDescription': return 'En vacker Plex-klient för Flutter'; case 'about.viewLicensesDescription': return 'Visa licenser för tredjepartsbibliotek'; case 'serverSelection.allServerConnectionsFailed': return 'Misslyckades att ansluta till servrar. Kontrollera ditt nätverk och försök igen.'; case 'serverSelection.noServersFound': return 'Inga servrar hittades'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => 'Inga servrar hittades för ${username} (${email})'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => 'Misslyckades att ladda servrar: ${error}'; case 'hubDetail.title': return 'Titel'; case 'hubDetail.releaseYear': return 'Utgivningsår'; case 'hubDetail.dateAdded': return 'Datum tillagd'; case 'hubDetail.rating': return 'Betyg'; case 'hubDetail.noItemsFound': return 'Inga objekt hittades'; case 'logs.clearLogs': return 'Rensa loggar'; case 'logs.copyLogs': return 'Kopiera loggar'; case 'logs.error': return 'Fel:'; case 'logs.stackTrace': return 'Stack trace:'; case 'licenses.relatedPackages': return 'Relaterade paket'; case 'licenses.license': return 'Licens'; case 'licenses.licenseNumber': return ({required Object number}) => 'Licens ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} licenser'; case 'navigation.home': return 'Hem'; case 'navigation.search': return 'Sök'; case 'navigation.libraries': return 'Bibliotek'; case 'navigation.settings': return 'Inställningar'; case 'navigation.downloads': return 'Nedladdningar'; case 'downloads.title': return 'Nedladdningar'; case 'downloads.manage': return 'Hantera'; case 'downloads.tvShows': return 'TV-serier'; case 'downloads.movies': return 'Filmer'; case 'downloads.noDownloads': return 'Inga nedladdningar ännu'; case 'downloads.noDownloadsDescription': return 'Nedladdat innehåll visas här för offline-visning'; case 'downloads.downloadNow': return 'Ladda ner'; case 'downloads.deleteDownload': return 'Ta bort nedladdning'; case 'downloads.retryDownload': return 'Försök igen'; case 'downloads.downloadQueued': return 'Nedladdning köad'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} avsnitt köade för nedladdning'; case 'downloads.downloadDeleted': return 'Nedladdning borttagen'; case 'downloads.deleteConfirm': return ({required Object title}) => 'Är du säker på att du vill ta bort "${title}"? Den nedladdade filen kommer att tas bort från din enhet.'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => 'Tar bort ${title}... (${current} av ${total})'; case 'playlists.title': return 'Spellistor'; case 'playlists.noPlaylists': return 'Inga spellistor hittades'; case 'playlists.create': return 'Skapa spellista'; case 'playlists.playlistName': return 'Spellistans namn'; case 'playlists.enterPlaylistName': return 'Ange spellistans namn'; case 'playlists.delete': return 'Ta bort spellista'; case 'playlists.removeItem': return 'Ta bort från spellista'; case 'playlists.smartPlaylist': return 'Smart spellista'; case 'playlists.itemCount': return ({required Object count}) => '${count} objekt'; case 'playlists.oneItem': return '1 objekt'; case 'playlists.emptyPlaylist': return 'Denna spellista är tom'; case 'playlists.deleteConfirm': return 'Ta bort spellista?'; case 'playlists.deleteMessage': return ({required Object name}) => 'Är du säker på att du vill ta bort "${name}"?'; case 'playlists.created': return 'Spellista skapad'; case 'playlists.deleted': return 'Spellista borttagen'; case 'playlists.itemAdded': return 'Tillagd i spellista'; case 'playlists.itemRemoved': return 'Borttagen från spellista'; case 'playlists.selectPlaylist': return 'Välj spellista'; case 'playlists.createNewPlaylist': return 'Skapa ny spellista'; case 'playlists.errorCreating': return 'Det gick inte att skapa spellista'; case 'playlists.errorDeleting': return 'Det gick inte att ta bort spellista'; case 'playlists.errorLoading': return 'Det gick inte att ladda spellistor'; case 'playlists.errorAdding': return 'Det gick inte att lägga till i spellista'; case 'playlists.errorReordering': return 'Det gick inte att omordna spellisteobjekt'; case 'playlists.errorRemoving': return 'Det gick inte att ta bort från spellista'; case 'playlists.playlist': return 'Spellista'; case 'collections.title': return 'Samlingar'; case 'collections.collection': return 'Samling'; case 'collections.empty': return 'Samlingen är tom'; case 'collections.unknownLibrarySection': return 'Kan inte ta bort: okänd bibliotekssektion'; case 'collections.deleteCollection': return 'Ta bort samling'; case 'collections.deleteConfirm': return ({required Object title}) => 'Är du säker på att du vill ta bort "${title}"? Detta går inte att ångra.'; case 'collections.deleted': return 'Samling borttagen'; case 'collections.deleteFailed': return 'Det gick inte att ta bort samlingen'; case 'collections.deleteFailedWithError': return ({required Object error}) => 'Det gick inte att ta bort samlingen: ${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => 'Det gick inte att läsa in samlingsobjekt: ${error}'; case 'collections.selectCollection': return 'Välj samling'; case 'collections.createNewCollection': return 'Skapa ny samling'; case 'collections.collectionName': return 'Samlingsnamn'; case 'collections.enterCollectionName': return 'Ange samlingsnamn'; case 'collections.addedToCollection': return 'Tillagd i samling'; case 'collections.errorAddingToCollection': return 'Fel vid tillägg i samling'; case 'collections.created': return 'Samling skapad'; case 'collections.removeFromCollection': return 'Ta bort från samling'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => 'Ta bort "${title}" från denna samling?'; case 'collections.removedFromCollection': return 'Borttagen från samling'; case 'collections.removeFromCollectionFailed': return 'Misslyckades med att ta bort från samling'; case 'collections.removeFromCollectionError': return ({required Object error}) => 'Fel vid borttagning från samling: ${error}'; default: return null; } } } extension on _StringsZh { dynamic _flatMapFunction(String path) { switch (path) { case 'app.title': return 'Plezy'; case 'app.loading': return '加载中...'; case 'auth.signInWithPlex': return '使用 Plex 登录'; case 'auth.showQRCode': return '显示二维码'; case 'auth.cancel': return '取消'; case 'auth.authenticate': return '验证'; case 'auth.retry': return '重试'; case 'auth.debugEnterToken': return '调试:输入 Plex Token'; case 'auth.plexTokenLabel': return 'Plex 授权令牌 (Auth Token)'; case 'auth.plexTokenHint': return '输入你的 Plex.tv 令牌'; case 'auth.authenticationTimeout': return '验证超时。请重试。'; case 'auth.scanQRCodeInstruction': return '请使用已登录 Plex 的设备扫描此二维码进行验证。'; case 'auth.waitingForAuth': return '等待验证中...\n请在你的浏览器中完成登录。'; case 'common.cancel': return '取消'; case 'common.save': return '保存'; case 'common.close': return '关闭'; case 'common.clear': return '清除'; case 'common.reset': return '重置'; case 'common.later': return '稍后'; case 'common.submit': return '提交'; case 'common.confirm': return '确认'; case 'common.retry': return '重试'; case 'common.logout': return '登出'; case 'common.unknown': return '未知'; case 'common.refresh': return '刷新'; case 'common.yes': return '是'; case 'common.no': return '否'; case 'common.delete': return '删除'; case 'common.shuffle': return '随机播放'; case 'common.addTo': return '添加到...'; case 'screens.licenses': return '许可证'; case 'screens.selectServer': return '选择服务器'; case 'screens.switchProfile': return '切换配置文件'; case 'screens.subtitleStyling': return '字幕样式'; case 'screens.search': return '搜索'; case 'screens.logs': return '日志'; case 'update.available': return '有可用更新'; case 'update.versionAvailable': return ({required Object version}) => '版本 ${version} 已发布'; case 'update.currentVersion': return ({required Object version}) => '当前版本: ${version}'; case 'update.skipVersion': return '跳过此版本'; case 'update.viewRelease': return '查看发布详情'; case 'update.latestVersion': return '已安装的版本是可用的最新版本'; case 'update.checkFailed': return '无法检查更新'; case 'settings.title': return '设置'; case 'settings.language': return '语言'; case 'settings.theme': return '主题'; case 'settings.appearance': return '外观'; case 'settings.videoPlayback': return '视频播放'; case 'settings.advanced': return '高级'; case 'settings.useSeasonPostersDescription': return '为剧集显示季海报而非剧集海报'; case 'settings.showHeroSectionDescription': return '在主屏幕上显示精选内容轮播区'; case 'settings.secondsLabel': return '秒'; case 'settings.minutesLabel': return '分钟'; case 'settings.secondsShort': return 's'; case 'settings.minutesShort': return 'm'; case 'settings.durationHint': return ({required Object min, required Object max}) => '输入时长 (${min}-${max})'; case 'settings.systemTheme': return '系统'; case 'settings.systemThemeDescription': return '跟随系统设置'; case 'settings.lightTheme': return '浅色'; case 'settings.darkTheme': return '深色'; case 'settings.libraryDensity': return '媒体库密度'; case 'settings.compact': return '紧凑'; case 'settings.compactDescription': return '卡片更小,显示更多项目'; case 'settings.normal': return '标准'; case 'settings.normalDescription': return '默认尺寸'; case 'settings.comfortable': return '舒适'; case 'settings.comfortableDescription': return '卡片更大,显示更少项目'; case 'settings.viewMode': return '视图模式'; case 'settings.gridView': return '网格视图'; case 'settings.gridViewDescription': return '以网格布局显示项目'; case 'settings.listView': return '列表视图'; case 'settings.listViewDescription': return '以列表布局显示项目'; case 'settings.useSeasonPosters': return '使用季海报'; case 'settings.showHeroSection': return '显示主要精选区'; case 'settings.hardwareDecoding': return '硬件解码'; case 'settings.hardwareDecodingDescription': return '如果可用,使用硬件加速'; case 'settings.bufferSize': return '缓冲区大小'; case 'settings.bufferSizeMB': return ({required Object size}) => '${size}MB'; case 'settings.subtitleStyling': return '字幕样式'; case 'settings.subtitleStylingDescription': return '调整字幕外观'; case 'settings.smallSkipDuration': return '短跳过时长'; case 'settings.largeSkipDuration': return '长跳过时长'; case 'settings.secondsUnit': return ({required Object seconds}) => '${seconds} 秒'; case 'settings.defaultSleepTimer': return '默认睡眠定时器'; case 'settings.minutesUnit': return ({required Object minutes}) => '${minutes} 分钟'; case 'settings.rememberTrackSelections': return '记住每个剧集/电影的音轨选择'; case 'settings.rememberTrackSelectionsDescription': return '在播放过程中更改音轨时自动保存音频和字幕语言偏好'; case 'settings.videoPlayerControls': return '视频播放器控制'; case 'settings.keyboardShortcuts': return '键盘快捷键'; case 'settings.keyboardShortcutsDescription': return '自定义键盘快捷键'; case 'settings.videoPlayerNavigation': return '视频播放器导航'; case 'settings.videoPlayerNavigationDescription': return '使用方向键导航视频播放器控件'; case 'settings.debugLogging': return '调试日志'; case 'settings.debugLoggingDescription': return '启用详细日志记录以便故障排除'; case 'settings.viewLogs': return '查看日志'; case 'settings.viewLogsDescription': return '查看应用程序日志'; case 'settings.clearCache': return '清除缓存'; case 'settings.clearCacheDescription': return '这将清除所有缓存的图片和数据。清除缓存后,应用程序加载内容可能会变慢。'; case 'settings.clearCacheSuccess': return '缓存清除成功'; case 'settings.resetSettings': return '重置设置'; case 'settings.resetSettingsDescription': return '这会将所有设置重置为其默认值。此操作无法撤销。'; case 'settings.resetSettingsSuccess': return '设置重置成功'; case 'settings.shortcutsReset': return '快捷键已重置为默认值'; case 'settings.about': return '关于'; case 'settings.aboutDescription': return '应用程序信息和许可证'; case 'settings.updates': return '更新'; case 'settings.updateAvailable': return '有可用更新'; case 'settings.checkForUpdates': return '检查更新'; case 'settings.validationErrorEnterNumber': return '请输入一个有效的数字'; case 'settings.validationErrorDuration': return ({required Object min, required Object max, required Object unit}) => '时长必须介于 ${min} 和 ${max} ${unit} 之间'; case 'settings.shortcutAlreadyAssigned': return ({required Object action}) => '快捷键已被分配给 ${action}'; case 'settings.shortcutUpdated': return ({required Object action}) => '快捷键已为 ${action} 更新'; case 'settings.autoSkip': return '自动跳过'; case 'settings.autoSkipIntro': return '自动跳过片头'; case 'settings.autoSkipIntroDescription': return '几秒钟后自动跳过片头标记'; case 'settings.autoSkipCredits': return '自动跳过片尾'; case 'settings.autoSkipCreditsDescription': return '自动跳过片尾并播放下一集'; case 'settings.autoSkipDelay': return '自动跳过延迟'; case 'settings.autoSkipDelayDescription': return ({required Object seconds}) => '自动跳过前等待 ${seconds} 秒'; case 'settings.downloads': return '下载'; case 'settings.downloadLocationDescription': return '选择下载内容的存储位置'; case 'settings.downloadLocationDefault': return '默认(应用存储)'; case 'settings.downloadLocationCustom': return '自定义位置'; case 'settings.selectFolder': return '选择文件夹'; case 'settings.resetToDefault': return '重置为默认'; case 'settings.currentPath': return ({required Object path}) => '当前: ${path}'; case 'settings.downloadLocationChanged': return '下载位置已更改'; case 'settings.downloadLocationReset': return '下载位置已重置为默认'; case 'settings.downloadLocationInvalid': return '所选文件夹不可写入'; case 'settings.downloadLocationSelectError': return '选择文件夹失败'; case 'settings.downloadOnWifiOnly': return '仅在 WiFi 时下载'; case 'settings.downloadOnWifiOnlyDescription': return '使用蜂窝数据时禁止下载'; case 'settings.cellularDownloadBlocked': return '蜂窝数据下已禁用下载。请连接 WiFi 或更改设置。'; case 'search.hint': return '搜索电影、系列、音乐...'; case 'search.tryDifferentTerm': return '尝试不同的搜索词'; case 'search.searchYourMedia': return '搜索媒体'; case 'search.enterTitleActorOrKeyword': return '输入标题、演员或关键词'; case 'hotkeys.setShortcutFor': return ({required Object actionName}) => '为 ${actionName} 设置快捷键'; case 'hotkeys.clearShortcut': return '清除快捷键'; case 'pinEntry.enterPin': return '输入 PIN'; case 'pinEntry.showPin': return '显示 PIN'; case 'pinEntry.hidePin': return '隐藏 PIN'; case 'fileInfo.title': return '文件信息'; case 'fileInfo.video': return '视频'; case 'fileInfo.audio': return '音频'; case 'fileInfo.file': return '文件'; case 'fileInfo.advanced': return '高级'; case 'fileInfo.codec': return '编解码器'; case 'fileInfo.resolution': return '分辨率'; case 'fileInfo.bitrate': return '比特率'; case 'fileInfo.frameRate': return '帧率'; case 'fileInfo.aspectRatio': return '宽高比'; case 'fileInfo.profile': return '配置文件'; case 'fileInfo.bitDepth': return '位深度'; case 'fileInfo.colorSpace': return '色彩空间'; case 'fileInfo.colorRange': return '色彩范围'; case 'fileInfo.colorPrimaries': return '颜色原色'; case 'fileInfo.chromaSubsampling': return '色度子采样'; case 'fileInfo.channels': return '声道'; case 'fileInfo.path': return '路径'; case 'fileInfo.size': return '大小'; case 'fileInfo.container': return '容器'; case 'fileInfo.duration': return '时长'; case 'fileInfo.optimizedForStreaming': return '已优化用于流媒体'; case 'fileInfo.has64bitOffsets': return '64位偏移量'; case 'mediaMenu.markAsWatched': return '标记为已观看'; case 'mediaMenu.markAsUnwatched': return '标记为未观看'; case 'mediaMenu.removeFromContinueWatching': return '从继续观看中移除'; case 'mediaMenu.goToSeries': return '转到系列'; case 'mediaMenu.goToSeason': return '转到季'; case 'mediaMenu.shufflePlay': return '随机播放'; case 'mediaMenu.fileInfo': return '文件信息'; case 'accessibility.mediaCardMovie': return ({required Object title}) => '${title}, 电影'; case 'accessibility.mediaCardShow': return ({required Object title}) => '${title}, 电视剧'; case 'accessibility.mediaCardEpisode': return ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; case 'accessibility.mediaCardSeason': return ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; case 'accessibility.mediaCardWatched': return '已观看'; case 'accessibility.mediaCardPartiallyWatched': return ({required Object percent}) => '已观看 ${percent} 百分比'; case 'accessibility.mediaCardUnwatched': return '未观看'; case 'accessibility.tapToPlay': return '点击播放'; case 'tooltips.shufflePlay': return '随机播放'; case 'tooltips.markAsWatched': return '标记为已观看'; case 'tooltips.markAsUnwatched': return '标记为未观看'; case 'videoControls.audioLabel': return '音频'; case 'videoControls.subtitlesLabel': return '字幕'; case 'videoControls.resetToZero': return '重置为 0ms'; case 'videoControls.addTime': return ({required Object amount, required Object unit}) => '+${amount}${unit}'; case 'videoControls.minusTime': return ({required Object amount, required Object unit}) => '-${amount}${unit}'; case 'videoControls.playsLater': return ({required Object label}) => '${label} 播放较晚'; case 'videoControls.playsEarlier': return ({required Object label}) => '${label} 播放较早'; case 'videoControls.noOffset': return '无偏移'; case 'videoControls.letterbox': return '信箱模式(Letterbox)'; case 'videoControls.fillScreen': return '填充屏幕'; case 'videoControls.stretch': return '拉伸'; case 'videoControls.lockRotation': return '锁定旋转'; case 'videoControls.unlockRotation': return '解锁旋转'; case 'videoControls.sleepTimer': return '睡眠定时器'; case 'videoControls.timerActive': return '定时器已激活'; case 'videoControls.playbackWillPauseIn': return ({required Object duration}) => '播放将在 ${duration} 后暂停'; case 'videoControls.sleepTimerCompleted': return '睡眠定时器已完成 - 播放已暂停'; case 'videoControls.playButton': return '播放'; case 'videoControls.pauseButton': return '暂停'; case 'videoControls.seekBackwardButton': return ({required Object seconds}) => '后退 ${seconds} 秒'; case 'videoControls.seekForwardButton': return ({required Object seconds}) => '前进 ${seconds} 秒'; case 'videoControls.previousButton': return '上一集'; case 'videoControls.nextButton': return '下一集'; case 'videoControls.previousChapterButton': return '上一章节'; case 'videoControls.nextChapterButton': return '下一章节'; case 'videoControls.muteButton': return '静音'; case 'videoControls.unmuteButton': return '取消静音'; case 'videoControls.settingsButton': return '视频设置'; case 'videoControls.audioTrackButton': return '音轨'; case 'videoControls.subtitlesButton': return '字幕'; case 'videoControls.chaptersButton': return '章节'; case 'videoControls.versionsButton': return '视频版本'; case 'videoControls.aspectRatioButton': return '宽高比'; case 'videoControls.fullscreenButton': return '进入全屏'; case 'videoControls.exitFullscreenButton': return '退出全屏'; case 'videoControls.rotationLockButton': return '旋转锁定'; case 'videoControls.timelineSlider': return '视频时间轴'; case 'videoControls.volumeSlider': return '音量调节'; case 'videoControls.backButton': return '返回'; case 'userStatus.admin': return '管理员'; case 'userStatus.restricted': return '受限'; case 'userStatus.protected': return '受保护'; case 'userStatus.current': return '当前'; case 'messages.markedAsWatched': return '已标记为已观看'; case 'messages.markedAsUnwatched': return '已标记为未观看'; case 'messages.markedAsWatchedOffline': return '已标记为已观看 (将在联网时同步)'; case 'messages.markedAsUnwatchedOffline': return '已标记为未观看 (将在联网时同步)'; case 'messages.removedFromContinueWatching': return '已从继续观看中移除'; case 'messages.errorLoading': return ({required Object error}) => '错误: ${error}'; case 'messages.fileInfoNotAvailable': return '文件信息不可用'; case 'messages.errorLoadingFileInfo': return ({required Object error}) => '加载文件信息时出错: ${error}'; case 'messages.errorLoadingSeries': return '加载系列时出错'; case 'messages.errorLoadingSeason': return '加载季时出错'; case 'messages.musicNotSupported': return '尚不支持播放音乐'; case 'messages.logsCleared': return '日志已清除'; case 'messages.logsCopied': return '日志已复制到剪贴板'; case 'messages.noLogsAvailable': return '没有可用日志'; case 'messages.libraryScanning': return ({required Object title}) => '正在扫描 “${title}”...'; case 'messages.libraryScanStarted': return ({required Object title}) => '已开始扫描 “${title}” 媒体库'; case 'messages.libraryScanFailed': return ({required Object error}) => '无法扫描媒体库: ${error}'; case 'messages.metadataRefreshing': return ({required Object title}) => '正在刷新 “${title}” 的元数据...'; case 'messages.metadataRefreshStarted': return ({required Object title}) => '已开始刷新 “${title}” 的元数据'; case 'messages.metadataRefreshFailed': return ({required Object error}) => '无法刷新元数据: ${error}'; case 'messages.logoutConfirm': return '你确定要登出吗?'; case 'messages.noSeasonsFound': return '未找到季'; case 'messages.noEpisodesFound': return '在第一季中未找到剧集'; case 'messages.noEpisodesFoundGeneral': return '未找到剧集'; case 'messages.noResultsFound': return '未找到结果'; case 'messages.sleepTimerSet': return ({required Object label}) => '睡眠定时器已设置为 ${label}'; case 'messages.noItemsAvailable': return '没有可用的项目'; case 'messages.failedToCreatePlayQueue': return '创建播放队列失败'; case 'messages.failedToCreatePlayQueueNoItems': return '创建播放队列失败 - 没有项目'; case 'messages.failedPlayback': return ({required Object action, required Object error}) => '无法${action}: ${error}'; case 'messages.youAreOffline': return '您已离线'; case 'messages.offlineFeatureUnavailable': return '此功能需要网络连接。您的下载内容和设置仍然可用。'; case 'subtitlingStyling.stylingOptions': return '样式选项'; case 'subtitlingStyling.fontSize': return '字号'; case 'subtitlingStyling.textColor': return '文本颜色'; case 'subtitlingStyling.borderSize': return '边框大小'; case 'subtitlingStyling.borderColor': return '边框颜色'; case 'subtitlingStyling.backgroundOpacity': return '背景不透明度'; case 'subtitlingStyling.backgroundColor': return '背景颜色'; case 'dialog.confirmAction': return '确认操作'; case 'dialog.cancel': return '取消'; case 'dialog.playNow': return '立即播放'; case 'discover.title': return '发现'; case 'discover.switchProfile': return '切换配置文件'; case 'discover.switchServer': return '切换服务器'; case 'discover.logout': return '登出'; case 'discover.noContentAvailable': return '没有可用内容'; case 'discover.addMediaToLibraries': return '请向你的媒体库添加一些媒体'; case 'discover.continueWatching': return '继续观看'; case 'discover.play': return '播放'; case 'discover.playEpisode': return ({required Object season, required Object episode}) => 'S${season}E${episode}'; case 'discover.pause': return '暂停'; case 'discover.overview': return '概述'; case 'discover.cast': return '演员表'; case 'discover.seasons': return '季数'; case 'discover.studio': return '制作公司'; case 'discover.rating': return '年龄分级'; case 'discover.watched': return '已观看'; case 'discover.episodeCount': return ({required Object count}) => '${count} 集'; case 'discover.watchedProgress': return ({required Object watched, required Object total}) => '已观看 ${watched}/${total} 集'; case 'discover.movie': return '电影'; case 'discover.tvShow': return '电视剧'; case 'discover.minutesLeft': return ({required Object minutes}) => '剩余 ${minutes} 分钟'; case 'errors.searchFailed': return ({required Object error}) => '搜索失败: ${error}'; case 'errors.connectionTimeout': return ({required Object context}) => '加载 ${context} 时连接超时'; case 'errors.connectionFailed': return '无法连接到 Plex 服务器'; case 'errors.failedToLoad': return ({required Object context, required Object error}) => '无法加载 ${context}: ${error}'; case 'errors.noClientAvailable': return '没有可用客户端'; case 'errors.authenticationFailed': return ({required Object error}) => '验证失败: ${error}'; case 'errors.couldNotLaunchUrl': return '无法打开授权 URL'; case 'errors.pleaseEnterToken': return '请输入一个令牌'; case 'errors.invalidToken': return '令牌无效'; case 'errors.failedToVerifyToken': return ({required Object error}) => '无法验证令牌: ${error}'; case 'errors.failedToSwitchProfile': return ({required Object displayName}) => '无法切换到 ${displayName}'; case 'libraries.title': return '媒体库'; case 'libraries.scanLibraryFiles': return '扫描媒体库文件'; case 'libraries.scanLibrary': return '扫描媒体库'; case 'libraries.analyze': return '分析'; case 'libraries.analyzeLibrary': return '分析媒体库'; case 'libraries.refreshMetadata': return '刷新元数据'; case 'libraries.emptyTrash': return '清空回收站'; case 'libraries.emptyingTrash': return ({required Object title}) => '正在清空 “${title}” 的回收站...'; case 'libraries.trashEmptied': return ({required Object title}) => '已清空 “${title}” 的回收站'; case 'libraries.failedToEmptyTrash': return ({required Object error}) => '无法清空回收站: ${error}'; case 'libraries.analyzing': return ({required Object title}) => '正在分析 “${title}”...'; case 'libraries.analysisStarted': return ({required Object title}) => '已开始分析 “${title}”'; case 'libraries.failedToAnalyze': return ({required Object error}) => '无法分析媒体库: ${error}'; case 'libraries.noLibrariesFound': return '未找到媒体库'; case 'libraries.thisLibraryIsEmpty': return '此媒体库为空'; case 'libraries.all': return '全部'; case 'libraries.clearAll': return '全部清除'; case 'libraries.scanLibraryConfirm': return ({required Object title}) => '确定要扫描 “${title}” 吗?'; case 'libraries.analyzeLibraryConfirm': return ({required Object title}) => '确定要分析 “${title}” 吗?'; case 'libraries.refreshMetadataConfirm': return ({required Object title}) => '确定要刷新 “${title}” 的元数据吗?'; case 'libraries.emptyTrashConfirm': return ({required Object title}) => '确定要清空 “${title}” 的回收站吗?'; case 'libraries.manageLibraries': return '管理媒体库'; case 'libraries.sort': return '排序'; case 'libraries.sortBy': return '排序依据'; case 'libraries.filters': return '筛选器'; case 'libraries.confirmActionMessage': return '确定要执行此操作吗?'; case 'libraries.showLibrary': return '显示媒体库'; case 'libraries.hideLibrary': return '隐藏媒体库'; case 'libraries.libraryOptions': return '媒体库选项'; case 'libraries.content': return '媒体库内容'; case 'libraries.selectLibrary': return '选择媒体库'; case 'libraries.filtersWithCount': return ({required Object count}) => '筛选器(${count})'; case 'libraries.noRecommendations': return '暂无推荐'; case 'libraries.noCollections': return '此媒体库中没有合集'; case 'libraries.noFoldersFound': return '未找到文件夹'; case 'libraries.folders': return '文件夹'; case 'libraries.tabs.recommended': return '推荐'; case 'libraries.tabs.browse': return '浏览'; case 'libraries.tabs.collections': return '合集'; case 'libraries.tabs.playlists': return '播放列表'; case 'libraries.groupings.all': return '全部'; case 'libraries.groupings.movies': return '电影'; case 'libraries.groupings.shows': return '剧集'; case 'libraries.groupings.seasons': return '季'; case 'libraries.groupings.episodes': return '集'; case 'libraries.groupings.folders': return '文件夹'; case 'about.title': return '关于'; case 'about.openSourceLicenses': return '开源许可证'; case 'about.versionLabel': return ({required Object version}) => '版本 ${version}'; case 'about.appDescription': return '一款精美的 Flutter Plex 客户端'; case 'about.viewLicensesDescription': return '查看第三方库的许可证'; case 'serverSelection.allServerConnectionsFailed': return '无法连接到任何服务器。请检查你的网络并重试。'; case 'serverSelection.noServersFound': return '未找到服务器'; case 'serverSelection.noServersFoundForAccount': return ({required Object username, required Object email}) => '未找到 ${username} (${email}) 的服务器'; case 'serverSelection.failedToLoadServers': return ({required Object error}) => '无法加载服务器: ${error}'; case 'hubDetail.title': return '标题'; case 'hubDetail.releaseYear': return '发行年份'; case 'hubDetail.dateAdded': return '添加日期'; case 'hubDetail.rating': return '评分'; case 'hubDetail.noItemsFound': return '未找到项目'; case 'logs.clearLogs': return '清除日志'; case 'logs.copyLogs': return '复制日志'; case 'logs.error': return '错误:'; case 'logs.stackTrace': return '堆栈跟踪 (Stack Trace):'; case 'licenses.relatedPackages': return '相关软件包'; case 'licenses.license': return '许可证'; case 'licenses.licenseNumber': return ({required Object number}) => '许可证 ${number}'; case 'licenses.licensesCount': return ({required Object count}) => '${count} 个许可证'; case 'navigation.home': return '主页'; case 'navigation.search': return '搜索'; case 'navigation.libraries': return '媒体库'; case 'navigation.settings': return '设置'; case 'navigation.downloads': return '下载'; case 'downloads.title': return '下载'; case 'downloads.manage': return '管理'; case 'downloads.tvShows': return '电视剧'; case 'downloads.movies': return '电影'; case 'downloads.noDownloads': return '暂无下载'; case 'downloads.noDownloadsDescription': return '下载的内容将在此处显示以供离线观看'; case 'downloads.downloadNow': return '下载'; case 'downloads.deleteDownload': return '删除下载'; case 'downloads.retryDownload': return '重试下载'; case 'downloads.downloadQueued': return '下载已排队'; case 'downloads.episodesQueued': return ({required Object count}) => '${count} 集已加入下载队列'; case 'downloads.downloadDeleted': return '下载已删除'; case 'downloads.deleteConfirm': return ({required Object title}) => '确定要删除 "${title}" 吗?下载的文件将从您的设备中删除。'; case 'downloads.deletingWithProgress': return ({required Object title, required Object current, required Object total}) => '正在删除 ${title}... (${current}/${total})'; case 'playlists.title': return '播放列表'; case 'playlists.noPlaylists': return '未找到播放列表'; case 'playlists.create': return '创建播放列表'; case 'playlists.playlistName': return '播放列表名称'; case 'playlists.enterPlaylistName': return '输入播放列表名称'; case 'playlists.delete': return '删除播放列表'; case 'playlists.removeItem': return '从播放列表中移除'; case 'playlists.smartPlaylist': return '智能播放列表'; case 'playlists.itemCount': return ({required Object count}) => '${count} 个项目'; case 'playlists.oneItem': return '1 个项目'; case 'playlists.emptyPlaylist': return '此播放列表为空'; case 'playlists.deleteConfirm': return '删除播放列表?'; case 'playlists.deleteMessage': return ({required Object name}) => '确定要删除 "${name}" 吗?'; case 'playlists.created': return '播放列表已创建'; case 'playlists.deleted': return '播放列表已删除'; case 'playlists.itemAdded': return '已添加到播放列表'; case 'playlists.itemRemoved': return '已从播放列表中移除'; case 'playlists.selectPlaylist': return '选择播放列表'; case 'playlists.createNewPlaylist': return '创建新播放列表'; case 'playlists.errorCreating': return '创建播放列表失败'; case 'playlists.errorDeleting': return '删除播放列表失败'; case 'playlists.errorLoading': return '加载播放列表失败'; case 'playlists.errorAdding': return '添加到播放列表失败'; case 'playlists.errorReordering': return '重新排序播放列表项目失败'; case 'playlists.errorRemoving': return '从播放列表中移除失败'; case 'playlists.playlist': return '播放列表'; case 'collections.title': return '合集'; case 'collections.collection': return '合集'; case 'collections.empty': return '合集为空'; case 'collections.unknownLibrarySection': return '无法删除:未知的媒体库分区'; case 'collections.deleteCollection': return '删除合集'; case 'collections.deleteConfirm': return ({required Object title}) => '确定要删除"${title}"吗?此操作无法撤销。'; case 'collections.deleted': return '已删除合集'; case 'collections.deleteFailed': return '删除合集失败'; case 'collections.deleteFailedWithError': return ({required Object error}) => '删除合集失败:${error}'; case 'collections.failedToLoadItems': return ({required Object error}) => '加载合集项目失败:${error}'; case 'collections.selectCollection': return '选择合集'; case 'collections.createNewCollection': return '创建新合集'; case 'collections.collectionName': return '合集名称'; case 'collections.enterCollectionName': return '输入合集名称'; case 'collections.addedToCollection': return '已添加到合集'; case 'collections.errorAddingToCollection': return '添加到合集失败'; case 'collections.created': return '已创建合集'; case 'collections.removeFromCollection': return '从合集移除'; case 'collections.removeFromCollectionConfirm': return ({required Object title}) => '将“${title}”从此合集移除?'; case 'collections.removedFromCollection': return '已从合集移除'; case 'collections.removeFromCollectionFailed': return '从合集移除失败'; case 'collections.removeFromCollectionError': return ({required Object error}) => '从合集移除时出错:${error}'; default: return null; } } }