Files
plezy/lib/i18n/strings.g.dart
T

7473 lines
419 KiB
Dart
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// 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<AppLocale, Translations> {
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<AppLocale, Translations> 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<AppLocale, Translations> {
TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance);
static InheritedLocaleData<AppLocale, Translations> of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(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<AppLocale, Translations> {
LocaleSettings._() : super(utils: AppLocaleUtils.instance);
static final instance = LocaleSettings._();
// static aliases (checkout base methods for documentation)
static AppLocale get currentLocale => instance.currentLocale;
static Stream<AppLocale> 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<Locale> get supportedLocales => instance.supportedLocales;
@Deprecated('Use [AppLocaleUtils.supportedLocalesRaw]') static List<String> 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<AppLocale, Translations> {
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<Locale> get supportedLocales => instance.supportedLocales;
static List<String> get supportedLocalesRaw => instance.supportedLocalesRaw;
}
// translations
// Path: <root>
class Translations implements BaseTranslations<AppLocale, Translations> {
/// Returns the current translations of the given [context].
///
/// Usage:
/// final t = Translations.of(context);
static Translations of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(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<String, Node>? 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 <en>.
@override final TranslationMetadata<AppLocale, Translations> $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: <root>
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<String, Node>? 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 <de>.
@override final TranslationMetadata<AppLocale, Translations> $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: <root>
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<String, Node>? 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 <it>.
@override final TranslationMetadata<AppLocale, Translations> $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: <root>
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<String, Node>? 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 <nl>.
@override final TranslationMetadata<AppLocale, Translations> $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: <root>
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<String, Node>? 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 <sv>.
@override final TranslationMetadata<AppLocale, Translations> $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: <root>
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<String, Node>? 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 <zh>.
@override final TranslationMetadata<AppLocale, Translations> $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;
}
}
}