aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs29
-rw-r--r--Emby.Server.Implementations/Activity/ActivityManager.cs8
-rw-r--r--Emby.Server.Implementations/Activity/ActivityRepository.cs5
-rw-r--r--Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs2
-rw-r--r--Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs8
-rw-r--r--Emby.Server.Implementations/ApplicationHost.cs65
-rw-r--r--Emby.Server.Implementations/Archiving/ZipClient.cs3
-rw-r--r--Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs4
-rw-r--r--Emby.Server.Implementations/Browser/BrowserLauncher.cs2
-rw-r--r--Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs8
-rw-r--r--Emby.Server.Implementations/Channels/ChannelImageProvider.cs8
-rw-r--r--Emby.Server.Implementations/Channels/ChannelManager.cs43
-rw-r--r--Emby.Server.Implementations/Channels/ChannelPostScanTask.cs8
-rw-r--r--Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs6
-rw-r--r--Emby.Server.Implementations/Collections/CollectionImageProvider.cs13
-rw-r--r--Emby.Server.Implementations/Collections/CollectionManager.cs20
-rw-r--r--Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs10
-rw-r--r--Emby.Server.Implementations/Cryptography/CryptographyProvider.cs2
-rw-r--r--Emby.Server.Implementations/Data/BaseSqliteRepository.cs9
-rw-r--r--Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs12
-rw-r--r--Emby.Server.Implementations/Data/ManagedConnection.cs9
-rw-r--r--Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs12
-rw-r--r--Emby.Server.Implementations/Data/SqliteExtensions.cs41
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs81
-rw-r--r--Emby.Server.Implementations/Data/SqliteUserDataRepository.cs6
-rw-r--r--Emby.Server.Implementations/Data/SqliteUserRepository.cs8
-rw-r--r--Emby.Server.Implementations/Data/TypeMapper.cs6
-rw-r--r--Emby.Server.Implementations/Devices/DeviceId.cs3
-rw-r--r--Emby.Server.Implementations/Devices/DeviceManager.cs36
-rw-r--r--Emby.Server.Implementations/Diagnostics/CommonProcess.cs4
-rw-r--r--Emby.Server.Implementations/Diagnostics/ProcessFactory.cs2
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs27
-rw-r--r--Emby.Server.Implementations/Emby.Server.Implementations.csproj2
-rw-r--r--Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs12
-rw-r--r--Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs16
-rw-r--r--Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs16
-rw-r--r--Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs2
-rw-r--r--Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs8
-rw-r--r--Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs11
-rw-r--r--Emby.Server.Implementations/EntryPoints/StartupWizard.cs4
-rw-r--r--Emby.Server.Implementations/EntryPoints/SystemEvents.cs11
-rw-r--r--Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs8
-rw-r--r--Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs18
-rw-r--r--Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs4
-rw-r--r--Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs4
-rw-r--r--Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs3
-rw-r--r--Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs8
-rw-r--r--Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs2
-rw-r--r--Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs20
-rw-r--r--Emby.Server.Implementations/HttpServer/FileWriter.cs6
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpListenerHost.cs14
-rw-r--r--Emby.Server.Implementations/HttpServer/HttpResultFactory.cs22
-rw-r--r--Emby.Server.Implementations/HttpServer/IHttpListener.cs4
-rw-r--r--Emby.Server.Implementations/HttpServer/LoggerUtils.cs2
-rw-r--r--Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs2
-rw-r--r--Emby.Server.Implementations/HttpServer/ResponseFilter.cs2
-rw-r--r--Emby.Server.Implementations/HttpServer/Security/AuthService.cs11
-rw-r--r--Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs11
-rw-r--r--Emby.Server.Implementations/HttpServer/Security/SessionContext.cs8
-rw-r--r--Emby.Server.Implementations/HttpServer/StreamWriter.cs3
-rw-r--r--Emby.Server.Implementations/HttpServer/WebSocketConnection.cs18
-rw-r--r--Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs4
-rw-r--r--Emby.Server.Implementations/IO/FileRefresher.cs6
-rw-r--r--Emby.Server.Implementations/IO/IsoManager.cs6
-rw-r--r--Emby.Server.Implementations/IO/LibraryMonitor.cs17
-rw-r--r--Emby.Server.Implementations/IO/ManagedFileSystem.cs14
-rw-r--r--Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs4
-rw-r--r--Emby.Server.Implementations/IO/StreamHelper.cs4
-rw-r--r--Emby.Server.Implementations/IO/ThrottledStream.cs6
-rw-r--r--Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs20
-rw-r--r--Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs11
-rw-r--r--Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs3
-rw-r--r--Emby.Server.Implementations/Library/ExclusiveLiveStream.cs4
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs87
-rw-r--r--Emby.Server.Implementations/Library/LiveStreamHelper.cs12
-rw-r--r--Emby.Server.Implementations/Library/MediaSourceManager.cs36
-rw-r--r--Emby.Server.Implementations/Library/MediaStreamSelector.cs6
-rw-r--r--Emby.Server.Implementations/Library/MusicManager.cs10
-rw-r--r--Emby.Server.Implementations/Library/PathExtensions.cs4
-rw-r--r--Emby.Server.Implementations/Library/ResolverHelper.cs11
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs14
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs16
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs13
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs11
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs2
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs4
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs14
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs6
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs8
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs8
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs10
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs4
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs5
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs21
-rw-r--r--Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs5
-rw-r--r--Emby.Server.Implementations/Library/SearchEngine.cs16
-rw-r--r--Emby.Server.Implementations/Library/UserDataManager.cs16
-rw-r--r--Emby.Server.Implementations/Library/UserManager.cs50
-rw-r--r--Emby.Server.Implementations/Library/UserViewManager.cs20
-rw-r--r--Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs4
-rw-r--r--Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs10
-rw-r--r--Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs4
-rw-r--r--Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs6
-rw-r--r--Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs2
-rw-r--r--Emby.Server.Implementations/Library/Validators/GenresValidator.cs7
-rw-r--r--Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs4
-rw-r--r--Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs7
-rw-r--r--Emby.Server.Implementations/Library/Validators/PeopleValidator.cs10
-rw-r--r--Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs4
-rw-r--r--Emby.Server.Implementations/Library/Validators/StudiosValidator.cs5
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs7
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs99
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs12
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs1
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs6
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs6
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs7
-rw-r--r--Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs34
-rw-r--r--Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs4
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs14
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvManager.cs69
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs19
-rw-r--r--Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs7
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs14
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs29
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs16
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs11
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs11
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs23
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs38
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs16
-rw-r--r--Emby.Server.Implementations/Localization/Core/ar.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/bg-BG.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/ca.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/cs.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/da.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/de.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/el.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/en-GB.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/en-US.json194
-rw-r--r--Emby.Server.Implementations/Localization/Core/es-AR.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/es-MX.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/es.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/fa.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/fr-CA.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/fr.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/gsw.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/he.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/hr.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/hu.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/it.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/kk.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/ko.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/lt-LT.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/ms.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/nb.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/nl.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/pl.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/pt-BR.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/pt-PT.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/ru.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/sk.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/sl-SI.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/sv.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/tr.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/zh-CN.json196
-rw-r--r--Emby.Server.Implementations/Localization/Core/zh-HK.json196
-rw-r--r--Emby.Server.Implementations/Localization/LocalizationManager.cs30
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/br.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/ca.txt4
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/co.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/dk.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/es.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/fr.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/ie.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/jp.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/kz.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/mx.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/nl.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/nz.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/ro.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/uk.txt2
-rw-r--r--Emby.Server.Implementations/Localization/Ratings/us.txt2
-rw-r--r--Emby.Server.Implementations/Localization/TextLocalizer.cs2
-rw-r--r--Emby.Server.Implementations/Localization/countries.json1656
-rw-r--r--Emby.Server.Implementations/Localization/iso6392.txt4
-rw-r--r--Emby.Server.Implementations/MediaEncoder/EncodingManager.cs18
-rw-r--r--Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs4
-rw-r--r--Emby.Server.Implementations/Net/IWebSocket.cs4
-rw-r--r--Emby.Server.Implementations/Net/SocketFactory.cs4
-rw-r--r--Emby.Server.Implementations/Net/UdpSocket.cs6
-rw-r--r--Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs4
-rw-r--r--Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs12
-rw-r--r--Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs6
-rw-r--r--Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs152
-rw-r--r--Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs14
-rw-r--r--Emby.Server.Implementations/Networking/NetworkManager.cs37
-rw-r--r--Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs2
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs19
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistManager.cs25
-rw-r--r--Emby.Server.Implementations/Reflection/AssemblyInfo.cs2
-rw-r--r--Emby.Server.Implementations/ResourceFileManager.cs18
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs18
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs5
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs5
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs2
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs4
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs16
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs5
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs5
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/TaskManager.cs11
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs4
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs4
-rw-r--r--Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs5
-rw-r--r--Emby.Server.Implementations/Security/AuthenticationRepository.cs9
-rw-r--r--Emby.Server.Implementations/Security/EncryptionManager.cs6
-rw-r--r--Emby.Server.Implementations/Serialization/JsonSerializer.cs28
-rw-r--r--Emby.Server.Implementations/Serialization/XmlSerializer.cs7
-rw-r--r--Emby.Server.Implementations/ServerApplicationPaths.cs2
-rw-r--r--Emby.Server.Implementations/Services/RequestHelper.cs2
-rw-r--r--Emby.Server.Implementations/Services/ServiceController.cs6
-rw-r--r--Emby.Server.Implementations/Services/ServiceExec.cs4
-rw-r--r--Emby.Server.Implementations/Services/ServiceHandler.cs11
-rw-r--r--Emby.Server.Implementations/Services/ServiceMethod.cs4
-rw-r--r--Emby.Server.Implementations/Services/ServicePath.cs8
-rw-r--r--Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs4
-rw-r--r--Emby.Server.Implementations/Services/SwaggerService.cs259
-rw-r--r--Emby.Server.Implementations/Services/UrlExtensions.cs4
-rw-r--r--Emby.Server.Implementations/Session/HttpSessionController.cs12
-rw-r--r--Emby.Server.Implementations/Session/SessionManager.cs53
-rw-r--r--Emby.Server.Implementations/Session/SessionWebSocketListener.cs10
-rw-r--r--Emby.Server.Implementations/Session/WebSocketController.cs13
-rw-r--r--Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/AlbumComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/AlphanumComparator.cs6
-rw-r--r--Emby.Server.Implementations/Sorting/ArtistComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/CriticRatingComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/DateCreatedComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/DatePlayedComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/GameSystemComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/IsFolderComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/IsPlayedComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/NameComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/PlayCountComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/PlayersComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/PremiereDateComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/ProductionYearComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/RandomComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/RuntimeComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs2
-rw-r--r--Emby.Server.Implementations/Sorting/SortNameComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/StartDateComparer.cs4
-rw-r--r--Emby.Server.Implementations/Sorting/StudioComparer.cs6
-rw-r--r--Emby.Server.Implementations/StartupOptions.cs2
-rw-r--r--Emby.Server.Implementations/SystemEvents.cs2
-rw-r--r--Emby.Server.Implementations/TV/TVSeriesManager.cs14
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs6
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs8
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs26
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs94
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs76
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs258
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs96
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs30
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs62
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs4
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs28
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs46
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs6
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs13
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs304
-rw-r--r--Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs110
-rw-r--r--Emby.Server.Implementations/TextEncoding/TextEncoding.cs2
-rw-r--r--Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs2
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs8
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs23
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs18
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs42
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs33
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs3
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs25
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs23
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs23
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs20
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs8
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs26
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs20
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs50
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs21
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs77
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs4
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs71
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs25
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs27
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs3
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs7
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs22
-rw-r--r--Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs136
-rw-r--r--Emby.Server.Implementations/Threading/CommonTimer.cs2
-rw-r--r--Emby.Server.Implementations/Threading/TimerFactory.cs2
-rw-r--r--Emby.Server.Implementations/Udp/UdpServer.cs8
-rw-r--r--Emby.Server.Implementations/Updates/InstallationManager.cs12
-rw-r--r--Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs20
-rw-r--r--Emby.Server.Implementations/UserViews/DynamicImageProvider.cs16
-rw-r--r--Emby.Server.Implementations/UserViews/FolderImageProvider.cs17
-rw-r--r--Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs2
317 files changed, 6794 insertions, 6688 deletions
diff --git a/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs b/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs
index eca1ff0f5..a8e8f815a 100644
--- a/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs
+++ b/Emby.Server.Implementations/Activity/ActivityLogEntryPoint.cs
@@ -1,29 +1,28 @@
-using MediaBrowser.Common.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Updates;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Session;
using MediaBrowser.Controller.Subtitles;
using MediaBrowser.Model.Activity;
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Tasks;
-using MediaBrowser.Model.Updates;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Notifications;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Controller.Devices;
-using MediaBrowser.Controller.Authentication;
+using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Updates;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Activity
{
@@ -528,7 +527,7 @@ namespace Emby.Server.Implementations.Activity
const int DaysInMonth = 30;
// Get each non-zero value from TimeSpan component
- List<string> values = new List<string>();
+ var values = new List<string>();
// Number of years
int days = span.Days;
@@ -559,7 +558,7 @@ namespace Emby.Server.Implementations.Activity
values.Add(CreateValueString(span.Seconds, "second"));
// Combine values into string
- StringBuilder builder = new StringBuilder();
+ var builder = new StringBuilder();
for (int i = 0; i < values.Count; i++)
{
if (builder.Length > 0)
diff --git a/Emby.Server.Implementations/Activity/ActivityManager.cs b/Emby.Server.Implementations/Activity/ActivityManager.cs
index 0bb44a9d5..e526acb0d 100644
--- a/Emby.Server.Implementations/Activity/ActivityManager.cs
+++ b/Emby.Server.Implementations/Activity/ActivityManager.cs
@@ -1,10 +1,10 @@
-using MediaBrowser.Controller.Library;
+using System;
+using System.Linq;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Querying;
-using System;
-using System.Linq;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Activity
{
diff --git a/Emby.Server.Implementations/Activity/ActivityRepository.cs b/Emby.Server.Implementations/Activity/ActivityRepository.cs
index 822219132..9e624cd02 100644
--- a/Emby.Server.Implementations/Activity/ActivityRepository.cs
+++ b/Emby.Server.Implementations/Activity/ActivityRepository.cs
@@ -6,11 +6,10 @@ using System.Linq;
using Emby.Server.Implementations.Data;
using MediaBrowser.Controller;
using MediaBrowser.Model.Activity;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying;
+using Microsoft.Extensions.Logging;
using SQLitePCL.pretty;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Activity
{
diff --git a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
index 3ad2d4b91..e4a2cd9df 100644
--- a/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
+++ b/Emby.Server.Implementations/AppBase/BaseApplicationPaths.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
using MediaBrowser.Common.Configuration;
namespace Emby.Server.Implementations.AppBase
diff --git a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
index 222a93a10..59c7c655f 100644
--- a/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
+++ b/Emby.Server.Implementations/AppBase/BaseConfigurationManager.cs
@@ -9,8 +9,8 @@ using MediaBrowser.Common.Events;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.AppBase
{
@@ -151,7 +151,7 @@ namespace Emby.Server.Implementations.AppBase
/// Replaces the configuration.
/// </summary>
/// <param name="newConfiguration">The new configuration.</param>
- /// <exception cref="System.ArgumentNullException">newConfiguration</exception>
+ /// <exception cref="ArgumentNullException">newConfiguration</exception>
public virtual void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration)
{
if (newConfiguration == null)
@@ -188,7 +188,7 @@ namespace Emby.Server.Implementations.AppBase
/// Replaces the cache path.
/// </summary>
/// <param name="newConfig">The new configuration.</param>
- /// <exception cref="System.IO.DirectoryNotFoundException"></exception>
+ /// <exception cref="DirectoryNotFoundException"></exception>
private void ValidateCachePath(BaseApplicationConfiguration newConfig)
{
var newPath = newConfig.CachePath;
@@ -284,7 +284,7 @@ namespace Emby.Server.Implementations.AppBase
validatingStore.Validate(currentConfiguration, configuration);
}
- NamedConfigurationUpdating?.Invoke( this, new ConfigurationUpdateEventArgs
+ NamedConfigurationUpdating?.Invoke(this, new ConfigurationUpdateEventArgs
{
Key = key,
NewConfiguration = configuration
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs
index 283d6b6d7..91eaf9bbf 100644
--- a/Emby.Server.Implementations/ApplicationHost.cs
+++ b/Emby.Server.Implementations/ApplicationHost.cs
@@ -1,9 +1,24 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
using Emby.Common.Implementations.Serialization;
-using Emby.Drawing;
-using Emby.Photos;
using Emby.Dlna;
using Emby.Dlna.Main;
using Emby.Dlna.Ssdp;
+using Emby.Drawing;
+using Emby.Notifications;
+using Emby.Photos;
using Emby.Server.Implementations.Activity;
using Emby.Server.Implementations.Archiving;
using Emby.Server.Implementations.Channels;
@@ -22,7 +37,6 @@ using Emby.Server.Implementations.Library;
using Emby.Server.Implementations.LiveTv;
using Emby.Server.Implementations.Localization;
using Emby.Server.Implementations.Net;
-using Emby.Notifications;
using Emby.Server.Implementations.Playlists;
using Emby.Server.Implementations.Reflection;
using Emby.Server.Implementations.ScheduledTasks;
@@ -40,9 +54,9 @@ using MediaBrowser.Common.Events;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins;
-using MediaBrowser.Model.Extensions;
using MediaBrowser.Common.Updates;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Chapters;
using MediaBrowser.Controller.Collections;
@@ -75,6 +89,7 @@ using MediaBrowser.Model.Cryptography;
using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.MediaInfo;
@@ -93,26 +108,11 @@ using MediaBrowser.Providers.Manager;
using MediaBrowser.Providers.Subtitles;
using MediaBrowser.WebDashboard.Api;
using MediaBrowser.XbmcMetadata.Providers;
+using Microsoft.Extensions.Logging;
using ServiceStack;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Reflection;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography.X509Certificates;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
+using ServiceStack.Text.Jsv;
using StringExtensions = MediaBrowser.Controller.Extensions.StringExtensions;
using X509Certificate = System.Security.Cryptography.X509Certificates.X509Certificate;
-using MediaBrowser.Controller.Authentication;
-using System.Diagnostics;
-using ServiceStack.Text.Jsv;
-using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations
{
@@ -812,7 +812,7 @@ namespace Emby.Server.Implementations
RegisterSingleInstance(ServerConfigurationManager);
IAssemblyInfo assemblyInfo = new AssemblyInfo();
- RegisterSingleInstance<IAssemblyInfo>(assemblyInfo);
+ RegisterSingleInstance(assemblyInfo);
LocalizationManager = new LocalizationManager(ServerConfigurationManager, FileSystemManager, JsonSerializer, LoggerFactory.CreateLogger("LocalizationManager"), assemblyInfo, new TextLocalizer());
StringExtensions.LocalizationManager = LocalizationManager;
@@ -910,7 +910,7 @@ namespace Emby.Server.Implementations
RegisterSingleInstance(CollectionManager);
PlaylistManager = new PlaylistManager(LibraryManager, FileSystemManager, LibraryMonitor, LoggerFactory.CreateLogger("PlaylistManager"), UserManager, ProviderManager);
- RegisterSingleInstance<IPlaylistManager>(PlaylistManager);
+ RegisterSingleInstance(PlaylistManager);
LiveTvManager = new LiveTvManager(this, HttpClient, ServerConfigurationManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer, ProviderManager, FileSystemManager, () => ChannelManager);
RegisterSingleInstance(LiveTvManager);
@@ -928,7 +928,7 @@ namespace Emby.Server.Implementations
RegisterMediaEncoder(assemblyInfo);
- EncodingManager = new Emby.Server.Implementations.MediaEncoder.EncodingManager(FileSystemManager, Logger, MediaEncoder, ChapterManager, LibraryManager);
+ EncodingManager = new MediaEncoder.EncodingManager(FileSystemManager, Logger, MediaEncoder, ChapterManager, LibraryManager);
RegisterSingleInstance(EncodingManager);
var activityLogRepo = GetActivityLogRepository();
@@ -940,7 +940,7 @@ namespace Emby.Server.Implementations
RegisterSingleInstance<ISessionContext>(new SessionContext(UserManager, authContext, SessionManager));
AuthService = new AuthService(UserManager, authContext, ServerConfigurationManager, SessionManager, NetworkManager);
- RegisterSingleInstance<IAuthService>(AuthService);
+ RegisterSingleInstance(AuthService);
SubtitleEncoder = new MediaBrowser.MediaEncoding.Subtitles.SubtitleEncoder(LibraryManager, LoggerFactory.CreateLogger("SubtitleEncoder"), ApplicationPaths, FileSystemManager, MediaEncoder, JsonSerializer, HttpClient, MediaSourceManager, ProcessFactory, TextEncoding);
RegisterSingleInstance(SubtitleEncoder);
@@ -1013,7 +1013,7 @@ namespace Emby.Server.Implementations
{
var arr = str.ToCharArray();
- arr = Array.FindAll<char>(arr, (c => (char.IsLetterOrDigit(c)
+ arr = Array.FindAll(arr, (c => (char.IsLetterOrDigit(c)
|| char.IsWhiteSpace(c))));
var result = new string(arr);
@@ -1047,7 +1047,7 @@ namespace Emby.Server.Implementations
// Don't use an empty string password
var password = string.IsNullOrWhiteSpace(info.Password) ? null : info.Password;
- X509Certificate2 localCert = new X509Certificate2(certificateLocation, password);
+ var localCert = new X509Certificate2(certificateLocation, password);
//localCert.PrivateKey = PrivateKey.CreateFromFile(pvk_file).RSA;
if (!localCert.HasPrivateKey)
{
@@ -1789,8 +1789,7 @@ namespace Emby.Server.Implementations
return false;
}
- Version minRequiredVersion;
- if (minRequiredVersions.TryGetValue(filename, out minRequiredVersion))
+ if (minRequiredVersions.TryGetValue(filename, out Version minRequiredVersion))
{
try
{
@@ -1926,7 +1925,7 @@ namespace Emby.Server.Implementations
return GetLocalApiUrl(response.ReadToEnd().Trim());
}
}
- catch(Exception ex)
+ catch (Exception ex)
{
Logger.LogError(ex, "Error getting WAN Ip address information");
}
@@ -2005,8 +2004,7 @@ namespace Emby.Server.Implementations
address = address.Substring(index + 1);
}
- IpAddressInfo result;
- if (NetworkManager.TryParseIpAddress(address.Trim('/'), out result))
+ if (NetworkManager.TryParseIpAddress(address.Trim('/'), out IpAddressInfo result))
{
return result;
}
@@ -2025,8 +2023,7 @@ namespace Emby.Server.Implementations
var apiUrl = GetLocalApiUrl(address);
apiUrl += "/system/ping";
- bool cachedResult;
- if (_validAddressResults.TryGetValue(apiUrl, out cachedResult))
+ if (_validAddressResults.TryGetValue(apiUrl, out var cachedResult))
{
return cachedResult;
}
diff --git a/Emby.Server.Implementations/Archiving/ZipClient.cs b/Emby.Server.Implementations/Archiving/ZipClient.cs
index 169e7af0a..84072cde6 100644
--- a/Emby.Server.Implementations/Archiving/ZipClient.cs
+++ b/Emby.Server.Implementations/Archiving/ZipClient.cs
@@ -1,6 +1,5 @@
-using System.IO;
+using System.IO;
using MediaBrowser.Model.IO;
-using SharpCompress.Archives.Rar;
using SharpCompress.Archives.SevenZip;
using SharpCompress.Archives.Tar;
using SharpCompress.Common;
diff --git a/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs b/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs
index a29f55f16..b27f84848 100644
--- a/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs
+++ b/Emby.Server.Implementations/Branding/BrandingConfigurationFactory.cs
@@ -1,6 +1,6 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Model.Branding;
using System.Collections.Generic;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Model.Branding;
namespace Emby.Server.Implementations.Branding
{
diff --git a/Emby.Server.Implementations/Browser/BrowserLauncher.cs b/Emby.Server.Implementations/Browser/BrowserLauncher.cs
index 4c9f442d1..718129ef0 100644
--- a/Emby.Server.Implementations/Browser/BrowserLauncher.cs
+++ b/Emby.Server.Implementations/Browser/BrowserLauncher.cs
@@ -1,5 +1,5 @@
-using MediaBrowser.Controller;
using System;
+using MediaBrowser.Controller;
namespace Emby.Server.Implementations.Browser
{
diff --git a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
index 8448d3640..c10f00f9b 100644
--- a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
+++ b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Controller.Channels;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Dto;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Channels;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Dto;
namespace Emby.Server.Implementations.Channels
{
diff --git a/Emby.Server.Implementations/Channels/ChannelImageProvider.cs b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs
index 7eded70c0..bafa68818 100644
--- a/Emby.Server.Implementations/Channels/ChannelImageProvider.cs
+++ b/Emby.Server.Implementations/Channels/ChannelImageProvider.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Controller.Channels;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Channels;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
namespace Emby.Server.Implementations.Channels
{
diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs
index 4cc3fd855..f98e199e6 100644
--- a/Emby.Server.Implementations/Channels/ChannelManager.cs
+++ b/Emby.Server.Implementations/Channels/ChannelManager.cs
@@ -1,37 +1,30 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Extensions;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
-using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Common.Progress;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Channels
{
@@ -394,9 +387,7 @@ namespace Emby.Server.Implementations.Channels
private async Task<IEnumerable<MediaSourceInfo>> GetChannelItemMediaSourcesInternal(IRequiresMediaInfoCallback channel, string id, CancellationToken cancellationToken)
{
- Tuple<DateTime, List<MediaSourceInfo>> cachedInfo;
-
- if (_channelItemMediaInfo.TryGetValue(id, out cachedInfo))
+ if (_channelItemMediaInfo.TryGetValue(id, out Tuple<DateTime, List<MediaSourceInfo>> cachedInfo))
{
if ((DateTime.UtcNow - cachedInfo.Item1).TotalMinutes < 5)
{
@@ -625,7 +616,7 @@ namespace Emby.Server.Implementations.Channels
if (sortByPremiereDate)
{
- query.OrderBy = new []
+ query.OrderBy = new[]
{
new ValueTuple<string, SortOrder>(ItemSortBy.PremiereDate, SortOrder.Descending),
new ValueTuple<string, SortOrder>(ItemSortBy.ProductionYear, SortOrder.Descending),
@@ -634,7 +625,7 @@ namespace Emby.Server.Implementations.Channels
}
else
{
- query.OrderBy = new []
+ query.OrderBy = new[]
{
new ValueTuple<string, SortOrder>(ItemSortBy.DateCreated, SortOrder.Descending)
};
diff --git a/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
index bd717bc6a..ad6c537ef 100644
--- a/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
+++ b/Emby.Server.Implementations/Channels/ChannelPostScanTask.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Controller.Channels;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Channels;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Channels
{
diff --git a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
index c1e9fad8a..844f77a1a 100644
--- a/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
+++ b/Emby.Server.Implementations/Channels/RefreshChannelsScheduledTask.cs
@@ -1,12 +1,12 @@
-using MediaBrowser.Controller.Channels;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Progress;
+using MediaBrowser.Controller.Channels;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Channels
{
diff --git a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
index 858dada4b..6642d1ef4 100644
--- a/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
+++ b/Emby.Server.Implementations/Collections/CollectionImageProvider.cs
@@ -1,4 +1,8 @@
-using MediaBrowser.Common.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Emby.Server.Implementations.Images;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
@@ -6,13 +10,8 @@ using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Images;
-using MediaBrowser.Model.IO;
using MediaBrowser.Model.Extensions;
-using System;
+using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Collections
{
diff --git a/Emby.Server.Implementations/Collections/CollectionManager.cs b/Emby.Server.Implementations/Collections/CollectionManager.cs
index d1d793136..213bb35e4 100644
--- a/Emby.Server.Implementations/Collections/CollectionManager.cs
+++ b/Emby.Server.Implementations/Collections/CollectionManager.cs
@@ -1,24 +1,22 @@
-using MediaBrowser.Common.Events;
-using MediaBrowser.Controller.Collections;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Extensions;
using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Collections;
using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Configuration;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Plugins;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Collections
{
diff --git a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
index 6180645e4..ab2e1c9a9 100644
--- a/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
+++ b/Emby.Server.Implementations/Configuration/ServerConfigurationManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using Emby.Server.Implementations.AppBase;
@@ -8,8 +8,8 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Configuration
{
@@ -119,7 +119,7 @@ namespace Emby.Server.Implementations.Configuration
/// Replaces the configuration.
/// </summary>
/// <param name="newConfiguration">The new configuration.</param>
- /// <exception cref="System.IO.DirectoryNotFoundException"></exception>
+ /// <exception cref="DirectoryNotFoundException"></exception>
public override void ReplaceConfiguration(BaseApplicationConfiguration newConfiguration)
{
var newConfig = (ServerConfiguration)newConfiguration;
@@ -137,7 +137,7 @@ namespace Emby.Server.Implementations.Configuration
/// Validates the SSL certificate.
/// </summary>
/// <param name="newConfig">The new configuration.</param>
- /// <exception cref="System.IO.DirectoryNotFoundException"></exception>
+ /// <exception cref="DirectoryNotFoundException"></exception>
private void ValidateSslCertificate(BaseApplicationConfiguration newConfig)
{
var serverConfig = (ServerConfiguration)newConfig;
@@ -159,7 +159,7 @@ namespace Emby.Server.Implementations.Configuration
/// Validates the metadata path.
/// </summary>
/// <param name="newConfig">The new configuration.</param>
- /// <exception cref="System.IO.DirectoryNotFoundException"></exception>
+ /// <exception cref="DirectoryNotFoundException"></exception>
private void ValidateMetadataPath(ServerConfiguration newConfig)
{
var newPath = newConfig.MetadataPath;
diff --git a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
index 6402da0c9..09fdbc856 100644
--- a/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
+++ b/Emby.Server.Implementations/Cryptography/CryptographyProvider.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
diff --git a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
index c714ba91b..0f432c36c 100644
--- a/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
+++ b/Emby.Server.Implementations/Data/BaseSqliteRepository.cs
@@ -1,12 +1,11 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
+using System.Linq;
using System.Threading;
-using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
-using SQLitePCL.pretty;
-using System.Linq;
using SQLitePCL;
+using SQLitePCL.pretty;
namespace Emby.Server.Implementations.Data
{
@@ -255,7 +254,7 @@ namespace Emby.Server.Implementations.Data
{
if (_disposed)
{
- throw new ObjectDisposedException(GetType().Name ,"Object has been disposed and cannot be accessed.");
+ throw new ObjectDisposedException(GetType().Name, "Object has been disposed and cannot be accessed.");
}
}
diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
index 536cf21f6..dcfe14943 100644
--- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
+++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs
@@ -1,16 +1,12 @@
-using MediaBrowser.Common.Progress;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Data
{
diff --git a/Emby.Server.Implementations/Data/ManagedConnection.cs b/Emby.Server.Implementations/Data/ManagedConnection.cs
index 91a2dfdf6..b8f1e581a 100644
--- a/Emby.Server.Implementations/Data/ManagedConnection.cs
+++ b/Emby.Server.Implementations/Data/ManagedConnection.cs
@@ -1,13 +1,10 @@
-using System;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using SQLitePCL.pretty;
namespace Emby.Server.Implementations.Data
{
- public class ManagedConnection : IDisposable
+ public class ManagedConnection : IDisposable
{
private SQLiteDatabaseConnection db;
private readonly bool _closeOnDispose;
@@ -50,7 +47,7 @@ namespace Emby.Server.Implementations.Data
public T RunInTransaction<T>(Func<IDatabaseConnection, T> action, TransactionMode mode)
{
- return db.RunInTransaction<T>(action, mode);
+ return db.RunInTransaction(action, mode);
}
public IEnumerable<IReadOnlyList<IResultSetValue>> Query(string sql)
diff --git a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
index 49d8f79a2..9ed2b49e5 100644
--- a/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteDisplayPreferencesRepository.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
@@ -7,8 +7,8 @@ using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
using SQLitePCL.pretty;
namespace Emby.Server.Implementations.Data
@@ -83,7 +83,7 @@ namespace Emby.Server.Implementations.Data
/// <param name="client">The client.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public void SaveDisplayPreferences(DisplayPreferences displayPreferences, Guid userId, string client, CancellationToken cancellationToken)
{
if (displayPreferences == null)
@@ -131,7 +131,7 @@ namespace Emby.Server.Implementations.Data
/// <param name="userId">The user id.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public void SaveAllDisplayPreferences(IEnumerable<DisplayPreferences> displayPreferences, Guid userId, CancellationToken cancellationToken)
{
if (displayPreferences == null)
@@ -163,7 +163,7 @@ namespace Emby.Server.Implementations.Data
/// <param name="userId">The user id.</param>
/// <param name="client">The client.</param>
/// <returns>Task{DisplayPreferences}.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public DisplayPreferences GetDisplayPreferences(string displayPreferencesId, Guid userId, string client)
{
if (string.IsNullOrEmpty(displayPreferencesId))
@@ -202,7 +202,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="userId">The user id.</param>
/// <returns>Task{DisplayPreferences}.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public IEnumerable<DisplayPreferences> GetAllDisplayPreferences(Guid userId)
{
var list = new List<DisplayPreferences>();
diff --git a/Emby.Server.Implementations/Data/SqliteExtensions.cs b/Emby.Server.Implementations/Data/SqliteExtensions.cs
index d9b2db56e..a486cb1a0 100644
--- a/Emby.Server.Implementations/Data/SqliteExtensions.cs
+++ b/Emby.Server.Implementations/Data/SqliteExtensions.cs
@@ -1,10 +1,9 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
-using MediaBrowser.Model.IO;
+using System.IO;
using MediaBrowser.Model.Serialization;
using SQLitePCL.pretty;
-using System.IO;
namespace Emby.Server.Implementations.Data
{
@@ -115,9 +114,7 @@ namespace Emby.Server.Implementations.Data
{
var dateText = result.ToString();
- DateTime dateTimeResult;
-
- if (DateTime.TryParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out dateTimeResult))
+ if (DateTime.TryParseExact(dateText, _datetimeFormats, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out var dateTimeResult))
{
return dateTimeResult.ToUniversalTime();
}
@@ -129,7 +126,7 @@ namespace Emby.Server.Implementations.Data
/// Serializes to bytes.
/// </summary>
/// <returns>System.Byte[][].</returns>
- /// <exception cref="System.ArgumentNullException">obj</exception>
+ /// <exception cref="ArgumentNullException">obj</exception>
public static byte[] SerializeToBytes(this IJsonSerializer json, object obj)
{
if (obj == null)
@@ -202,8 +199,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, double value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -215,8 +211,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, string value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
if (value == null)
{
@@ -235,8 +230,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, bool value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -248,8 +242,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, float value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -261,8 +254,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, int value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -274,8 +266,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, Guid value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value.ToGuidBlob());
}
@@ -287,8 +278,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, DateTime value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value.ToDateTimeParamValue());
}
@@ -300,8 +290,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, long value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -313,8 +302,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBind(this IStatement statement, string name, byte[] value)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.Bind(value);
}
@@ -326,8 +314,7 @@ namespace Emby.Server.Implementations.Data
public static void TryBindNull(this IStatement statement, string name)
{
- IBindParameter bindParam;
- if (statement.BindParameters.TryGetValue(name, out bindParam))
+ if (statement.BindParameters.TryGetValue(name, out IBindParameter bindParam))
{
bindParam.BindNull();
}
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index f1894fd4f..727a9e868 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -6,17 +6,17 @@ using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Devices;
using Emby.Server.Implementations.Playlists;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Channels;
-using MediaBrowser.Controller.Collections;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Extensions;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Playlists;
@@ -24,17 +24,13 @@ using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Reflection;
-using SQLitePCL.pretty;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Threading;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
+using SQLitePCL.pretty;
namespace Emby.Server.Implementations.Data
{
@@ -49,13 +45,7 @@ namespace Emby.Server.Implementations.Data
/// Gets the name of the repository
/// </summary>
/// <value>The name.</value>
- public string Name
- {
- get
- {
- return "SQLite";
- }
- }
+ public string Name => "SQLite";
/// <summary>
/// Gets the json serializer.
@@ -101,21 +91,9 @@ namespace Emby.Server.Implementations.Data
private const string ChaptersTableName = "Chapters2";
- protected override int? CacheSize
- {
- get
- {
- return 20000;
- }
- }
+ protected override int? CacheSize => 20000;
- protected override bool EnableTempStoreMemory
- {
- get
- {
- return true;
- }
- }
+ protected override bool EnableTempStoreMemory => true;
/// <summary>
/// Opens the connection to the database
@@ -553,7 +531,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="item">The item.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public void SaveItem(BaseItem item, CancellationToken cancellationToken)
{
if (item == null)
@@ -596,7 +574,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="items">The items.</param>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <exception cref="System.ArgumentNullException">
+ /// <exception cref="ArgumentNullException">
/// items
/// or
/// cancellationToken
@@ -1186,25 +1164,21 @@ namespace Emby.Server.Implementations.Data
image.Path = RestorePath(parts[0]);
- long ticks;
- if (long.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out ticks))
+ if (long.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out var ticks))
{
image.DateModified = new DateTime(ticks, DateTimeKind.Utc);
}
- ImageType type;
- if (Enum.TryParse(parts[2], true, out type))
+ if (Enum.TryParse(parts[2], true, out ImageType type))
{
image.Type = type;
}
if (parts.Length >= 5)
{
- int width;
- int height;
- if (int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out width))
+ if (int.TryParse(parts[3], NumberStyles.Integer, CultureInfo.InvariantCulture, out var width))
{
- if (int.TryParse(parts[4], NumberStyles.Integer, CultureInfo.InvariantCulture, out height))
+ if (int.TryParse(parts[4], NumberStyles.Integer, CultureInfo.InvariantCulture, out var height))
{
image.Width = width;
image.Height = height;
@@ -1220,8 +1194,8 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="id">The id.</param>
/// <returns>BaseItem.</returns>
- /// <exception cref="System.ArgumentNullException">id</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">id</exception>
+ /// <exception cref="ArgumentException"></exception>
public BaseItem RetrieveItem(Guid id)
{
if (id.Equals(Guid.Empty))
@@ -1611,8 +1585,7 @@ namespace Emby.Server.Implementations.Data
if (!reader.IsDBNull(index))
{
- ProgramAudio audio;
- if (Enum.TryParse(reader.GetString(index), true, out audio))
+ if (Enum.TryParse(reader.GetString(index), true, out ProgramAudio audio))
{
item.Audio = audio;
}
@@ -1656,9 +1629,7 @@ namespace Emby.Server.Implementations.Data
item.LockedFields = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(
i =>
{
- MetadataFields parsedValue;
-
- if (Enum.TryParse(i, true, out parsedValue))
+ if (Enum.TryParse(i, true, out MetadataFields parsedValue))
{
return parsedValue;
}
@@ -1696,9 +1667,7 @@ namespace Emby.Server.Implementations.Data
trailer.TrailerTypes = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).Select(
i =>
{
- TrailerType parsedValue;
-
- if (Enum.TryParse(i, true, out parsedValue))
+ if (Enum.TryParse(i, true, out TrailerType parsedValue))
{
return parsedValue;
}
@@ -1879,8 +1848,7 @@ namespace Emby.Server.Implementations.Data
if (!reader.IsDBNull(index))
{
- ExtraType extraType;
- if (Enum.TryParse(reader.GetString(index), true, out extraType))
+ if (Enum.TryParse(reader.GetString(index), true, out ExtraType extraType))
{
item.ExtraType = extraType;
}
@@ -1967,7 +1935,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="item">The item.</param>
/// <returns>IEnumerable{ChapterInfo}.</returns>
- /// <exception cref="System.ArgumentNullException">id</exception>
+ /// <exception cref="ArgumentNullException">id</exception>
public List<ChapterInfo> GetChapters(BaseItem item)
{
CheckDisposed();
@@ -1999,7 +1967,7 @@ namespace Emby.Server.Implementations.Data
/// <param name="item">The item.</param>
/// <param name="index">The index.</param>
/// <returns>ChapterInfo.</returns>
- /// <exception cref="System.ArgumentNullException">id</exception>
+ /// <exception cref="ArgumentNullException">id</exception>
public ChapterInfo GetChapter(BaseItem item, int index)
{
CheckDisposed();
@@ -5171,8 +5139,7 @@ where AncestorIdText not null and ItemValues.Value not null and ItemValues.Type
private IEnumerable<string> MapIncludeItemTypes(string value)
{
- string[] result;
- if (_types.TryGetValue(value, out result))
+ if (_types.TryGetValue(value, out string[] result))
{
return result;
}
diff --git a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
index cf60b71d6..48ff9ded8 100644
--- a/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteUserDataRepository.cs
@@ -5,11 +5,11 @@ using System.Linq;
using System.Threading;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.IO;
using Microsoft.Extensions.Logging;
using SQLitePCL.pretty;
-using MediaBrowser.Controller.Library;
namespace Emby.Server.Implementations.Data
{
@@ -110,7 +110,7 @@ namespace Emby.Server.Implementations.Data
private List<Guid> GetAllUserIdsWithUserData(IDatabaseConnection db)
{
- List<Guid> list = new List<Guid>();
+ var list = new List<Guid>();
using (var statement = PrepareStatement(db, "select DISTINCT UserId from UserData where UserId not null"))
{
@@ -271,7 +271,7 @@ namespace Emby.Server.Implementations.Data
/// <param name="internalUserId">The user id.</param>
/// <param name="key">The key.</param>
/// <returns>Task{UserItemData}.</returns>
- /// <exception cref="System.ArgumentNullException">
+ /// <exception cref="ArgumentNullException">
/// userId
/// or
/// key
diff --git a/Emby.Server.Implementations/Data/SqliteUserRepository.cs b/Emby.Server.Implementations/Data/SqliteUserRepository.cs
index 125f254c1..ad37a0275 100644
--- a/Emby.Server.Implementations/Data/SqliteUserRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteUserRepository.cs
@@ -1,13 +1,11 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
-using System.Threading;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
-using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
using SQLitePCL.pretty;
namespace Emby.Server.Implementations.Data
@@ -202,7 +200,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="user">The user.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">user</exception>
+ /// <exception cref="ArgumentNullException">user</exception>
public void DeleteUser(User user)
{
if (user == null)
diff --git a/Emby.Server.Implementations/Data/TypeMapper.cs b/Emby.Server.Implementations/Data/TypeMapper.cs
index e0c2de918..37c952e88 100644
--- a/Emby.Server.Implementations/Data/TypeMapper.cs
+++ b/Emby.Server.Implementations/Data/TypeMapper.cs
@@ -1,7 +1,7 @@
-using System;
+using System;
using System.Collections.Concurrent;
-using MediaBrowser.Model.Reflection;
using System.Linq;
+using MediaBrowser.Model.Reflection;
namespace Emby.Server.Implementations.Data
{
@@ -27,7 +27,7 @@ namespace Emby.Server.Implementations.Data
/// </summary>
/// <param name="typeName">Name of the type.</param>
/// <returns>Type.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
+ /// <exception cref="ArgumentNullException"></exception>
public Type GetType(string typeName)
{
if (string.IsNullOrEmpty(typeName))
diff --git a/Emby.Server.Implementations/Devices/DeviceId.cs b/Emby.Server.Implementations/Devices/DeviceId.cs
index 4f5950ac7..56e555937 100644
--- a/Emby.Server.Implementations/Devices/DeviceId.cs
+++ b/Emby.Server.Implementations/Devices/DeviceId.cs
@@ -25,8 +25,7 @@ namespace Emby.Server.Implementations.Devices
{
var value = File.ReadAllText(CachePath, Encoding.UTF8);
- Guid guid;
- if (Guid.TryParse(value, out guid))
+ if (Guid.TryParse(value, out var guid))
{
return value;
}
diff --git a/Emby.Server.Implementations/Devices/DeviceManager.cs b/Emby.Server.Implementations/Devices/DeviceManager.cs
index c72334577..f2ab28d4c 100644
--- a/Emby.Server.Implementations/Devices/DeviceManager.cs
+++ b/Emby.Server.Implementations/Devices/DeviceManager.cs
@@ -1,30 +1,29 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.Devices;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Devices;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Extensions;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Session;
-using MediaBrowser.Model.Users;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Configuration;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Model.Globalization;
using MediaBrowser.Controller.Security;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Devices;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Common.Extensions;
+using MediaBrowser.Model.Session;
+using MediaBrowser.Model.Users;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Devices
{
@@ -99,8 +98,7 @@ namespace Emby.Server.Implementations.Devices
{
lock (_capabilitiesSyncLock)
{
- ClientCapabilities result;
- if (_capabilitiesCache.TryGetValue(id, out result))
+ if (_capabilitiesCache.TryGetValue(id, out var result))
{
return result;
}
diff --git a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs
index 99871a3c6..d8a798c46 100644
--- a/Emby.Server.Implementations/Diagnostics/CommonProcess.cs
+++ b/Emby.Server.Implementations/Diagnostics/CommonProcess.cs
@@ -1,9 +1,9 @@
-using System;
+using System;
using System.Diagnostics;
using System.IO;
+using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Diagnostics;
-using System.Threading;
namespace Emby.Server.Implementations.Diagnostics
{
diff --git a/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
index a2c511cb9..14aadaaae 100644
--- a/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
+++ b/Emby.Server.Implementations/Diagnostics/ProcessFactory.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Model.Diagnostics;
+using MediaBrowser.Model.Diagnostics;
namespace Emby.Server.Implementations.Diagnostics
{
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 3d519f35d..a45cde980 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -1,3 +1,8 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
using MediaBrowser.Common;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
@@ -11,21 +16,15 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.Providers;
-using MediaBrowser.Controller.Sync;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Querying;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Playlists;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Querying;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Dto
{
@@ -72,7 +71,7 @@ namespace Emby.Server.Implementations.Dto
/// <param name="user">The user.</param>
/// <param name="owner">The owner.</param>
/// <returns>Task{DtoBaseItem}.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public BaseItemDto GetBaseItemDto(BaseItem item, ItemFields[] fields, User user = null, BaseItem owner = null)
{
var options = new DtoOptions
@@ -464,7 +463,7 @@ namespace Emby.Server.Implementations.Dto
/// </summary>
/// <param name="item">The item.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
public string GetDtoId(BaseItem item)
{
return item.Id.ToString("N");
@@ -638,9 +637,7 @@ namespace Emby.Server.Implementations.Dto
Type = person.Type
};
- Person entity;
-
- if (dictionary.TryGetValue(person.Name, out entity))
+ if (dictionary.TryGetValue(person.Name, out Person entity))
{
baseItemPerson.PrimaryImageTag = GetImageCacheTag(entity, ImageType.Primary);
baseItemPerson.Id = entity.Id.ToString("N");
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index da3a4da07..5a0e1da4d 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -1,4 +1,4 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ProjectReference Include="..\Emby.Naming\Emby.Naming.csproj" />
diff --git a/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs b/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs
index a0947c87d..0fc4c3858 100644
--- a/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs
+++ b/Emby.Server.Implementations/EntryPoints/AutomaticRestartEntryPoint.cs
@@ -1,16 +1,16 @@
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Controller.Session;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Tasks;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Controller.Plugins;
+using MediaBrowser.Controller.Session;
using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints
{
diff --git a/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs b/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs
index 6c658a695..8755ee3a7 100644
--- a/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs
+++ b/Emby.Server.Implementations/EntryPoints/ExternalPortForwarding.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Net;
+using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
@@ -9,10 +10,9 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
using Mono.Nat;
-using System.Threading;
namespace Emby.Server.Implementations.EntryPoints
{
@@ -108,11 +108,9 @@ namespace Emby.Server.Implementations.EntryPoints
var info = e.Argument;
- string usn;
- if (!info.Headers.TryGetValue("USN", out usn)) usn = string.Empty;
+ if (!info.Headers.TryGetValue("USN", out string usn)) usn = string.Empty;
- string nt;
- if (!info.Headers.TryGetValue("NT", out nt)) nt = string.Empty;
+ if (!info.Headers.TryGetValue("NT", out string nt)) nt = string.Empty;
// Filter device type
if (usn.IndexOf("WANIPConnection:", StringComparison.OrdinalIgnoreCase) == -1 &&
@@ -141,8 +139,7 @@ namespace Emby.Server.Implementations.EntryPoints
_logger.LogDebug("Found NAT device: " + identifier);
- IPAddress address;
- if (IPAddress.TryParse(info.Location.Host, out address))
+ if (IPAddress.TryParse(info.Location.Host, out var address))
{
// The Handle method doesn't need the port
var endpoint = new IPEndPoint(address, info.Location.Port);
@@ -153,8 +150,7 @@ namespace Emby.Server.Implementations.EntryPoints
{
var localAddressString = await _appHost.GetLocalApiUrl(CancellationToken.None).ConfigureAwait(false);
- Uri uri;
- if (Uri.TryCreate(localAddressString, UriKind.Absolute, out uri))
+ if (Uri.TryCreate(localAddressString, UriKind.Absolute, out var uri))
{
localAddressString = uri.Host;
diff --git a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
index a5c907213..7a8b09cf7 100644
--- a/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
@@ -1,21 +1,20 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
using MediaBrowser.Controller.Channels;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Controller.Session;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints
{
@@ -90,8 +89,7 @@ namespace Emby.Server.Implementations.EntryPoints
var progress = e.Argument.Item2;
- DateTime lastMessageSendTime;
- if (_lastProgressMessageTimes.TryGetValue(item.Id, out lastMessageSendTime))
+ if (_lastProgressMessageTimes.TryGetValue(item.Id, out var lastMessageSendTime))
{
if (progress > 0 && progress < 100 && (DateTime.UtcNow - lastMessageSendTime).TotalMilliseconds < 1000)
{
diff --git a/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs b/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs
index c7bd03960..e37ea96a1 100644
--- a/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/RecordingNotifier.cs
@@ -58,7 +58,7 @@ namespace Emby.Server.Implementations.EntryPoints
try
{
- await _sessionManager.SendMessageToUserSessions<TimerEventInfo>(users, name, info, CancellationToken.None);
+ await _sessionManager.SendMessageToUserSessions(users, name, info, CancellationToken.None);
}
catch (ObjectDisposedException)
{
diff --git a/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs b/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs
index f0b834ccb..b7565adec 100644
--- a/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs
+++ b/Emby.Server.Implementations/EntryPoints/RefreshUsersMetadata.cs
@@ -1,12 +1,12 @@
-using System;
-using MediaBrowser.Controller.Library;
-using System.Threading;
-using MediaBrowser.Model.Tasks;
+using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Tasks;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints
diff --git a/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs b/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
index 72dcabab3..92ea3a8f4 100644
--- a/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/ServerEventNotifier.cs
@@ -1,17 +1,14 @@
-using MediaBrowser.Common.Plugins;
+using System;
+using System.Collections.Generic;
+using System.Threading;
+using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Updates;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Session;
-using MediaBrowser.Controller.Sync;
using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Sync;
-using System;
-using System.Collections.Generic;
-using System.Threading;
using MediaBrowser.Model.Tasks;
namespace Emby.Server.Implementations.EntryPoints
diff --git a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
index ffd98bf78..05c8b07ab 100644
--- a/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
+++ b/Emby.Server.Implementations/EntryPoints/StartupWizard.cs
@@ -1,8 +1,8 @@
-using Emby.Server.Implementations.Browser;
+using Emby.Server.Implementations.Browser;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Plugins;
using Microsoft.Extensions.Logging;
-using MediaBrowser.Controller.Configuration;
namespace Emby.Server.Implementations.EntryPoints
{
diff --git a/Emby.Server.Implementations/EntryPoints/SystemEvents.cs b/Emby.Server.Implementations/EntryPoints/SystemEvents.cs
index e27de8967..72c8acd9f 100644
--- a/Emby.Server.Implementations/EntryPoints/SystemEvents.cs
+++ b/Emby.Server.Implementations/EntryPoints/SystemEvents.cs
@@ -1,12 +1,7 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MediaBrowser.Model.System;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Common;
+using System;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Plugins;
+using MediaBrowser.Model.System;
namespace Emby.Server.Implementations.EntryPoints
{
diff --git a/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs b/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs
index 730ced055..2c8246d13 100644
--- a/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs
+++ b/Emby.Server.Implementations/EntryPoints/UdpServerEntryPoint.cs
@@ -1,10 +1,10 @@
-using System;
+using System;
+using Emby.Server.Implementations.Udp;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Plugins;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
-using Emby.Server.Implementations.Udp;
using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints
{
diff --git a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
index 58309ea1c..9e71ffceb 100644
--- a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
+++ b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs
@@ -1,17 +1,17 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Session;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Plugins;
+using MediaBrowser.Controller.Session;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.Session;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.EntryPoints
{
@@ -62,9 +62,7 @@ namespace Emby.Server.Implementations.EntryPoints
UpdateTimer.Change(UpdateDuration, Timeout.Infinite);
}
- List<BaseItem> keys;
-
- if (!_changedItems.TryGetValue(e.UserId, out keys))
+ if (!_changedItems.TryGetValue(e.UserId, out List<BaseItem> keys))
{
keys = new List<BaseItem>();
_changedItems[e.UserId] = keys;
diff --git a/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
index 24a3456c4..c8104150d 100644
--- a/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
+++ b/Emby.Server.Implementations/EnvironmentInfo/EnvironmentInfo.cs
@@ -1,6 +1,6 @@
-using System;
-using MediaBrowser.Model.System;
+using System;
using System.Runtime.InteropServices;
+using MediaBrowser.Model.System;
namespace Emby.Server.Implementations.EnvironmentInfo
{
diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs b/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs
index e725d22f5..60cd7b3d7 100644
--- a/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs
+++ b/Emby.Server.Implementations/FFMpeg/FFMpegInfo.cs
@@ -1,4 +1,4 @@
-namespace Emby.Server.Implementations.FFMpeg
+namespace Emby.Server.Implementations.FFMpeg
{
/// <summary>
/// Class FFMpegInfo
@@ -21,4 +21,4 @@
/// <value>The version.</value>
public string Version { get; set; }
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs b/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs
index a1080a839..fa9cb5e01 100644
--- a/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs
+++ b/Emby.Server.Implementations/FFMpeg/FFMpegInstallInfo.cs
@@ -1,4 +1,3 @@
-
namespace Emby.Server.Implementations.FFMpeg
{
public class FFMpegInstallInfo
@@ -15,4 +14,4 @@ namespace Emby.Server.Implementations.FFMpeg
FFProbeFilename = "ffprobe";
}
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
index 83e3cb720..9a4aec958 100644
--- a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
+++ b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Model.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.FFMpeg
{
diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
index 21cec9d2b..f747b01b9 100644
--- a/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
+++ b/Emby.Server.Implementations/HttpClientManager/HttpClientInfo.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net.Http;
namespace Emby.Server.Implementations.HttpClientManager
diff --git a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
index 2f5eed547..3aab10026 100644
--- a/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
+++ b/Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs
@@ -13,8 +13,8 @@ using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Net;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpClientManager
{
@@ -82,7 +82,7 @@ namespace Emby.Server.Implementations.HttpClientManager
/// <param name="host">The host.</param>
/// <param name="enableHttpCompression">if set to <c>true</c> [enable HTTP compression].</param>
/// <returns>HttpClient.</returns>
- /// <exception cref="System.ArgumentNullException">host</exception>
+ /// <exception cref="ArgumentNullException">host</exception>
private HttpClientInfo GetHttpClient(string host, bool enableHttpCompression)
{
if (string.IsNullOrEmpty(host))
@@ -90,11 +90,9 @@ namespace Emby.Server.Implementations.HttpClientManager
throw new ArgumentNullException(nameof(host));
}
- HttpClientInfo client;
-
var key = host + enableHttpCompression;
- if (!_httpClients.TryGetValue(key, out client))
+ if (!_httpClients.TryGetValue(key, out var client))
{
client = new HttpClientInfo();
@@ -125,7 +123,7 @@ namespace Emby.Server.Implementations.HttpClientManager
{
string url = options.Url;
- Uri uriAddress = new Uri(url);
+ var uriAddress = new Uri(url);
string userInfo = uriAddress.UserInfo;
if (!string.IsNullOrWhiteSpace(userInfo))
{
@@ -133,7 +131,7 @@ namespace Emby.Server.Implementations.HttpClientManager
url = url.Replace(userInfo + "@", string.Empty);
}
- WebRequest request = CreateWebRequest(url);
+ var request = CreateWebRequest(url);
if (request is HttpWebRequest httpWebRequest)
{
@@ -188,7 +186,7 @@ namespace Emby.Server.Implementations.HttpClientManager
private static CredentialCache GetCredential(string url, string username, string password)
{
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
- CredentialCache credentialCache = new CredentialCache();
+ var credentialCache = new CredentialCache();
credentialCache.Add(new Uri(url), "Basic", new NetworkCredential(username, password));
return credentialCache;
}
@@ -541,7 +539,7 @@ namespace Emby.Server.Implementations.HttpClientManager
if (options.Progress == null)
{
- throw new ArgumentException("Options did not have a Progress value.",nameof(options));
+ throw new ArgumentException("Options did not have a Progress value.", nameof(options));
}
options.CancellationToken.ThrowIfCancellationRequested();
@@ -807,7 +805,7 @@ namespace Emby.Server.Implementations.HttpClientManager
{
var taskCompletion = new TaskCompletionSource<WebResponse>();
- Task<WebResponse> asyncTask = Task.Factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);
+ var asyncTask = Task.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null);
ThreadPool.RegisterWaitForSingleObject((asyncTask as IAsyncResult).AsyncWaitHandle, TimeoutCallback, request, timeout, true);
var callback = new TaskCallback { taskCompletion = taskCompletion };
@@ -823,7 +821,7 @@ namespace Emby.Server.Implementations.HttpClientManager
{
if (timedOut && state != null)
{
- WebRequest request = (WebRequest)state;
+ var request = (WebRequest)state;
request.Abort();
}
}
diff --git a/Emby.Server.Implementations/HttpServer/FileWriter.cs b/Emby.Server.Implementations/HttpServer/FileWriter.cs
index 568432902..c32c91670 100644
--- a/Emby.Server.Implementations/HttpServer/FileWriter.cs
+++ b/Emby.Server.Implementations/HttpServer/FileWriter.cs
@@ -1,13 +1,13 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Globalization;
+using System.Linq;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Services;
-using System.Linq;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
index 6b4f2bced..033ffd4c0 100644
--- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -116,8 +116,7 @@ namespace Emby.Server.Implementations.HttpServer
public Type GetServiceTypeByRequest(Type requestType)
{
- Type serviceType;
- ServiceOperationsMap.TryGetValue(requestType, out serviceType);
+ ServiceOperationsMap.TryGetValue(requestType, out var serviceType);
return serviceType;
}
@@ -199,13 +198,13 @@ namespace Emby.Server.Implementations.HttpServer
{
switch (ex)
{
- case ArgumentException _: return 400;
- case SecurityException _: return 401;
+ case ArgumentException _: return 400;
+ case SecurityException _: return 401;
case DirectoryNotFoundException _:
case FileNotFoundException _:
- case ResourceNotFoundException _: return 404;
+ case ResourceNotFoundException _: return 404;
case RemoteServiceUnavailableException _: return 502;
- default: return 500;
+ default: return 500;
}
}
@@ -673,8 +672,7 @@ namespace Emby.Server.Implementations.HttpServer
return null;
}
- string contentType;
- var restPath = ServiceHandler.FindMatchingRestPath(httpReq.HttpMethod, pathInfo, out contentType);
+ var restPath = ServiceHandler.FindMatchingRestPath(httpReq.HttpMethod, pathInfo, out string contentType);
if (restPath != null)
{
diff --git a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
index bacf5556f..8b60d61d4 100644
--- a/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
+++ b/Emby.Server.Implementations/HttpServer/HttpResultFactory.cs
@@ -1,7 +1,3 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.Net;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -13,8 +9,12 @@ using System.Text;
using System.Threading.Tasks;
using System.Xml;
using Emby.Server.Implementations.Services;
+using MediaBrowser.Common.Extensions;
+using MediaBrowser.Controller.Net;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
using IRequest = MediaBrowser.Model.Services.IRequest;
using MimeTypes = MediaBrowser.Model.Net.MimeTypes;
@@ -96,8 +96,7 @@ namespace Emby.Server.Implementations.HttpServer
responseHeaders = new Dictionary<string, string>();
}
- string expires;
- if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires))
+ if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires))
{
responseHeaders["Expires"] = "-1";
}
@@ -115,7 +114,8 @@ namespace Emby.Server.Implementations.HttpServer
string compressionType = null;
bool isHeadRequest = false;
- if (requestContext != null) {
+ if (requestContext != null)
+ {
compressionType = GetCompressionType(requestContext, content, contentType);
isHeadRequest = string.Equals(requestContext.Verb, "head", StringComparison.OrdinalIgnoreCase);
}
@@ -142,8 +142,7 @@ namespace Emby.Server.Implementations.HttpServer
responseHeaders = new Dictionary<string, string>();
}
- string expires;
- if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires))
+ if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires))
{
responseHeaders["Expires"] = "-1";
}
@@ -187,8 +186,7 @@ namespace Emby.Server.Implementations.HttpServer
responseHeaders = new Dictionary<string, string>();
}
- string expires;
- if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out expires))
+ if (addCachePrevention && !responseHeaders.TryGetValue("Expires", out string expires))
{
responseHeaders["Expires"] = "-1";
}
@@ -716,7 +714,7 @@ namespace Emby.Server.Implementations.HttpServer
{
ifNoneMatchHeader = (ifNoneMatchHeader ?? string.Empty).Trim('\"');
- if (Guid.TryParse(ifNoneMatchHeader, out Guid ifNoneMatch)
+ if (Guid.TryParse(ifNoneMatchHeader, out var ifNoneMatch)
&& cacheKey.Equals(ifNoneMatch))
{
return true;
diff --git a/Emby.Server.Implementations/HttpServer/IHttpListener.cs b/Emby.Server.Implementations/HttpServer/IHttpListener.cs
index d50d7df6b..835091361 100644
--- a/Emby.Server.Implementations/HttpServer/IHttpListener.cs
+++ b/Emby.Server.Implementations/HttpServer/IHttpListener.cs
@@ -1,10 +1,10 @@
-using MediaBrowser.Controller.Net;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Services;
using Emby.Server.Implementations.Net;
+using MediaBrowser.Controller.Net;
+using MediaBrowser.Model.Services;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/LoggerUtils.cs b/Emby.Server.Implementations/HttpServer/LoggerUtils.cs
index 5b7bbe79c..d22d9db26 100644
--- a/Emby.Server.Implementations/HttpServer/LoggerUtils.cs
+++ b/Emby.Server.Implementations/HttpServer/LoggerUtils.cs
@@ -1,7 +1,7 @@
-using Microsoft.Extensions.Logging;
using System;
using System.Globalization;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs b/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs
index ef47a7ca9..891a76ec2 100644
--- a/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs
+++ b/Emby.Server.Implementations/HttpServer/RangeRequestWriter.cs
@@ -1,4 +1,3 @@
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -7,6 +6,7 @@ using System.Net;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/ResponseFilter.cs b/Emby.Server.Implementations/HttpServer/ResponseFilter.cs
index afaee59f3..da2bf983a 100644
--- a/Emby.Server.Implementations/HttpServer/ResponseFilter.cs
+++ b/Emby.Server.Implementations/HttpServer/ResponseFilter.cs
@@ -1,8 +1,8 @@
-using Microsoft.Extensions.Logging;
using System;
using System.Globalization;
using System.Text;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/Security/AuthService.cs b/Emby.Server.Implementations/HttpServer/Security/AuthService.cs
index fb5bfa601..499a334fc 100644
--- a/Emby.Server.Implementations/HttpServer/Security/AuthService.cs
+++ b/Emby.Server.Implementations/HttpServer/Security/AuthService.cs
@@ -1,15 +1,13 @@
+using System;
+using System.Linq;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Connect;
-using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Security;
using MediaBrowser.Controller.Session;
-using System;
-using System.Linq;
using MediaBrowser.Model.Services;
-using MediaBrowser.Common.Net;
namespace Emby.Server.Implementations.HttpServer.Security
{
@@ -209,8 +207,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
private static AuthenticationInfo GetTokenInfo(IRequest request)
{
- object info;
- request.Items.TryGetValue("OriginalAuthenticationInfo", out info);
+ request.Items.TryGetValue("OriginalAuthenticationInfo", out var info);
return info as AuthenticationInfo;
}
diff --git a/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs b/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs
index f561c3d60..cab41e65b 100644
--- a/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs
+++ b/Emby.Server.Implementations/HttpServer/Security/AuthorizationContext.cs
@@ -1,12 +1,10 @@
-using MediaBrowser.Controller.Connect;
-using MediaBrowser.Controller.Net;
-using MediaBrowser.Controller.Security;
using System;
using System.Collections.Generic;
-using MediaBrowser.Model.Services;
using System.Linq;
-using System.Threading;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Net;
+using MediaBrowser.Controller.Security;
+using MediaBrowser.Model.Services;
namespace Emby.Server.Implementations.HttpServer.Security
{
@@ -28,8 +26,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
public AuthorizationInfo GetAuthorizationInfo(IRequest requestContext)
{
- object cached;
- if (requestContext.Items.TryGetValue("AuthorizationInfo", out cached))
+ if (requestContext.Items.TryGetValue("AuthorizationInfo", out var cached))
{
return (AuthorizationInfo)cached;
}
diff --git a/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs b/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs
index a919ce008..81e11d312 100644
--- a/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs
+++ b/Emby.Server.Implementations/HttpServer/Security/SessionContext.cs
@@ -1,11 +1,10 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Security;
using MediaBrowser.Controller.Session;
-using System.Threading.Tasks;
using MediaBrowser.Model.Services;
-using System;
namespace Emby.Server.Implementations.HttpServer.Security
{
@@ -32,8 +31,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
private AuthenticationInfo GetTokenInfo(IRequest request)
{
- object info;
- request.Items.TryGetValue("OriginalAuthenticationInfo", out info);
+ request.Items.TryGetValue("OriginalAuthenticationInfo", out var info);
return info as AuthenticationInfo;
}
diff --git a/Emby.Server.Implementations/HttpServer/StreamWriter.cs b/Emby.Server.Implementations/HttpServer/StreamWriter.cs
index df0d74685..3269d44cf 100644
--- a/Emby.Server.Implementations/HttpServer/StreamWriter.cs
+++ b/Emby.Server.Implementations/HttpServer/StreamWriter.cs
@@ -1,12 +1,11 @@
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
-
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
diff --git a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
index 5426114f6..b9146d007 100644
--- a/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
+++ b/Emby.Server.Implementations/HttpServer/WebSocketConnection.cs
@@ -1,15 +1,15 @@
-using System.Text;
-using MediaBrowser.Controller.Net;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Serialization;
using System;
+using System.Net.WebSockets;
+using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using Emby.Server.Implementations.Net;
+using MediaBrowser.Controller.Net;
+using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Services;
using MediaBrowser.Model.Text;
-using System.Net.WebSockets;
-using Emby.Server.Implementations.Net;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.HttpServer
{
@@ -77,7 +77,7 @@ namespace Emby.Server.Implementations.HttpServer
/// <param name="remoteEndPoint">The remote end point.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
- /// <exception cref="System.ArgumentNullException">socket</exception>
+ /// <exception cref="ArgumentNullException">socket</exception>
public WebSocketConnection(IWebSocket socket, string remoteEndPoint, IJsonSerializer jsonSerializer, ILogger logger, ITextEncoding textEncoding)
{
if (socket == null)
@@ -215,7 +215,7 @@ namespace Emby.Server.Implementations.HttpServer
/// <param name="message">The message.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">message</exception>
+ /// <exception cref="ArgumentNullException">message</exception>
public Task SendAsync<T>(WebSocketMessage<T> message, CancellationToken cancellationToken)
{
if (message == null)
diff --git a/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs b/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs
index 6b08c26c9..48b34a3a0 100644
--- a/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs
+++ b/Emby.Server.Implementations/IO/ExtendedFileSystemInfo.cs
@@ -1,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace Emby.Server.Implementations.IO
{
public class ExtendedFileSystemInfo
diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs
index c2def33db..6bee178ea 100644
--- a/Emby.Server.Implementations/IO/FileRefresher.cs
+++ b/Emby.Server.Implementations/IO/FileRefresher.cs
@@ -1,16 +1,16 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using MediaBrowser.Model.IO;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Extensions;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.IO
{
diff --git a/Emby.Server.Implementations/IO/IsoManager.cs b/Emby.Server.Implementations/IO/IsoManager.cs
index e0cf32868..f0a15097c 100644
--- a/Emby.Server.Implementations/IO/IsoManager.cs
+++ b/Emby.Server.Implementations/IO/IsoManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
@@ -23,8 +23,8 @@ namespace Emby.Server.Implementations.IO
/// <param name="isoPath">The iso path.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>IsoMount.</returns>
- /// <exception cref="System.ArgumentNullException">isoPath</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">isoPath</exception>
+ /// <exception cref="ArgumentException"></exception>
public Task<IIsoMount> Mount(string isoPath, CancellationToken cancellationToken)
{
if (string.IsNullOrEmpty(isoPath))
diff --git a/Emby.Server.Implementations/IO/LibraryMonitor.cs b/Emby.Server.Implementations/IO/LibraryMonitor.cs
index 9a224bd0e..6a3204011 100644
--- a/Emby.Server.Implementations/IO/LibraryMonitor.cs
+++ b/Emby.Server.Implementations/IO/LibraryMonitor.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
@@ -9,10 +9,10 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.IO
{
@@ -103,8 +103,7 @@ namespace Emby.Server.Implementations.IO
// But if we make this delay too high, we risk missing legitimate changes, such as user adding a new file, or hand-editing metadata
await Task.Delay(45000).ConfigureAwait(false);
- string val;
- _tempIgnoredPaths.TryRemove(path, out val);
+ _tempIgnoredPaths.TryRemove(path, out var val);
if (refreshPath)
{
@@ -263,7 +262,7 @@ namespace Emby.Server.Implementations.IO
/// <param name="lst">The LST.</param>
/// <param name="path">The path.</param>
/// <returns><c>true</c> if [contains parent folder] [the specified LST]; otherwise, <c>false</c>.</returns>
- /// <exception cref="System.ArgumentNullException">path</exception>
+ /// <exception cref="ArgumentNullException">path</exception>
private static bool ContainsParentFolder(IEnumerable<string> lst, string path)
{
if (string.IsNullOrEmpty(path))
@@ -365,9 +364,7 @@ namespace Emby.Server.Implementations.IO
/// <param name="path">The path.</param>
private void StopWatchingPath(string path)
{
- FileSystemWatcher watcher;
-
- if (_fileSystemWatchers.TryGetValue(path, out watcher))
+ if (_fileSystemWatchers.TryGetValue(path, out var watcher))
{
DisposeWatcher(watcher, true);
}
@@ -424,9 +421,7 @@ namespace Emby.Server.Implementations.IO
/// <param name="watcher">The watcher.</param>
private void RemoveWatcherFromList(FileSystemWatcher watcher)
{
- FileSystemWatcher removed;
-
- _fileSystemWatchers.TryRemove(watcher.Path, out removed);
+ _fileSystemWatchers.TryRemove(watcher.Path, out var removed);
}
/// <summary>
diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
index bee96c785..ae1470190 100644
--- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs
+++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs
@@ -5,8 +5,8 @@ using System.IO;
using System.Linq;
using System.Text;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.System;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.IO
{
@@ -101,7 +101,7 @@ namespace Emby.Server.Implementations.IO
/// </summary>
/// <param name="filename">The filename.</param>
/// <returns><c>true</c> if the specified filename is shortcut; otherwise, <c>false</c>.</returns>
- /// <exception cref="System.ArgumentNullException">filename</exception>
+ /// <exception cref="ArgumentNullException">filename</exception>
public virtual bool IsShortcut(string filename)
{
if (string.IsNullOrEmpty(filename))
@@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.IO
/// </summary>
/// <param name="filename">The filename.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">filename</exception>
+ /// <exception cref="ArgumentNullException">filename</exception>
public virtual string ResolveShortcut(string filename)
{
if (string.IsNullOrEmpty(filename))
@@ -185,7 +185,7 @@ namespace Emby.Server.Implementations.IO
/// </summary>
/// <param name="shortcutPath">The shortcut path.</param>
/// <param name="target">The target.</param>
- /// <exception cref="System.ArgumentNullException">
+ /// <exception cref="ArgumentNullException">
/// shortcutPath
/// or
/// target
@@ -344,7 +344,7 @@ namespace Emby.Server.Implementations.IO
/// </summary>
/// <param name="filename">The filename.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">filename</exception>
+ /// <exception cref="ArgumentNullException">filename</exception>
public string GetValidFilename(string filename)
{
var builder = new StringBuilder(filename);
@@ -526,7 +526,7 @@ namespace Emby.Server.Implementations.IO
}
else
{
- FileAttributes attributes = File.GetAttributes(path);
+ var attributes = File.GetAttributes(path);
attributes = RemoveAttribute(attributes, FileAttributes.Hidden);
File.SetAttributes(path, attributes);
}
@@ -550,7 +550,7 @@ namespace Emby.Server.Implementations.IO
}
else
{
- FileAttributes attributes = File.GetAttributes(path);
+ var attributes = File.GetAttributes(path);
attributes = RemoveAttribute(attributes, FileAttributes.ReadOnly);
File.SetAttributes(path, attributes);
}
diff --git a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs b/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
index 8ac662f78..a306f94b3 100644
--- a/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
+++ b/Emby.Server.Implementations/IO/MbLinkShortcutHandler.cs
@@ -1,7 +1,5 @@
-using System;
+using System;
using System.IO;
-
-using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.IO
diff --git a/Emby.Server.Implementations/IO/StreamHelper.cs b/Emby.Server.Implementations/IO/StreamHelper.cs
index e91817611..09cf4d4a3 100644
--- a/Emby.Server.Implementations/IO/StreamHelper.cs
+++ b/Emby.Server.Implementations/IO/StreamHelper.cs
@@ -1,6 +1,6 @@
-using System.IO;
-using System.Threading;
using System;
+using System.IO;
+using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.IO;
diff --git a/Emby.Server.Implementations/IO/ThrottledStream.cs b/Emby.Server.Implementations/IO/ThrottledStream.cs
index 3635ee1db..81e8abc98 100644
--- a/Emby.Server.Implementations/IO/ThrottledStream.cs
+++ b/Emby.Server.Implementations/IO/ThrottledStream.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -264,7 +264,7 @@ namespace Emby.Server.Implementations.IO
{
if (!ThrottleCheck(bufferSizeInBytes))
{
- return ;
+ return;
}
_byteCount += bufferSizeInBytes;
@@ -352,4 +352,4 @@ namespace Emby.Server.Implementations.IO
}
#endregion
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
index 964e38962..b99b98157 100644
--- a/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
+++ b/Emby.Server.Implementations/Images/BaseDynamicImageProvider.cs
@@ -1,22 +1,18 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Playlists;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-
-using MediaBrowser.Model.IO;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.Configuration;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Playlists;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Net;
namespace Emby.Server.Implementations.Images
diff --git a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
index 7fb979d66..c0a126b84 100644
--- a/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
+++ b/Emby.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
@@ -1,13 +1,10 @@
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
using System;
using System.Collections.Generic;
-using System.IO;
using System.Linq;
-
-using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.IO;
using Microsoft.Extensions.Logging;
diff --git a/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs b/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs
index 775b5d283..4013ac0c8 100644
--- a/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs
+++ b/Emby.Server.Implementations/Library/DefaultAuthenticationProvider.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Collections.Generic;
+using System;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Controller.Authentication;
diff --git a/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs b/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs
index 186ec63da..45a33a296 100644
--- a/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs
+++ b/Emby.Server.Implementations/Library/ExclusiveLiveStream.cs
@@ -1,8 +1,8 @@
-using System;
+using System;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Dto;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Dto;
namespace Emby.Server.Implementations.Library
{
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index d901381cd..073005a1e 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -1,52 +1,48 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Emby.Naming.Audio;
+using Emby.Naming.Common;
+using Emby.Naming.TV;
+using Emby.Naming.Video;
+using Emby.Server.Implementations.Library.Resolvers;
+using Emby.Server.Implementations.Library.Validators;
+using Emby.Server.Implementations.Playlists;
+using Emby.Server.Implementations.ScheduledTasks;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Progress;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Querying;
-using Emby.Naming.Audio;
-using Emby.Naming.Common;
-using Emby.Naming.TV;
-using Emby.Naming.Video;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Threading;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Library.Resolvers;
-using Emby.Server.Implementations.Library.Validators;
-using Emby.Server.Implementations.ScheduledTasks;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Channels;
-using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Library;
using MediaBrowser.Model.Net;
-using SortOrder = MediaBrowser.Model.Entities.SortOrder;
-using VideoResolver = Emby.Naming.Video.VideoResolver;
-using MediaBrowser.Common.Configuration;
-
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Tasks;
-using Emby.Server.Implementations.Playlists;
using MediaBrowser.Providers.MediaInfo;
-using MediaBrowser.Controller;
+using Microsoft.Extensions.Logging;
+using SortOrder = MediaBrowser.Model.Entities.SortOrder;
+using VideoResolver = Emby.Naming.Video.VideoResolver;
namespace Emby.Server.Implementations.Library
{
@@ -391,7 +387,7 @@ namespace Emby.Server.Implementations.Library
{
try
{
- _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
+ _logger.LogDebug("Deleting path {path}", fileSystemInfo.FullName);
if (fileSystemInfo.IsDirectory)
{
_fileSystem.DeleteDirectory(fileSystemInfo.FullName, true);
@@ -436,8 +432,7 @@ namespace Emby.Server.Implementations.Library
ItemRepository.DeleteItem(child.Id, CancellationToken.None);
}
- BaseItem removed;
- _libraryItemsCache.TryRemove(item.Id, out removed);
+ _libraryItemsCache.TryRemove(item.Id, out BaseItem removed);
ReportItemRemoved(item, parent);
}
@@ -715,14 +710,14 @@ namespace Emby.Server.Implementations.Library
/// Creates the root media folder
/// </summary>
/// <returns>AggregateFolder.</returns>
- /// <exception cref="System.InvalidOperationException">Cannot create the root folder until plugins have loaded</exception>
+ /// <exception cref="InvalidOperationException">Cannot create the root folder until plugins have loaded</exception>
public AggregateFolder CreateRootFolder()
{
var rootFolderPath = ConfigurationManager.ApplicationPaths.RootFolderPath;
_fileSystem.CreateDirectory(rootFolderPath);
- var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy<Folder,AggregateFolder>();
+ var rootFolder = GetItemById(GetNewItemId(rootFolderPath, typeof(AggregateFolder))) as AggregateFolder ?? ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(rootFolderPath))).DeepCopy<Folder, AggregateFolder>();
// In case program data folder was moved
if (!string.Equals(rootFolder.Path, rootFolderPath, StringComparison.Ordinal))
@@ -791,7 +786,7 @@ namespace Emby.Server.Implementations.Library
if (tmpItem == null)
{
- tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy<Folder,UserRootFolder>();
+ tmpItem = ((Folder)ResolvePath(_fileSystem.GetDirectoryInfo(userRootPath))).DeepCopy<Folder, UserRootFolder>();
}
// In case program data folder was moved
@@ -909,12 +904,12 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="value">The value.</param>
/// <returns>Task{Year}.</returns>
- /// <exception cref="System.ArgumentOutOfRangeException"></exception>
+ /// <exception cref="ArgumentOutOfRangeException"></exception>
public Year GetYear(int value)
{
if (value <= 0)
{
- throw new ArgumentOutOfRangeException(nameof(value),"Years less than or equal to 0 are invalid.");
+ throw new ArgumentOutOfRangeException(nameof(value), "Years less than or equal to 0 are invalid.");
}
var name = value.ToString(CultureInfo.InvariantCulture);
@@ -1237,7 +1232,7 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="id">The id.</param>
/// <returns>BaseItem.</returns>
- /// <exception cref="System.ArgumentNullException">id</exception>
+ /// <exception cref="ArgumentNullException">id</exception>
public BaseItem GetItemById(Guid id)
{
if (id.Equals(Guid.Empty))
@@ -1245,9 +1240,7 @@ namespace Emby.Server.Implementations.Library
throw new ArgumentNullException(nameof(id));
}
- BaseItem item;
-
- if (LibraryItemsCache.TryGetValue(id, out item))
+ if (LibraryItemsCache.TryGetValue(id, out BaseItem item))
{
return item;
}
@@ -2079,7 +2072,7 @@ namespace Emby.Server.Implementations.Library
public string GetConfiguredContentType(BaseItem item, bool inheritConfiguredPath)
{
- ICollectionFolder collectionFolder = item as ICollectionFolder;
+ var collectionFolder = item as ICollectionFolder;
if (collectionFolder != null)
{
return collectionFolder.CollectionType;
@@ -2375,7 +2368,7 @@ namespace Emby.Server.Implementations.Library
string videoPath,
string[] files)
{
- new SubtitleResolver(BaseItem.LocalizationManager, _fileSystem).AddExternalSubtitleStreams(streams, videoPath, streams.Count, files);
+ new SubtitleResolver(BaseItem.LocalizationManager, _fileSystem).AddExternalSubtitleStreams(streams, videoPath, streams.Count, files);
}
public bool IsVideoFile(string path, LibraryOptions libraryOptions)
@@ -2421,11 +2414,11 @@ namespace Emby.Server.Implementations.Library
var episodeInfo = episode.IsFileProtocol ?
resolver.Resolve(episode.Path, isFolder, null, null, isAbsoluteNaming) :
- new Emby.Naming.TV.EpisodeInfo();
+ new Naming.TV.EpisodeInfo();
if (episodeInfo == null)
{
- episodeInfo = new Emby.Naming.TV.EpisodeInfo();
+ episodeInfo = new Naming.TV.EpisodeInfo();
}
var changed = false;
@@ -2589,7 +2582,7 @@ namespace Emby.Server.Implementations.Library
video.ParentId = Guid.Empty;
video.OwnerId = owner.Id;
video.ExtraType = ExtraType.Trailer;
- video.TrailerTypes = new [] { TrailerType.LocalTrailer };
+ video.TrailerTypes = new[] { TrailerType.LocalTrailer };
return video;
diff --git a/Emby.Server.Implementations/Library/LiveStreamHelper.cs b/Emby.Server.Implementations/Library/LiveStreamHelper.cs
index d0b3152ba..c3082a78a 100644
--- a/Emby.Server.Implementations/Library/LiveStreamHelper.cs
+++ b/Emby.Server.Implementations/Library/LiveStreamHelper.cs
@@ -1,19 +1,19 @@
-using System;
+using System;
+using System.Collections.Generic;
using System.Globalization;
+using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.MediaInfo;
-using System.Collections.Generic;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Common.Configuration;
-using System.IO;
-using MediaBrowser.Common.Extensions;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library
{
diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs
index 3578d8763..e0ecb2bce 100644
--- a/Emby.Server.Implementations/Library/MediaSourceManager.cs
+++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs
@@ -1,28 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Threading;
-using MediaBrowser.Model.Dlna;
-using MediaBrowser.Model.Globalization;
-using System.IO;
-using System.Globalization;
-using MediaBrowser.Common.Configuration;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library
{
@@ -128,7 +127,7 @@ namespace Emby.Server.Implementations.Library
if (allowMediaProbe && mediaSources[0].Type != MediaSourceType.Placeholder && !mediaSources[0].MediaStreams.Any(i => i.Type == MediaStreamType.Audio || i.Type == MediaStreamType.Video))
{
- await item.RefreshMetadata(new MediaBrowser.Controller.Providers.MetadataRefreshOptions(new DirectoryService(_logger, _fileSystem))
+ await item.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService(_logger, _fileSystem))
{
EnableRemoteContentProbe = true,
MetadataRefreshMode = MediaBrowser.Controller.Providers.MetadataRefreshMode.FullRefresh
@@ -778,8 +777,7 @@ namespace Emby.Server.Implementations.Library
try
{
- ILiveStream info;
- if (_openStreams.TryGetValue(id, out info))
+ if (_openStreams.TryGetValue(id, out ILiveStream info))
{
return info;
}
@@ -811,9 +809,7 @@ namespace Emby.Server.Implementations.Library
try
{
- ILiveStream liveStream;
-
- if (_openStreams.TryGetValue(id, out liveStream))
+ if (_openStreams.TryGetValue(id, out ILiveStream liveStream))
{
liveStream.ConsumerCount--;
diff --git a/Emby.Server.Implementations/Library/MediaStreamSelector.cs b/Emby.Server.Implementations/Library/MediaStreamSelector.cs
index 5d4c5a452..0a6c8845d 100644
--- a/Emby.Server.Implementations/Library/MediaStreamSelector.cs
+++ b/Emby.Server.Implementations/Library/MediaStreamSelector.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Entities;
namespace Emby.Server.Implementations.Library
{
@@ -171,7 +171,7 @@ namespace Emby.Server.Implementations.Library
private static int FindIndex(string[] list, string value)
{
- for (var i=0; i< list.Length; i++)
+ for (var i = 0; i < list.Length; i++)
{
if (string.Equals(list[i], value, StringComparison.OrdinalIgnoreCase))
{
diff --git a/Emby.Server.Implementations/Library/MusicManager.cs b/Emby.Server.Implementations/Library/MusicManager.cs
index 1319ee6f4..10602fea7 100644
--- a/Emby.Server.Implementations/Library/MusicManager.cs
+++ b/Emby.Server.Implementations/Library/MusicManager.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Playlists;
using System;
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Playlists;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying;
@@ -89,7 +89,7 @@ namespace Emby.Server.Implementations.Library
Limit = 200,
- OrderBy = new [] { new ValueTuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending) },
+ OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.Random, SortOrder.Ascending) },
DtoOptions = dtoOptions
diff --git a/Emby.Server.Implementations/Library/PathExtensions.cs b/Emby.Server.Implementations/Library/PathExtensions.cs
index 2d3019d17..d3a81f622 100644
--- a/Emby.Server.Implementations/Library/PathExtensions.cs
+++ b/Emby.Server.Implementations/Library/PathExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Text.RegularExpressions;
namespace Emby.Server.Implementations.Library
@@ -11,7 +11,7 @@ namespace Emby.Server.Implementations.Library
/// <param name="str">The STR.</param>
/// <param name="attrib">The attrib.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">attrib</exception>
+ /// <exception cref="ArgumentNullException">attrib</exception>
public static string GetAttributeValue(this string str, string attrib)
{
if (string.IsNullOrEmpty(str))
diff --git a/Emby.Server.Implementations/Library/ResolverHelper.cs b/Emby.Server.Implementations/Library/ResolverHelper.cs
index 027d82c58..96d1bff92 100644
--- a/Emby.Server.Implementations/Library/ResolverHelper.cs
+++ b/Emby.Server.Implementations/Library/ResolverHelper.cs
@@ -1,10 +1,9 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
using System;
using System.IO;
using System.Linq;
-using System.Text.RegularExpressions;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Library
@@ -22,7 +21,7 @@ namespace Emby.Server.Implementations.Library
/// <param name="fileSystem">The file system.</param>
/// <param name="libraryManager">The library manager.</param>
/// <param name="directoryService">The directory service.</param>
- /// <exception cref="System.ArgumentException">Item must have a path</exception>
+ /// <exception cref="ArgumentException">Item must have a path</exception>
public static void SetInitialItemValues(BaseItem item, Folder parent, IFileSystem fileSystem, ILibraryManager libraryManager, IDirectoryService directoryService)
{
// This version of the below method has no ItemResolveArgs, so we have to require the path already being set
@@ -104,7 +103,7 @@ namespace Emby.Server.Implementations.Library
/// <returns>System.String.</returns>
private static string GetDisplayName(string path, bool isDirectory)
{
- return isDirectory ? Path.GetFileName(path) : Path.GetFileNameWithoutExtension(path);
+ return isDirectory ? Path.GetFileName(path) : Path.GetFileNameWithoutExtension(path);
}
/// <summary>
diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
index bac39122b..baa665fce 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
@@ -1,16 +1,14 @@
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
-using MediaBrowser.Model.Entities;
using System;
-using MediaBrowser.Controller.Entities;
+using System.Collections.Generic;
using System.IO;
using System.Linq;
+using Emby.Naming.AudioBook;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
-using System.Collections.Generic;
+using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Extensions;
-using Emby.Naming.Video;
-using Emby.Naming.AudioBook;
namespace Emby.Server.Implementations.Library.Resolvers.Audio
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
index da5fe48cd..3ce1da81a 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
@@ -1,18 +1,14 @@
-using MediaBrowser.Controller.Entities.Audio;
+using System;
+using System.Collections.Generic;
+using Emby.Naming.Audio;
+using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using Emby.Naming.Audio;
-using System;
-using System.Collections.Generic;
-using System.IO;
-
using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.Configuration;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers.Audio
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
index b3a5c27c8..74e9b8304 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
@@ -1,15 +1,12 @@
-using MediaBrowser.Controller.Entities.Audio;
+using System;
+using System.Linq;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using System;
-using System.IO;
-using System.Linq;
-
using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers.Audio
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
index b9ac2056f..d992f8d03 100644
--- a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs
@@ -1,13 +1,12 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
-using Emby.Naming.Video;
using System;
using System.IO;
using System.Linq;
+using Emby.Naming.Video;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers
{
@@ -50,7 +49,7 @@ namespace Emby.Server.Implementations.Library.Resolvers
var namingOptions = ((LibraryManager)LibraryManager).GetNamingOptions();
// If the path is a file check for a matching extensions
- var parser = new Emby.Naming.Video.VideoResolver(namingOptions);
+ var parser = new VideoResolver(namingOptions);
if (args.IsDirectory)
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
index d7f80b3f4..f22554ee5 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Books/BookResolver.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Linq;
using MediaBrowser.Controller.Entities;
diff --git a/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs b/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs
index 47e7f7344..e48b6c967 100644
--- a/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/FolderResolver.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
diff --git a/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs b/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs
index 529916619..a6db40714 100644
--- a/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/ItemResolver.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
index d3ab4dd37..922bd4bbb 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/BoxSetResolver.cs
@@ -1,9 +1,9 @@
+using System;
+using System.IO;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
-using System;
-using System.IO;
using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Library.Resolvers.Movies
diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index 0a45317a4..e48213dbb 100644
--- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -1,3 +1,9 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Emby.Naming.Video;
+using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
@@ -6,15 +12,7 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
-using Emby.Naming.Video;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers.Movies
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs
index a073e0bd5..82779f8d3 100644
--- a/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs
@@ -1,11 +1,9 @@
-using MediaBrowser.Controller.Drawing;
+using System;
+using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.Entities;
-using System;
-using System.IO;
-using System.Linq;
namespace Emby.Server.Implementations.Library.Resolvers
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs
index e3cce5f4b..78c1c6629 100644
--- a/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/PhotoResolver.cs
@@ -1,11 +1,11 @@
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
using System;
using System.IO;
using System.Linq;
+using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Library.Resolvers
diff --git a/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs b/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs
index e66c9f087..c295894d3 100644
--- a/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/PlaylistResolver.cs
@@ -1,10 +1,10 @@
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Playlists;
using System;
using System.IO;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.Entities;
using System.Linq;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Playlists;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Library.Resolvers
{
diff --git a/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs b/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs
index 5cf5cd3ad..fa8c89e88 100644
--- a/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/SpecialFolderResolver.cs
@@ -1,12 +1,10 @@
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
using System;
using System.IO;
using System.Linq;
-
-using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Library.Resolvers
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
index 4e5ac959c..fed0904d1 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
@@ -1,7 +1,7 @@
-using System;
+using System;
+using System.Linq;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
-using System.Linq;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
index 4bfedf3c6..ce1386e91 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs
@@ -1,10 +1,9 @@
using System.Globalization;
+using Emby.Naming.TV;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Globalization;
-using Emby.Naming.Common;
-using Emby.Naming.TV;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers.TV
@@ -64,7 +63,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
if (!season.IndexNumber.HasValue || !seasonParserResult.IsSeasonFolder)
{
- var resolver = new Emby.Naming.TV.EpisodeResolver(namingOptions);
+ var resolver = new Naming.TV.EpisodeResolver(namingOptions);
var folderName = System.IO.Path.GetFileName(path);
var testPath = "\\\\test\\" + folderName;
diff --git a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
index 7d2865f0d..16b5a2d3a 100644
--- a/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
@@ -1,20 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using Emby.Naming.TV;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
+using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using Emby.Naming.Common;
-using Emby.Naming.TV;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-
using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.Configuration;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Resolvers.TV
{
@@ -156,7 +151,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
var namingOptions = ((LibraryManager)libraryManager).GetNamingOptions();
- var episodeResolver = new Emby.Naming.TV.EpisodeResolver(namingOptions);
+ var episodeResolver = new Naming.TV.EpisodeResolver(namingOptions);
bool? isNamed = null;
bool? isOptimistic = null;
@@ -184,7 +179,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.TV
/// </summary>
/// <param name="path">The path.</param>
/// <returns><c>true</c> if [is place holder] [the specified path]; otherwise, <c>false</c>.</returns>
- /// <exception cref="System.ArgumentNullException">path</exception>
+ /// <exception cref="ArgumentNullException">path</exception>
private static bool IsVideoPlaceHolder(string path)
{
if (string.IsNullOrEmpty(path))
diff --git a/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs
index 030ff88f7..60752a85d 100644
--- a/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs
+++ b/Emby.Server.Implementations/Library/Resolvers/VideoResolver.cs
@@ -1,12 +1,11 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.Library.Resolvers
{
public class GenericVideoResolver<T> : BaseVideoResolver<T>
- where T : Video, new ()
+ where T : Video, new()
{
public GenericVideoResolver(ILibraryManager libraryManager, IFileSystem fileSystem) : base(libraryManager, fileSystem)
{
diff --git a/Emby.Server.Implementations/Library/SearchEngine.cs b/Emby.Server.Implementations/Library/SearchEngine.cs
index bbb139439..71638b197 100644
--- a/Emby.Server.Implementations/Library/SearchEngine.cs
+++ b/Emby.Server.Implementations/Library/SearchEngine.cs
@@ -1,17 +1,15 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Search;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Extensions;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.Querying;
+using MediaBrowser.Model.Search;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library
{
@@ -78,7 +76,7 @@ namespace Emby.Server.Implementations.Library
/// <param name="query">The query.</param>
/// <param name="user">The user.</param>
/// <returns>IEnumerable{SearchHintResult}.</returns>
- /// <exception cref="System.ArgumentNullException">searchTerm</exception>
+ /// <exception cref="ArgumentNullException">searchTerm</exception>
private List<SearchHintInfo> GetSearchHints(SearchQuery query, User user)
{
var searchTerm = query.SearchTerm;
diff --git a/Emby.Server.Implementations/Library/UserDataManager.cs b/Emby.Server.Implementations/Library/UserDataManager.cs
index 3ca4b6b10..dfa1edaff 100644
--- a/Emby.Server.Implementations/Library/UserDataManager.cs
+++ b/Emby.Server.Implementations/Library/UserDataManager.cs
@@ -1,16 +1,16 @@
-using MediaBrowser.Controller.Configuration;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Threading;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using Microsoft.Extensions.Logging;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Threading;
-using MediaBrowser.Controller.Dto;
-using System.Globalization;
namespace Emby.Server.Implementations.Library
{
@@ -193,7 +193,7 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="data">The data.</param>
/// <returns>DtoUserItemData.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
+ /// <exception cref="ArgumentNullException"></exception>
private UserItemDataDto GetUserItemDataDto(UserItemData data)
{
if (data == null)
diff --git a/Emby.Server.Implementations/Library/UserManager.cs b/Emby.Server.Implementations/Library/UserManager.cs
index c059cbc75..f06c71386 100644
--- a/Emby.Server.Implementations/Library/UserManager.cs
+++ b/Emby.Server.Implementations/Library/UserManager.cs
@@ -1,37 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Plugins;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Controller.Security;
+using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Connect;
+using MediaBrowser.Model.Cryptography;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Users;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Cryptography;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Authentication;
-using MediaBrowser.Controller.Security;
-using MediaBrowser.Controller.Devices;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Controller.Plugins;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library
{
@@ -158,7 +158,7 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="id">The id.</param>
/// <returns>User.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
+ /// <exception cref="ArgumentNullException"></exception>
public User GetUserById(Guid id)
{
if (id.Equals(Guid.Empty))
@@ -619,8 +619,8 @@ namespace Emby.Server.Implementations.Library
/// <param name="user">The user.</param>
/// <param name="newName">The new name.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">user</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">user</exception>
+ /// <exception cref="ArgumentException"></exception>
public async Task RenameUser(User user, string newName)
{
if (user == null)
@@ -652,8 +652,8 @@ namespace Emby.Server.Implementations.Library
/// Updates the user.
/// </summary>
/// <param name="user">The user.</param>
- /// <exception cref="System.ArgumentNullException">user</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">user</exception>
+ /// <exception cref="ArgumentException"></exception>
public void UpdateUser(User user)
{
if (user == null)
@@ -683,8 +683,8 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="name">The name.</param>
/// <returns>User.</returns>
- /// <exception cref="System.ArgumentNullException">name</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">name</exception>
+ /// <exception cref="ArgumentException"></exception>
public async Task<User> CreateUser(string name)
{
if (string.IsNullOrWhiteSpace(name))
@@ -731,8 +731,8 @@ namespace Emby.Server.Implementations.Library
/// </summary>
/// <param name="user">The user.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">user</exception>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentNullException">user</exception>
+ /// <exception cref="ArgumentException"></exception>
public async Task DeleteUser(User user)
{
if (user == null)
diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs
index d616e1209..9fa859bde 100644
--- a/Emby.Server.Implementations/Library/UserViewManager.cs
+++ b/Emby.Server.Implementations/Library/UserViewManager.cs
@@ -1,21 +1,19 @@
-using MediaBrowser.Controller.Channels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Library;
using MediaBrowser.Model.Querying;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Library
{
@@ -242,7 +240,7 @@ namespace Emby.Server.Implementations.Library
{
return _channelManager.GetLatestChannelItemsInternal(new InternalItemsQuery(user)
{
- ChannelIds = new [] { parentId },
+ ChannelIds = new[] { parentId },
IsPlayed = request.IsPlayed,
StartIndex = request.StartIndex,
Limit = request.Limit,
diff --git a/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs
index eee66c8ac..27261d449 100644
--- a/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/ArtistsPostScanTask.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs b/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs
index 278c0cc7a..294348660 100644
--- a/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/ArtistsValidator.cs
@@ -1,16 +1,12 @@
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
-using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Extensions;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs
index ea1f2e552..2b067951d 100644
--- a/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/GameGenresPostScanTask.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs b/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs
index 070777475..f5ffa1e45 100644
--- a/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/GameGenresValidator.cs
@@ -1,11 +1,9 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs
index 4f4133340..056807300 100644
--- a/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/GenresPostScanTask.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Library;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using Microsoft.Extensions.Logging;
diff --git a/Emby.Server.Implementations/Library/Validators/GenresValidator.cs b/Emby.Server.Implementations/Library/Validators/GenresValidator.cs
index 775cde299..f8459c61f 100644
--- a/Emby.Server.Implementations/Library/Validators/GenresValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/GenresValidator.cs
@@ -1,12 +1,9 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs
index edc6f3ad6..d7ab92d30 100644
--- a/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/MusicGenresPostScanTask.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs b/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs
index b5ed1c0e6..710e5d043 100644
--- a/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/MusicGenresValidator.cs
@@ -1,12 +1,9 @@
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs b/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs
index 50c7cfbc6..0ea543ba0 100644
--- a/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/PeopleValidator.cs
@@ -1,12 +1,12 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Providers;
-using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs b/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs
index 45747dda1..4aa5c7e72 100644
--- a/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs
+++ b/Emby.Server.Implementations/Library/Validators/StudiosPostScanTask.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
index 1a5ebac54..da4645a11 100644
--- a/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
+++ b/Emby.Server.Implementations/Library/Validators/StudiosValidator.cs
@@ -1,11 +1,10 @@
-using MediaBrowser.Controller.Library;
-using Microsoft.Extensions.Logging;
using System;
-using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Library.Validators
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
index 327b0181a..7d7ef21e3 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs
@@ -1,13 +1,10 @@
-using System;
-using System.IO;
+using System;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
-
using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.IO;
using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index b787e8f0f..64e5affd7 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -8,36 +8,36 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
+using Emby.Server.Implementations.Library;
using MediaBrowser.Common.Configuration;
+using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Progress;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
+using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.MediaInfo;
+using MediaBrowser.Model.Providers;
+using MediaBrowser.Model.Querying;
+using MediaBrowser.Model.Reflection;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.Progress;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Threading;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Reflection;
-using MediaBrowser.Model.Providers;
-using MediaBrowser.Model.MediaInfo;
-using Emby.Server.Implementations.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
@@ -395,8 +395,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private async Task<EpgChannelData> GetEpgChannels(IListingsProvider provider, ListingsProviderInfo info, bool enableCache, CancellationToken cancellationToken)
{
- EpgChannelData result;
- if (!enableCache || !_epgChannels.TryGetValue(info.Id, out result))
+ if (!enableCache || !_epgChannels.TryGetValue(info.Id, out var result))
{
var channels = await provider.GetChannels(info, cancellationToken).ConfigureAwait(false);
@@ -648,9 +647,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
TimerCancelled(this, new GenericEventArgs<string>(timerId));
}
}
- ActiveRecordingInfo activeRecordingInfo;
- if (_activeRecordings.TryGetValue(timerId, out activeRecordingInfo))
+ if (_activeRecordings.TryGetValue(timerId, out var activeRecordingInfo))
{
activeRecordingInfo.Timer = timer;
activeRecordingInfo.CancellationTokenSource.Cancel();
@@ -817,8 +815,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
// Only update if not currently active
- ActiveRecordingInfo activeRecordingInfo;
- if (!_activeRecordings.TryGetValue(updatedTimer.Id, out activeRecordingInfo))
+ if (!_activeRecordings.TryGetValue(updatedTimer.Id, out var activeRecordingInfo))
{
existingTimer.PrePaddingSeconds = updatedTimer.PrePaddingSeconds;
existingTimer.PostPaddingSeconds = updatedTimer.PostPaddingSeconds;
@@ -860,9 +857,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
public string GetActiveRecordingPath(string id)
{
- ActiveRecordingInfo info;
-
- if (_activeRecordings.TryGetValue(id, out info))
+ if (_activeRecordings.TryGetValue(id, out var info))
{
return info.Path;
}
@@ -1428,8 +1423,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
TriggerRefresh(recordPath);
_libraryMonitor.ReportFileSystemChangeComplete(recordPath, false);
- ActiveRecordingInfo removed;
- _activeRecordings.TryRemove(timer.Id, out removed);
+ _activeRecordings.TryRemove(timer.Id, out var removed);
if (recordingStatus != RecordingStatus.Completed && DateTime.UtcNow < timer.EndDate && timer.RetryCount < 10)
{
@@ -1990,11 +1984,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
CloseOutput = false
};
- using (XmlWriter writer = XmlWriter.Create(stream, settings))
+ using (var writer = XmlWriter.Create(stream, settings))
{
writer.WriteStartDocument(true);
writer.WriteStartElement("tvshow");
-
string id;
if (timer.SeriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id))
{
@@ -2057,7 +2050,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
var isSeriesEpisode = timer.IsProgramSeries;
- using (XmlWriter writer = XmlWriter.Create(stream, settings))
+ using (var writer = XmlWriter.Create(stream, settings))
{
writer.WriteStartDocument(true);
@@ -2419,12 +2412,42 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (updateTimerSettings)
{
- existingTimer.KeepUntil = seriesTimer.KeepUntil;
- existingTimer.IsPostPaddingRequired = seriesTimer.IsPostPaddingRequired;
- existingTimer.IsPrePaddingRequired = seriesTimer.IsPrePaddingRequired;
- existingTimer.PostPaddingSeconds = seriesTimer.PostPaddingSeconds;
- existingTimer.PrePaddingSeconds = seriesTimer.PrePaddingSeconds;
- existingTimer.Priority = seriesTimer.Priority;
+ // Only update if not currently active - test both new timer and existing in case Id's are different
+ // Id's could be different if the timer was created manually prior to series timer creation
+ if (!_activeRecordings.TryGetValue(timer.Id, out var activeRecordingInfo) && !_activeRecordings.TryGetValue(existingTimer.Id, out activeRecordingInfo))
+ {
+ UpdateExistingTimerWithNewMetadata(existingTimer, timer);
+
+ // Needed by ShouldCancelTimerForSeriesTimer
+ timer.IsManual = existingTimer.IsManual;
+
+ if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer))
+ {
+ existingTimer.Status = RecordingStatus.Cancelled;
+ }
+ else if (!existingTimer.IsManual)
+ {
+ existingTimer.Status = RecordingStatus.New;
+ }
+
+ if (existingTimer.Status != RecordingStatus.Cancelled)
+ {
+ enabledTimersForSeries.Add(existingTimer);
+ }
+
+ if (updateTimerSettings)
+ {
+ existingTimer.KeepUntil = seriesTimer.KeepUntil;
+ existingTimer.IsPostPaddingRequired = seriesTimer.IsPostPaddingRequired;
+ existingTimer.IsPrePaddingRequired = seriesTimer.IsPrePaddingRequired;
+ existingTimer.PostPaddingSeconds = seriesTimer.PostPaddingSeconds;
+ existingTimer.PrePaddingSeconds = seriesTimer.PrePaddingSeconds;
+ existingTimer.Priority = seriesTimer.Priority;
+ }
+
+ existingTimer.SeriesTimerId = seriesTimer.Id;
+ _timerProvider.Update(existingTimer);
+ }
}
existingTimer.SeriesTimerId = seriesTimer.Id;
@@ -2497,7 +2520,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (string.IsNullOrWhiteSpace(channelId) && !parent.ChannelId.Equals(Guid.Empty))
{
- if (!tempChannelCache.TryGetValue(parent.ChannelId, out var channel))
+ if (!tempChannelCache.TryGetValue(parent.ChannelId, out LiveTvChannel channel))
{
channel = _libraryManager.GetItemList(new InternalItemsQuery
{
@@ -2556,7 +2579,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (!programInfo.ChannelId.Equals(Guid.Empty))
{
- if (!tempChannelCache.TryGetValue(programInfo.ChannelId, out var channel))
+ if (!tempChannelCache.TryGetValue(programInfo.ChannelId, out LiveTvChannel channel))
{
channel = _libraryManager.GetItemList(new InternalItemsQuery
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 292f3621d..c09ee9348 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -1,27 +1,25 @@
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Reflection;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs
index cc9e80a82..982a54b68 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EntryPoint.cs
@@ -1,4 +1,3 @@
-using System;
using MediaBrowser.Controller.Plugins;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs
index e639a312c..6eced3050 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Library;
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
index 593f98881..1b8287ed1 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/ItemDataProvider.cs
@@ -1,12 +1,10 @@
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-
-using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
index e694a8281..ded3c7607 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
@@ -1,6 +1,6 @@
-using MediaBrowser.Controller.LiveTv;
using System;
using System.Globalization;
+using MediaBrowser.Controller.LiveTv;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
index 620ba7650..d2ad65a1e 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/SeriesTimerManager.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
using System;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
index bdc6ae009..7f67d70a9 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs
@@ -4,11 +4,11 @@ using System.Globalization;
using System.Linq;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Threading;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
@@ -140,8 +140,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private void StopTimer(TimerInfo item)
{
- ITimer timer;
- if (_timers.TryRemove(item.Id, out timer))
+ if (_timers.TryRemove(item.Id, out var timer))
{
timer.Dispose();
}
diff --git a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
index 0ba8c8b42..d3066e916 100644
--- a/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
+++ b/Emby.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs
@@ -1,22 +1,22 @@
-using System.Net;
-using MediaBrowser.Common;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.LiveTv;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Net;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Extensions;
+using MediaBrowser.Common;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.Listings
{
@@ -42,7 +42,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
private static List<string> GetScheduleRequestDates(DateTime startDateUtc, DateTime endDateUtc)
{
- List<string> dates = new List<string>();
+ var dates = new List<string>();
var start = new List<DateTime> { startDateUtc, startDateUtc.ToLocalTime() }.Min().Date;
var end = new List<DateTime> { endDateUtc, endDateUtc.ToLocalTime() }.Max().Date;
@@ -104,7 +104,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
httpOptions.RequestHeaders["token"] = token;
using (var response = await Post(httpOptions, true, info).ConfigureAwait(false))
- using (StreamReader reader = new StreamReader(response.Content))
+ using (var reader = new StreamReader(response.Content))
{
var dailySchedules = await _jsonSerializer.DeserializeFromStreamAsync<List<ScheduleDirect.Day>>(response.Content).ConfigureAwait(false);
_logger.LogDebug("Found {ScheduleCount} programs on {ChannelID} ScheduleDirect", dailySchedules.Count, channelId);
@@ -125,7 +125,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
httpOptions.RequestContent = "[\"" + string.Join("\", \"", programsID) + "\"]";
using (var innerResponse = await Post(httpOptions, true, info).ConfigureAwait(false))
- using (StreamReader innerReader = new StreamReader(innerResponse.Content))
+ using (var innerReader = new StreamReader(innerResponse.Content))
{
var programDetails = await _jsonSerializer.DeserializeFromStreamAsync<List<ScheduleDirect.ProgramDetails>>(innerResponse.Content).ConfigureAwait(false);
var programDict = programDetails.ToDictionary(p => p.programID, y => y);
@@ -136,7 +136,7 @@ namespace Emby.Server.Implementations.LiveTv.Listings
var images = await GetImageForPrograms(info, programIdsWithImages, cancellationToken).ConfigureAwait(false);
- List<ProgramInfo> programsInfo = new List<ProgramInfo>();
+ var programsInfo = new List<ProgramInfo>();
foreach (ScheduleDirect.Program schedule in dailySchedules.SelectMany(d => d.programs))
{
//_logger.LogDebug("Proccesing Schedule for statio ID " + stationID +
@@ -222,9 +222,9 @@ namespace Emby.Server.Implementations.LiveTv.Listings
private ProgramInfo GetProgram(string channelId, ScheduleDirect.Program programInfo, ScheduleDirect.ProgramDetails details)
{
- DateTime startAt = GetDate(programInfo.airDateTime);
- DateTime endAt = startAt.AddSeconds(programInfo.duration);
- ProgramAudio audioType = ProgramAudio.Stereo;
+ var startAt = GetDate(programInfo.airDateTime);
+ var endAt = startAt.AddSeconds(programInfo.duration);
+ var audioType = ProgramAudio.Stereo;
var programId = programInfo.programID ?? string.Empty;
diff --git a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
index 2b1ee84a8..e7a3d748d 100644
--- a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
@@ -281,7 +281,7 @@ namespace Jellyfin.Server.Implementations.LiveTv.Listings
string path = await GetXml(info.Path, cancellationToken).ConfigureAwait(false);
_logger.LogDebug("Opening XmlTvReader for {path}", path);
var reader = new XmlTvReader(path, GetLanguage(info));
- IEnumerable<XmlTvChannel> results = reader.GetChannels();
+ var results = reader.GetChannels();
// Should this method be async?
return results.Select(c => new ChannelInfo
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs b/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs
index 205a767eb..f9b274acb 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvConfigurationFactory.cs
@@ -1,6 +1,6 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Model.LiveTv;
using System.Collections.Generic;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Model.LiveTv;
namespace Emby.Server.Implementations.LiveTv
{
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 7397d4b60..d0cde0643 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -1,21 +1,19 @@
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
using MediaBrowser.Common;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.LiveTv;
using Microsoft.Extensions.Logging;
-using System;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Extensions;
-using System.Collections.Generic;
namespace Emby.Server.Implementations.LiveTv
{
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
index c360a6a82..11d7facbe 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -1,10 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Emby.Server.Implementations.Library;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Net;
using MediaBrowser.Common.Progress;
+using MediaBrowser.Controller;
+using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Persistence;
@@ -12,27 +23,15 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Globalization;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.Querying;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Tasks;
-using Emby.Server.Implementations.LiveTv.Listings;
-using MediaBrowser.Controller.Channels;
-using Emby.Server.Implementations.Library;
-using MediaBrowser.Controller;
-using MediaBrowser.Common.Net;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv
{
@@ -255,7 +254,7 @@ namespace Emby.Server.Implementations.LiveTv
var channel = (LiveTvChannel)_libraryManager.GetItemById(id);
bool isVideo = channel.ChannelType == ChannelType.TV;
- ILiveTvService service = GetService(channel);
+ var service = GetService(channel);
_logger.LogInformation("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
MediaSourceInfo info;
@@ -541,8 +540,7 @@ namespace Emby.Server.Implementations.LiveTv
var isNew = false;
var forceUpdate = false;
- LiveTvProgram item;
- if (!allExistingPrograms.TryGetValue(id, out item))
+ if (!allExistingPrograms.TryGetValue(id, out LiveTvProgram item))
{
isNew = true;
item = new LiveTvProgram
@@ -905,7 +903,7 @@ namespace Emby.Server.Implementations.LiveTv
var programList = _libraryManager.QueryItems(internalQuery).Items;
var totalCount = programList.Length;
- IOrderedEnumerable<LiveTvProgram> orderedPrograms = programList.Cast<LiveTvProgram>().OrderBy(i => i.StartDate.Date);
+ var orderedPrograms = programList.Cast<LiveTvProgram>().OrderBy(i => i.StartDate.Date);
if (query.IsAiring ?? false)
{
@@ -921,10 +919,10 @@ namespace Emby.Server.Implementations.LiveTv
}
return new QueryResult<BaseItem>
- {
- Items = programs.ToArray(),
- TotalRecordCount = totalCount
- };
+ {
+ Items = programs.ToArray(),
+ TotalRecordCount = totalCount
+ };
}
public QueryResult<BaseItemDto> GetRecommendedPrograms(InternalItemsQuery query, DtoOptions options, CancellationToken cancellationToken)
@@ -939,10 +937,10 @@ namespace Emby.Server.Implementations.LiveTv
var internalResult = GetRecommendedProgramsInternal(query, options, cancellationToken);
return new QueryResult<BaseItemDto>
- {
- Items = _dtoService.GetBaseItemDtos(internalResult.Items, options, query.User),
- TotalRecordCount = internalResult.TotalRecordCount
- };
+ {
+ Items = _dtoService.GetBaseItemDtos(internalResult.Items, options, query.User),
+ TotalRecordCount = internalResult.TotalRecordCount
+ };
}
private int GetRecommendationScore(LiveTvProgram program, User user, bool factorChannelWatchCount)
@@ -1266,7 +1264,7 @@ namespace Emby.Server.Implementations.LiveTv
}
numComplete++;
- double percent = numComplete / (double) allChannelsList.Count;
+ double percent = numComplete / (double)allChannelsList.Count;
progress.Report(85 * percent + 15);
}
@@ -1311,7 +1309,7 @@ namespace Emby.Server.Implementations.LiveTv
}
numComplete++;
- double percent = numComplete / (double) list.Count;
+ double percent = numComplete / (double)list.Count;
progress.Report(100 * percent);
}
@@ -1953,8 +1951,7 @@ namespace Emby.Server.Implementations.LiveTv
foreach (var programDto in currentProgramDtos)
{
- BaseItemDto channelDto;
- if (currentChannelsDict.TryGetValue(programDto.ChannelId, out channelDto))
+ if (currentChannelsDict.TryGetValue(programDto.ChannelId, out BaseItemDto channelDto))
{
channelDto.CurrentProgram = programDto;
}
@@ -1967,7 +1964,7 @@ namespace Emby.Server.Implementations.LiveTv
ILiveTvService service = null;
ProgramInfo programInfo = null;
- if(program != null)
+ if (program != null)
{
service = GetService(program);
@@ -2307,7 +2304,7 @@ namespace Emby.Server.Implementations.LiveTv
// ServerConfiguration.SaveConfiguration crashes during xml serialization for AddListingProvider
info = _jsonSerializer.DeserializeFromString<ListingsProviderInfo>(_jsonSerializer.SerializeToString(info));
- IListingsProvider provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase));
+ var provider = _listingProviders.FirstOrDefault(i => string.Equals(info.Type, i.Type, StringComparison.OrdinalIgnoreCase));
if (provider == null)
{
@@ -2320,7 +2317,7 @@ namespace Emby.Server.Implementations.LiveTv
LiveTvOptions config = GetConfiguration();
- List<ListingsProviderInfo> list = config.ListingProviders.ToList();
+ var list = config.ListingProviders.ToList();
int index = list.FindIndex(i => string.Equals(i.Id, info.Id, StringComparison.OrdinalIgnoreCase));
if (index == -1 || string.IsNullOrWhiteSpace(info.Id))
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
index d13f08b1b..cd1731de5 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
@@ -1,21 +1,18 @@
-using MediaBrowser.Controller;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Dto;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Dlna;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Common.Configuration;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv
{
diff --git a/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs b/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs
index 29196a068..542951de4 100644
--- a/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs
+++ b/Emby.Server.Implementations/LiveTv/RefreshChannelsScheduledTask.cs
@@ -1,10 +1,9 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.LiveTv;
-using MediaBrowser.Model.LiveTv;
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Tasks;
namespace Emby.Server.Implementations.LiveTv
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
index 78514c1d9..ee86f66e6 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/BaseTunerHost.cs
@@ -1,8 +1,3 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.LiveTv;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -10,13 +5,16 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
-using MediaBrowser.Model.Dlna;
+using MediaBrowser.Model.Dto;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
index 3ae47f3ab..e8e4bc723 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs
@@ -1,27 +1,27 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.LiveTv;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
-using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
@@ -118,8 +118,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
if (!string.IsNullOrEmpty(cacheKey))
{
- DiscoverResponse response;
- if (_modelCache.TryGetValue(cacheKey, out response))
+ if (_modelCache.TryGetValue(cacheKey, out DiscoverResponse response))
{
return response;
}
@@ -260,9 +259,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
for (int i = 0; i < model.TunerCount; ++i)
{
var name = string.Format("Tuner {0}", i + 1);
- var currentChannel = "none"; /// @todo Get current channel and map back to Station Id
+ var currentChannel = "none"; /// @todo Get current channel and map back to Station Id
var isAvailable = await manager.CheckTunerAvailability(ipInfo, i, cancellationToken).ConfigureAwait(false);
- LiveTvTunerStatus status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv;
+ var status = isAvailable ? LiveTvTunerStatus.Available : LiveTvTunerStatus.LiveTv;
tuners.Add(new LiveTvTunerInfo
{
Name = name,
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
index 335fc4cb4..2205c0ecc 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunManager.cs
@@ -1,14 +1,13 @@
-using System;
+using System;
using System.Collections.Generic;
-using System.Linq;
+using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Net;
using Microsoft.Extensions.Logging;
-using MediaBrowser.Controller.LiveTv;
-using System.Net;
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
@@ -133,8 +132,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var receiveBuffer = new byte[8192];
var response = await socket.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
- string returnVal;
- ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal);
+ ParseReturnMessage(response.Buffer, response.ReceivedBytes, out string returnVal);
return string.Equals(returnVal, "none", StringComparison.OrdinalIgnoreCase);
}
@@ -168,9 +166,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
var lockkeyMsg = CreateSetMessage(i, "lockkey", lockKeyString, null);
await tcpClient.SendToAsync(lockkeyMsg, 0, lockkeyMsg.Length, ipEndPoint, cancellationToken).ConfigureAwait(false);
var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
- string returnVal;
// parse response to make sure it worked
- if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
+ if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out var returnVal))
continue;
var commandList = commands.GetCommands();
@@ -223,8 +220,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
await tcpClient.SendToAsync(channelMsg, 0, channelMsg.Length, new IpEndPointInfo(_remoteIp, HdHomeRunPort), cancellationToken).ConfigureAwait(false);
var response = await tcpClient.ReceiveAsync(receiveBuffer, 0, receiveBuffer.Length, cancellationToken).ConfigureAwait(false);
// parse response to make sure it worked
- string returnVal;
- if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out returnVal))
+ if (!ParseReturnMessage(response.Buffer, response.ReceivedBytes, out string returnVal))
{
return;
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
index fd78dfa8e..2542ddd2a 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
@@ -1,5 +1,8 @@
using System;
+using System.Collections.Generic;
using System.IO;
+using System.Net;
+using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Net;
@@ -7,13 +10,9 @@ using MediaBrowser.Controller;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
-using MediaBrowser.Model.System;
using MediaBrowser.Model.LiveTv;
-using System.Collections.Generic;
-using System.Net.Sockets;
-using System.Net;
+using MediaBrowser.Model.MediaInfo;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
index b55b02ddc..1f8ca276e 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs
@@ -1,18 +1,15 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.System;
using MediaBrowser.Model.LiveTv;
-using System.Linq;
-using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index ab8731c39..638796e2e 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -1,24 +1,24 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.LiveTv;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.LiveTv;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.LiveTv;
+using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
-using System.IO;
-using MediaBrowser.Controller.Library;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
@@ -135,9 +135,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
var protocol = _mediaSourceManager.GetPathProtocol(path);
- Uri uri;
var isRemote = true;
- if (Uri.TryCreate(path, UriKind.Absolute, out uri))
+ if (Uri.TryCreate(path, UriKind.Absolute, out var uri))
{
isRemote = !_networkManager.IsInLocalNetwork(uri.Host);
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
index f83f95802..00ec4bf65 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3uParser.cs
@@ -6,14 +6,13 @@ using System.Linq;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
-using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.LiveTv;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.IO;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
@@ -118,12 +117,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
extInf = extInf.Trim();
- string remaining;
- var attributes = ParseExtInf(extInf, out remaining);
+ var attributes = ParseExtInf(extInf, out string remaining);
extInf = remaining;
- string value;
- if (attributes.TryGetValue("tvg-logo", out value))
+ if (attributes.TryGetValue("tvg-logo", out string value))
{
channel.ImageUrl = value;
}
@@ -131,11 +128,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
channel.Name = GetChannelName(extInf, attributes);
channel.Number = GetChannelNumber(extInf, attributes, mediaUrl);
- string tvgId;
- attributes.TryGetValue("tvg-id", out tvgId);
+ attributes.TryGetValue("tvg-id", out string tvgId);
- string channelId;
- attributes.TryGetValue("channel-id", out channelId);
+ attributes.TryGetValue("channel-id", out string channelId);
channel.TunerChannelId = string.IsNullOrWhiteSpace(tvgId) ? channelId : tvgId;
@@ -173,8 +168,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
var numberPart = nameInExtInf.Substring(0, numberIndex).Trim(new[] { ' ', '.' });
- double number;
- if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out number))
+ if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number))
{
numberString = numberPart;
}
@@ -188,11 +182,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
if (!IsValidChannelNumber(numberString))
{
- string value;
- if (attributes.TryGetValue("tvg-id", out value))
+ if (attributes.TryGetValue("tvg-id", out string value))
{
- double doubleValue;
- if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out doubleValue))
+ if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out var doubleValue))
{
numberString = value;
}
@@ -206,8 +198,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
if (!IsValidChannelNumber(numberString))
{
- string value;
- if (attributes.TryGetValue("channel-id", out value))
+ if (attributes.TryGetValue("channel-id", out string value))
{
numberString = value;
}
@@ -260,8 +251,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
return false;
}
- double value;
- if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
+ if (!double.TryParse(numberString, NumberStyles.Any, CultureInfo.InvariantCulture, out var value))
{
return false;
}
@@ -284,8 +274,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
var numberPart = nameInExtInf.Substring(0, numberIndex).Trim(new[] { ' ', '.' });
- double number;
- if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out number))
+ if (double.TryParse(numberPart, NumberStyles.Any, CultureInfo.InvariantCulture, out var number))
{
//channel.Number = number.ToString();
nameInExtInf = nameInExtInf.Substring(numberIndex + 1).Trim(new[] { ' ', '-' });
@@ -293,8 +282,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
}
}
- string name;
- attributes.TryGetValue("tvg-name", out name);
+ attributes.TryGetValue("tvg-name", out string name);
if (string.IsNullOrWhiteSpace(name))
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
index 9b10daba0..b39a9f679 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
@@ -1,21 +1,15 @@
-using System;
-using System.IO;
+using System;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
-using Emby.Server.Implementations.IO;
-using MediaBrowser.Model.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
-using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Dto;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
-using MediaBrowser.Model.System;
-using System.Globalization;
-using MediaBrowser.Controller.IO;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.LiveTv;
-using System.Collections.Generic;
+using MediaBrowser.Model.MediaInfo;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.LiveTv.TunerHosts
{
diff --git a/Emby.Server.Implementations/Localization/Core/ar.json b/Emby.Server.Implementations/Localization/Core/ar.json
index 857f66c64..ec2c3f237 100644
--- a/Emby.Server.Implementations/Localization/Core/ar.json
+++ b/Emby.Server.Implementations/Localization/Core/ar.json
@@ -1,100 +1,100 @@
{
- "Albums": "الألبومات",
- "AppDeviceValues": "التطبيق: {0}. الجهاز: {1}.",
- "Application": "التطبيق",
- "Artists": "الفنانون",
- "AuthenticationSucceededWithUserName": "تم التأكد من {0} بنجاح",
- "Books": "الكتب",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "القنوات",
- "ChapterNameValue": "الباب {0}",
- "Collections": "المجاميع",
- "DeviceOfflineWithName": "تم قطع الاتصال بـ{0}",
- "DeviceOnlineWithName": "{0} متصل",
- "FailedLoginAttemptWithUserName": "عملية تسجيل الدخول فشلت من {0}",
- "Favorites": "المفضلات",
- "Folders": "المجلدات",
- "Games": "الألعاب",
- "Genres": "أنواع الأفلام",
- "HeaderAlbumArtists": "فنانو الألبومات",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "استئناف المشاهدة",
- "HeaderFavoriteAlbums": "الألبومات المفضلة",
- "HeaderFavoriteArtists": "الفنانون المفضلون",
- "HeaderFavoriteEpisodes": "الحلقات المفضلة",
- "HeaderFavoriteShows": "المسلسلات المفضلة",
- "HeaderFavoriteSongs": "الأغاني المفضلة",
- "HeaderLiveTV": "التلفاز المباشر",
- "HeaderNextUp": "التشغيل التالي",
- "HeaderRecordingGroups": "مجموعات التسجيل",
- "HomeVideos": "الفيديوهات المنزلية",
- "Inherit": "توريث",
- "ItemAddedWithName": "تم إضافة {0} للمكتبة",
- "ItemRemovedWithName": "تم إزالة {0} من المكتبة",
- "LabelIpAddressValue": "عنوان الآي بي: {0}",
- "LabelRunningTimeValue": "وقت التشغيل: {0}",
- "Latest": "الأحدث",
- "MessageApplicationUpdated": "لقد تم تحديث خادم أمبي",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "تم تحديث إعدادات الخادم في قسم {0}",
- "MessageServerConfigurationUpdated": "تم تحديث إعدادات الخادم",
- "MixedContent": "محتوى مخلوط",
- "Movies": "الأفلام",
- "Music": "الموسيقى",
- "MusicVideos": "الفيديوهات الموسيقية",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "الموسم {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "يوجد تحديث للتطبيق",
- "NotificationOptionApplicationUpdateInstalled": "تم تحديث التطبيق",
- "NotificationOptionAudioPlayback": "بدأ تشغيل المقطع الصوتي",
- "NotificationOptionAudioPlaybackStopped": "تم إيقاف تشغيل المقطع الصوتي",
- "NotificationOptionCameraImageUploaded": "تم رقع صورة الكاميرا",
- "NotificationOptionGamePlayback": "تم تشغيل اللعبة",
- "NotificationOptionGamePlaybackStopped": "تم إيقاف تشغيل اللعبة",
- "NotificationOptionInstallationFailed": "عملية التنصيب فشلت",
- "NotificationOptionNewLibraryContent": "تم إضافة محتوى جديد",
- "NotificationOptionPluginError": "فشل في الملحق",
- "NotificationOptionPluginInstalled": "تم تثبيت الملحق",
- "NotificationOptionPluginUninstalled": "تمت إزالة الملحق",
- "NotificationOptionPluginUpdateInstalled": "تم تحديث الملحق",
- "NotificationOptionServerRestartRequired": "يجب إعادة تشغيل الخادم",
- "NotificationOptionTaskFailed": "فشل في المهمة المجدولة",
- "NotificationOptionUserLockedOut": "تم إقفال حساب المستخدم",
- "NotificationOptionVideoPlayback": "بدأ تشغيل الفيديو",
- "NotificationOptionVideoPlaybackStopped": "تم إيقاف تشغيل الفيديو",
- "Photos": "الصور",
- "Playlists": "قوائم التشغيل",
- "Plugin": "الملحق",
- "PluginInstalledWithName": "تم تثبيت {0}",
- "PluginUninstalledWithName": "تمت إزالة {0}",
- "PluginUpdatedWithName": "تم تحديث {0}",
- "ProviderValue": "المزود: {0}",
- "ScheduledTaskFailedWithName": "العملية {0} فشلت",
- "ScheduledTaskStartedWithName": "تم بدء {0}",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "الأغاني",
- "StartupEmbyServerIsLoading": "خادم أمبي قيد التحميل. الرجاء المحاوية بعد حين",
- "SubtitleDownloadFailureForItem": "عملية إنزال الترجمة فشلت لـ{0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "تم إنزال الترجمات لـ {0}",
- "Sync": "مزامنة",
- "System": "النظام",
- "TvShows": "TV Shows",
- "User": "المستخدم",
- "UserCreatedWithName": "تم إنشاء المستخدم {0}",
- "UserDeletedWithName": "تم حذف المستخدم {0}",
- "UserDownloadingItemWithValues": "{0} يقوم بإنزال {1}",
- "UserLockedOutWithName": "المستخدم {0} تم منعه من الدخول",
- "UserOfflineFromDevice": "تم قطع اتصال {0} من {1}",
- "UserOnlineFromDevice": "{0} متصلة عبر {1}",
- "UserPasswordChangedWithName": "تم تغيير كلمة السر للمستخدم {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "قام {0} ببدء تشغيل {1}",
- "UserStoppedPlayingItemWithValues": "قام {0} بإيقاف تشغيل {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "خاص - {0}",
- "VersionNumber": "الإصدار رقم {0}"
+ "Albums": "الألبومات",
+ "AppDeviceValues": "التطبيق: {0}. الجهاز: {1}.",
+ "Application": "التطبيق",
+ "Artists": "الفنانون",
+ "AuthenticationSucceededWithUserName": "تم التأكد من {0} بنجاح",
+ "Books": "الكتب",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "القنوات",
+ "ChapterNameValue": "الباب {0}",
+ "Collections": "المجاميع",
+ "DeviceOfflineWithName": "تم قطع الاتصال بـ{0}",
+ "DeviceOnlineWithName": "{0} متصل",
+ "FailedLoginAttemptWithUserName": "عملية تسجيل الدخول فشلت من {0}",
+ "Favorites": "المفضلات",
+ "Folders": "المجلدات",
+ "Games": "الألعاب",
+ "Genres": "أنواع الأفلام",
+ "HeaderAlbumArtists": "فنانو الألبومات",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "استئناف المشاهدة",
+ "HeaderFavoriteAlbums": "الألبومات المفضلة",
+ "HeaderFavoriteArtists": "الفنانون المفضلون",
+ "HeaderFavoriteEpisodes": "الحلقات المفضلة",
+ "HeaderFavoriteShows": "المسلسلات المفضلة",
+ "HeaderFavoriteSongs": "الأغاني المفضلة",
+ "HeaderLiveTV": "التلفاز المباشر",
+ "HeaderNextUp": "التشغيل التالي",
+ "HeaderRecordingGroups": "مجموعات التسجيل",
+ "HomeVideos": "الفيديوهات المنزلية",
+ "Inherit": "توريث",
+ "ItemAddedWithName": "تم إضافة {0} للمكتبة",
+ "ItemRemovedWithName": "تم إزالة {0} من المكتبة",
+ "LabelIpAddressValue": "عنوان الآي بي: {0}",
+ "LabelRunningTimeValue": "وقت التشغيل: {0}",
+ "Latest": "الأحدث",
+ "MessageApplicationUpdated": "لقد تم تحديث خادم أمبي",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "تم تحديث إعدادات الخادم في قسم {0}",
+ "MessageServerConfigurationUpdated": "تم تحديث إعدادات الخادم",
+ "MixedContent": "محتوى مخلوط",
+ "Movies": "الأفلام",
+ "Music": "الموسيقى",
+ "MusicVideos": "الفيديوهات الموسيقية",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "الموسم {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "يوجد تحديث للتطبيق",
+ "NotificationOptionApplicationUpdateInstalled": "تم تحديث التطبيق",
+ "NotificationOptionAudioPlayback": "بدأ تشغيل المقطع الصوتي",
+ "NotificationOptionAudioPlaybackStopped": "تم إيقاف تشغيل المقطع الصوتي",
+ "NotificationOptionCameraImageUploaded": "تم رقع صورة الكاميرا",
+ "NotificationOptionGamePlayback": "تم تشغيل اللعبة",
+ "NotificationOptionGamePlaybackStopped": "تم إيقاف تشغيل اللعبة",
+ "NotificationOptionInstallationFailed": "عملية التنصيب فشلت",
+ "NotificationOptionNewLibraryContent": "تم إضافة محتوى جديد",
+ "NotificationOptionPluginError": "فشل في الملحق",
+ "NotificationOptionPluginInstalled": "تم تثبيت الملحق",
+ "NotificationOptionPluginUninstalled": "تمت إزالة الملحق",
+ "NotificationOptionPluginUpdateInstalled": "تم تحديث الملحق",
+ "NotificationOptionServerRestartRequired": "يجب إعادة تشغيل الخادم",
+ "NotificationOptionTaskFailed": "فشل في المهمة المجدولة",
+ "NotificationOptionUserLockedOut": "تم إقفال حساب المستخدم",
+ "NotificationOptionVideoPlayback": "بدأ تشغيل الفيديو",
+ "NotificationOptionVideoPlaybackStopped": "تم إيقاف تشغيل الفيديو",
+ "Photos": "الصور",
+ "Playlists": "قوائم التشغيل",
+ "Plugin": "الملحق",
+ "PluginInstalledWithName": "تم تثبيت {0}",
+ "PluginUninstalledWithName": "تمت إزالة {0}",
+ "PluginUpdatedWithName": "تم تحديث {0}",
+ "ProviderValue": "المزود: {0}",
+ "ScheduledTaskFailedWithName": "العملية {0} فشلت",
+ "ScheduledTaskStartedWithName": "تم بدء {0}",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "الأغاني",
+ "StartupEmbyServerIsLoading": "خادم أمبي قيد التحميل. الرجاء المحاوية بعد حين",
+ "SubtitleDownloadFailureForItem": "عملية إنزال الترجمة فشلت لـ{0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "تم إنزال الترجمات لـ {0}",
+ "Sync": "مزامنة",
+ "System": "النظام",
+ "TvShows": "TV Shows",
+ "User": "المستخدم",
+ "UserCreatedWithName": "تم إنشاء المستخدم {0}",
+ "UserDeletedWithName": "تم حذف المستخدم {0}",
+ "UserDownloadingItemWithValues": "{0} يقوم بإنزال {1}",
+ "UserLockedOutWithName": "المستخدم {0} تم منعه من الدخول",
+ "UserOfflineFromDevice": "تم قطع اتصال {0} من {1}",
+ "UserOnlineFromDevice": "{0} متصلة عبر {1}",
+ "UserPasswordChangedWithName": "تم تغيير كلمة السر للمستخدم {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "قام {0} ببدء تشغيل {1}",
+ "UserStoppedPlayingItemWithValues": "قام {0} بإيقاف تشغيل {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "خاص - {0}",
+ "VersionNumber": "الإصدار رقم {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/bg-BG.json b/Emby.Server.Implementations/Localization/Core/bg-BG.json
index b768e03c6..ba6c98555 100644
--- a/Emby.Server.Implementations/Localization/Core/bg-BG.json
+++ b/Emby.Server.Implementations/Localization/Core/bg-BG.json
@@ -1,100 +1,100 @@
{
- "Albums": "Албуми",
- "AppDeviceValues": "Програма: {0}, Устройство: {1}",
- "Application": "Програма",
- "Artists": "Изпълнители",
- "AuthenticationSucceededWithUserName": "{0} се удостовери успешно",
- "Books": "Книги",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Канали",
- "ChapterNameValue": "Глава {0}",
- "Collections": "Колекции",
- "DeviceOfflineWithName": "{0} се разкачи",
- "DeviceOnlineWithName": "{0} е свързан",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Любими",
- "Folders": "Папки",
- "Games": "Игри",
- "Genres": "Жанрове",
- "HeaderAlbumArtists": "Изпълнители на албуми",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Продължаване на гледането",
- "HeaderFavoriteAlbums": "Любими албуми",
- "HeaderFavoriteArtists": "Любими изпълнители",
- "HeaderFavoriteEpisodes": "Любими епизоди",
- "HeaderFavoriteShows": "Любими сериали",
- "HeaderFavoriteSongs": "Любими песни",
- "HeaderLiveTV": "Телевизия на живо",
- "HeaderNextUp": "Следва",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Домашни клипове",
- "Inherit": "Наследяване",
- "ItemAddedWithName": "{0} е добавено към библиотеката",
- "ItemRemovedWithName": "{0} е премахнато от библиотеката",
- "LabelIpAddressValue": "ИП адрес: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Последни",
- "MessageApplicationUpdated": "Сървърът е обновен",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Смесено съдържание",
- "Movies": "Филми",
- "Music": "Музика",
- "MusicVideos": "Музикални клипове",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Сезон {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Налично е обновление на програмата",
- "NotificationOptionApplicationUpdateInstalled": "Обновлението на програмата е инсталирано",
- "NotificationOptionAudioPlayback": "Възпроизвеждането на звук започна",
- "NotificationOptionAudioPlaybackStopped": "Възпроизвеждането на звук е спряно",
- "NotificationOptionCameraImageUploaded": "Изображението от фотоапарата е качено",
- "NotificationOptionGamePlayback": "Възпроизвеждането на играта започна",
- "NotificationOptionGamePlaybackStopped": "Възпроизвеждането на играта е спряна",
- "NotificationOptionInstallationFailed": "Неуспешно инсталиране",
- "NotificationOptionNewLibraryContent": "Добавено е ново съдържание",
- "NotificationOptionPluginError": "Грешка в приставка",
- "NotificationOptionPluginInstalled": "Приставката е инсталирана",
- "NotificationOptionPluginUninstalled": "Приставката е деинсталирана",
- "NotificationOptionPluginUpdateInstalled": "Обновлението на приставката е инсталирано",
- "NotificationOptionServerRestartRequired": "Нужно е повторно пускане на сървъра",
- "NotificationOptionTaskFailed": "Грешка в планирана задача",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Възпроизвеждането на видео започна",
- "NotificationOptionVideoPlaybackStopped": "Възпроизвеждането на видео е спряно",
- "Photos": "Снимки",
- "Playlists": "Списъци",
- "Plugin": "Приставка",
- "PluginInstalledWithName": "{0} е инсталирано",
- "PluginUninstalledWithName": "{0} е деинсталирано",
- "PluginUpdatedWithName": "{0} е обновено",
- "ProviderValue": "Доставчик: {0}",
- "ScheduledTaskFailedWithName": "{0} се провали",
- "ScheduledTaskStartedWithName": "{0} започна",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Сериали",
- "Songs": "Песни",
- "StartupEmbyServerIsLoading": "Сървърът зарежда. Моля, опитайте отново след малко.",
- "SubtitleDownloadFailureForItem": "Неуспешно изтегляне на субтитри за {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Изтеглени са субтитри за {0}",
- "Sync": "Синхронизиране",
- "System": "Система",
- "TvShows": "Телевизионни сериали",
- "User": "Потребител",
- "UserCreatedWithName": "Потребителят {0} е създаден",
- "UserDeletedWithName": "Потребителят {0} е изтрит",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} се разкачи от {1}",
- "UserOnlineFromDevice": "{0} е на линия от {1}",
- "UserPasswordChangedWithName": "Паролата на потребителя {0} е променена",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} пусна {1}",
- "UserStoppedPlayingItemWithValues": "{0} спря {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Специални - {0}",
- "VersionNumber": "Версия {0}"
+ "Albums": "Албуми",
+ "AppDeviceValues": "Програма: {0}, Устройство: {1}",
+ "Application": "Програма",
+ "Artists": "Изпълнители",
+ "AuthenticationSucceededWithUserName": "{0} се удостовери успешно",
+ "Books": "Книги",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Канали",
+ "ChapterNameValue": "Глава {0}",
+ "Collections": "Колекции",
+ "DeviceOfflineWithName": "{0} се разкачи",
+ "DeviceOnlineWithName": "{0} е свързан",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Любими",
+ "Folders": "Папки",
+ "Games": "Игри",
+ "Genres": "Жанрове",
+ "HeaderAlbumArtists": "Изпълнители на албуми",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Продължаване на гледането",
+ "HeaderFavoriteAlbums": "Любими албуми",
+ "HeaderFavoriteArtists": "Любими изпълнители",
+ "HeaderFavoriteEpisodes": "Любими епизоди",
+ "HeaderFavoriteShows": "Любими сериали",
+ "HeaderFavoriteSongs": "Любими песни",
+ "HeaderLiveTV": "Телевизия на живо",
+ "HeaderNextUp": "Следва",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Домашни клипове",
+ "Inherit": "Наследяване",
+ "ItemAddedWithName": "{0} е добавено към библиотеката",
+ "ItemRemovedWithName": "{0} е премахнато от библиотеката",
+ "LabelIpAddressValue": "ИП адрес: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Последни",
+ "MessageApplicationUpdated": "Сървърът е обновен",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Смесено съдържание",
+ "Movies": "Филми",
+ "Music": "Музика",
+ "MusicVideos": "Музикални клипове",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Сезон {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Налично е обновление на програмата",
+ "NotificationOptionApplicationUpdateInstalled": "Обновлението на програмата е инсталирано",
+ "NotificationOptionAudioPlayback": "Възпроизвеждането на звук започна",
+ "NotificationOptionAudioPlaybackStopped": "Възпроизвеждането на звук е спряно",
+ "NotificationOptionCameraImageUploaded": "Изображението от фотоапарата е качено",
+ "NotificationOptionGamePlayback": "Възпроизвеждането на играта започна",
+ "NotificationOptionGamePlaybackStopped": "Възпроизвеждането на играта е спряна",
+ "NotificationOptionInstallationFailed": "Неуспешно инсталиране",
+ "NotificationOptionNewLibraryContent": "Добавено е ново съдържание",
+ "NotificationOptionPluginError": "Грешка в приставка",
+ "NotificationOptionPluginInstalled": "Приставката е инсталирана",
+ "NotificationOptionPluginUninstalled": "Приставката е деинсталирана",
+ "NotificationOptionPluginUpdateInstalled": "Обновлението на приставката е инсталирано",
+ "NotificationOptionServerRestartRequired": "Нужно е повторно пускане на сървъра",
+ "NotificationOptionTaskFailed": "Грешка в планирана задача",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Възпроизвеждането на видео започна",
+ "NotificationOptionVideoPlaybackStopped": "Възпроизвеждането на видео е спряно",
+ "Photos": "Снимки",
+ "Playlists": "Списъци",
+ "Plugin": "Приставка",
+ "PluginInstalledWithName": "{0} е инсталирано",
+ "PluginUninstalledWithName": "{0} е деинсталирано",
+ "PluginUpdatedWithName": "{0} е обновено",
+ "ProviderValue": "Доставчик: {0}",
+ "ScheduledTaskFailedWithName": "{0} се провали",
+ "ScheduledTaskStartedWithName": "{0} започна",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Сериали",
+ "Songs": "Песни",
+ "StartupEmbyServerIsLoading": "Сървърът зарежда. Моля, опитайте отново след малко.",
+ "SubtitleDownloadFailureForItem": "Неуспешно изтегляне на субтитри за {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Изтеглени са субтитри за {0}",
+ "Sync": "Синхронизиране",
+ "System": "Система",
+ "TvShows": "Телевизионни сериали",
+ "User": "Потребител",
+ "UserCreatedWithName": "Потребителят {0} е създаден",
+ "UserDeletedWithName": "Потребителят {0} е изтрит",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} се разкачи от {1}",
+ "UserOnlineFromDevice": "{0} е на линия от {1}",
+ "UserPasswordChangedWithName": "Паролата на потребителя {0} е променена",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} пусна {1}",
+ "UserStoppedPlayingItemWithValues": "{0} спря {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Специални - {0}",
+ "VersionNumber": "Версия {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/ca.json b/Emby.Server.Implementations/Localization/Core/ca.json
index 9a6a8e0c4..a818b78de 100644
--- a/Emby.Server.Implementations/Localization/Core/ca.json
+++ b/Emby.Server.Implementations/Localization/Core/ca.json
@@ -1,100 +1,100 @@
{
- "Albums": "Àlbums",
- "AppDeviceValues": "App: {0}, Dispositiu: {1}",
- "Application": "Application",
- "Artists": "Artistes",
- "AuthenticationSucceededWithUserName": "{0} s'ha autenticat correctament",
- "Books": "Llibres",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Canals",
- "ChapterNameValue": "Episodi {0}",
- "Collections": "Col·leccions",
- "DeviceOfflineWithName": "{0} s'ha desconnectat",
- "DeviceOnlineWithName": "{0} està connectat",
- "FailedLoginAttemptWithUserName": "Intent de connexió fallit des de {0}",
- "Favorites": "Preferits",
- "Folders": "Directoris",
- "Games": "Jocs",
- "Genres": "Gèneres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continua Veient",
- "HeaderFavoriteAlbums": "Àlbums Preferits",
- "HeaderFavoriteArtists": "Artistes Preferits",
- "HeaderFavoriteEpisodes": "Episodis Preferits",
- "HeaderFavoriteShows": "Programes Preferits",
- "HeaderFavoriteSongs": "Cançons Preferides",
- "HeaderLiveTV": "TV en Directe",
- "HeaderNextUp": "A continuació",
- "HeaderRecordingGroups": "Grups d'Enregistrament",
- "HomeVideos": "Vídeos domèstics",
- "Inherit": "Heretat",
- "ItemAddedWithName": "{0} afegit a la biblioteca",
- "ItemRemovedWithName": "{0} eliminat de la biblioteca",
- "LabelIpAddressValue": "Adreça IP: {0}",
- "LabelRunningTimeValue": "Temps en marxa: {0}",
- "Latest": "Darreres",
- "MessageApplicationUpdated": "El Servidor d'Jellyfin ha estat actualitzat",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "La secció de configuració {0} ha estat actualitzada",
- "MessageServerConfigurationUpdated": "S'ha actualitzat la configuració del servidor",
- "MixedContent": "Contingut mesclat",
- "Movies": "Pel·lícules",
- "Music": "Música",
- "MusicVideos": "Vídeos musicals",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Temporada {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Actualització d'aplicació disponible",
- "NotificationOptionApplicationUpdateInstalled": "Actualització d'aplicació instal·lada",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Un component ha fallat",
- "NotificationOptionPluginInstalled": "Complement instal·lat",
- "NotificationOptionPluginUninstalled": "Complement desinstal·lat",
- "NotificationOptionPluginUpdateInstalled": "Actualització de complement instal·lada",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Fotos",
- "Playlists": "Llistes de reproducció",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} ha estat instal·lat",
- "PluginUninstalledWithName": "{0} ha estat desinstal·lat",
- "PluginUpdatedWithName": "{0} ha estat actualitzat",
- "ProviderValue": "Proveïdor: {0}",
- "ScheduledTaskFailedWithName": "{0} ha fallat",
- "ScheduledTaskStartedWithName": "{0} iniciat",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Espectacles",
- "Songs": "Cançons",
- "StartupEmbyServerIsLoading": "El Servidor d'Jellyfin est&agrave; carregant. Si et plau, prova de nou en breus.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtítols descarregats per a {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "Espectacles de TV",
- "User": "User",
- "UserCreatedWithName": "S'ha creat l'usuari {0}",
- "UserDeletedWithName": "L'usuari {0} ha estat eliminat",
- "UserDownloadingItemWithValues": "{0} està descarregant {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} s'ha desconnectat de {1}",
- "UserOnlineFromDevice": "{0} està connectat des de {1}",
- "UserPasswordChangedWithName": "La contrasenya ha estat canviada per a l'usuari {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} ha començat a reproduir {1}",
- "UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Especial - {0}",
- "VersionNumber": "Versió {0}"
+ "Albums": "Àlbums",
+ "AppDeviceValues": "App: {0}, Dispositiu: {1}",
+ "Application": "Application",
+ "Artists": "Artistes",
+ "AuthenticationSucceededWithUserName": "{0} s'ha autenticat correctament",
+ "Books": "Llibres",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Canals",
+ "ChapterNameValue": "Episodi {0}",
+ "Collections": "Col·leccions",
+ "DeviceOfflineWithName": "{0} s'ha desconnectat",
+ "DeviceOnlineWithName": "{0} està connectat",
+ "FailedLoginAttemptWithUserName": "Intent de connexió fallit des de {0}",
+ "Favorites": "Preferits",
+ "Folders": "Directoris",
+ "Games": "Jocs",
+ "Genres": "Gèneres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continua Veient",
+ "HeaderFavoriteAlbums": "Àlbums Preferits",
+ "HeaderFavoriteArtists": "Artistes Preferits",
+ "HeaderFavoriteEpisodes": "Episodis Preferits",
+ "HeaderFavoriteShows": "Programes Preferits",
+ "HeaderFavoriteSongs": "Cançons Preferides",
+ "HeaderLiveTV": "TV en Directe",
+ "HeaderNextUp": "A continuació",
+ "HeaderRecordingGroups": "Grups d'Enregistrament",
+ "HomeVideos": "Vídeos domèstics",
+ "Inherit": "Heretat",
+ "ItemAddedWithName": "{0} afegit a la biblioteca",
+ "ItemRemovedWithName": "{0} eliminat de la biblioteca",
+ "LabelIpAddressValue": "Adreça IP: {0}",
+ "LabelRunningTimeValue": "Temps en marxa: {0}",
+ "Latest": "Darreres",
+ "MessageApplicationUpdated": "El Servidor d'Jellyfin ha estat actualitzat",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "La secció de configuració {0} ha estat actualitzada",
+ "MessageServerConfigurationUpdated": "S'ha actualitzat la configuració del servidor",
+ "MixedContent": "Contingut mesclat",
+ "Movies": "Pel·lícules",
+ "Music": "Música",
+ "MusicVideos": "Vídeos musicals",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Temporada {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Actualització d'aplicació disponible",
+ "NotificationOptionApplicationUpdateInstalled": "Actualització d'aplicació instal·lada",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Un component ha fallat",
+ "NotificationOptionPluginInstalled": "Complement instal·lat",
+ "NotificationOptionPluginUninstalled": "Complement desinstal·lat",
+ "NotificationOptionPluginUpdateInstalled": "Actualització de complement instal·lada",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Fotos",
+ "Playlists": "Llistes de reproducció",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} ha estat instal·lat",
+ "PluginUninstalledWithName": "{0} ha estat desinstal·lat",
+ "PluginUpdatedWithName": "{0} ha estat actualitzat",
+ "ProviderValue": "Proveïdor: {0}",
+ "ScheduledTaskFailedWithName": "{0} ha fallat",
+ "ScheduledTaskStartedWithName": "{0} iniciat",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Espectacles",
+ "Songs": "Cançons",
+ "StartupEmbyServerIsLoading": "El Servidor d'Jellyfin est&agrave; carregant. Si et plau, prova de nou en breus.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtítols descarregats per a {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "Espectacles de TV",
+ "User": "User",
+ "UserCreatedWithName": "S'ha creat l'usuari {0}",
+ "UserDeletedWithName": "L'usuari {0} ha estat eliminat",
+ "UserDownloadingItemWithValues": "{0} està descarregant {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} s'ha desconnectat de {1}",
+ "UserOnlineFromDevice": "{0} està connectat des de {1}",
+ "UserPasswordChangedWithName": "La contrasenya ha estat canviada per a l'usuari {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} ha començat a reproduir {1}",
+ "UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Especial - {0}",
+ "VersionNumber": "Versió {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/cs.json b/Emby.Server.Implementations/Localization/Core/cs.json
index 51fb132a4..e066051a8 100644
--- a/Emby.Server.Implementations/Localization/Core/cs.json
+++ b/Emby.Server.Implementations/Localization/Core/cs.json
@@ -1,100 +1,100 @@
{
- "Albums": "Alba",
- "AppDeviceValues": "Aplikace: {0}, Zařízení: {1}",
- "Application": "Aplikace",
- "Artists": "Umělci",
- "AuthenticationSucceededWithUserName": "{0} úspěšně ověřen",
- "Books": "Knihy",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanály",
- "ChapterNameValue": "Kapitola {0}",
- "Collections": "Kolekce",
- "DeviceOfflineWithName": "{0} se odpojil",
- "DeviceOnlineWithName": "{0} je připojen",
- "FailedLoginAttemptWithUserName": "Neúspěšný pokus o přihlášení z {0}",
- "Favorites": "Oblíbené",
- "Folders": "Složky",
- "Games": "Hry",
- "Genres": "Žánry",
- "HeaderAlbumArtists": "Umělci alba",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Pokračovat ve sledování",
- "HeaderFavoriteAlbums": "Oblíbená alba",
- "HeaderFavoriteArtists": "Oblíbení umělci",
- "HeaderFavoriteEpisodes": "Oblíbené epizody",
- "HeaderFavoriteShows": "Oblíbené seriály",
- "HeaderFavoriteSongs": "Oblíbené písně",
- "HeaderLiveTV": "Živá TV",
- "HeaderNextUp": "Nadcházející",
- "HeaderRecordingGroups": "Skupiny nahrávek",
- "HomeVideos": "Domáci videa",
- "Inherit": "Zdědit",
- "ItemAddedWithName": "{0} byl přidán do knihovny",
- "ItemRemovedWithName": "{0} byl odstraněn z knihovny",
- "LabelIpAddressValue": "IP adresa: {0}",
- "LabelRunningTimeValue": "Délka média: {0}",
- "Latest": "Nejnovější",
- "MessageApplicationUpdated": "Jellyfin Server byl aktualizován",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizována",
- "MessageServerConfigurationUpdated": "Konfigurace serveru aktualizována",
- "MixedContent": "Smíšený obsah",
- "Movies": "Filmy",
- "Music": "Hudba",
- "MusicVideos": "Hudební klipy",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Sezóna {0}",
- "NameSeasonUnknown": "Neznámá sezóna",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Dostupná aktualizace aplikace",
- "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalována",
- "NotificationOptionAudioPlayback": "Přehrávání audia zahájeno",
- "NotificationOptionAudioPlaybackStopped": "Přehrávání audia ukončeno",
- "NotificationOptionCameraImageUploaded": "Kamerový záznam nahrán",
- "NotificationOptionGamePlayback": "Spuštění hry zahájeno",
- "NotificationOptionGamePlaybackStopped": "Hra ukončena",
- "NotificationOptionInstallationFailed": "Chyba instalace",
- "NotificationOptionNewLibraryContent": "Přidán nový obsah",
- "NotificationOptionPluginError": "Chyba zásuvného modulu",
- "NotificationOptionPluginInstalled": "Zásuvný modul instalován",
- "NotificationOptionPluginUninstalled": "Zásuvný modul odstraněn",
- "NotificationOptionPluginUpdateInstalled": "Aktualizace zásuvného modulu instalována",
- "NotificationOptionServerRestartRequired": "Je vyžadován restart serveru",
- "NotificationOptionTaskFailed": "Chyba naplánované úlohy",
- "NotificationOptionUserLockedOut": "Uživatel uzamčen",
- "NotificationOptionVideoPlayback": "Přehrávání videa zahájeno",
- "NotificationOptionVideoPlaybackStopped": "Přehrávání videa ukončeno",
- "Photos": "Fotky",
- "Playlists": "Seznamy skladeb",
- "Plugin": "Zásuvný modul",
- "PluginInstalledWithName": "{0} byl nainstalován",
- "PluginUninstalledWithName": "{0} byl odinstalován",
- "PluginUpdatedWithName": "{0} byl aktualizován",
- "ProviderValue": "Poskytl: {0}",
- "ScheduledTaskFailedWithName": "{0} selhalo",
- "ScheduledTaskStartedWithName": "{0} zahájeno",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Seriály",
- "Songs": "Skladby",
- "StartupEmbyServerIsLoading": "Jellyfin Server je spouštěn. Zkuste to prosím v brzké době znovu.",
- "SubtitleDownloadFailureForItem": "Stahování titulků selhalo pro {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Staženy titulky pro {0}",
- "Sync": "Synchronizace",
- "System": "Systém",
- "TvShows": "TV seriály",
- "User": "Uživatel",
- "UserCreatedWithName": "Uživatel {0} byl vytvořen",
- "UserDeletedWithName": "Uživatel {0} byl smazán",
- "UserDownloadingItemWithValues": "{0} stahuje {1}",
- "UserLockedOutWithName": "Uživatel {0} byl odemčen",
- "UserOfflineFromDevice": "{0} se odpojil od {1}",
- "UserOnlineFromDevice": "{0} se připojil z {1}",
- "UserPasswordChangedWithName": "Provedena změna hesla pro uživatele {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} spustil přehrávání {1}",
- "UserStoppedPlayingItemWithValues": "{0} zastavil přehrávání {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Speciál - {0}",
- "VersionNumber": "Verze {0}"
+ "Albums": "Alba",
+ "AppDeviceValues": "Aplikace: {0}, Zařízení: {1}",
+ "Application": "Aplikace",
+ "Artists": "Umělci",
+ "AuthenticationSucceededWithUserName": "{0} úspěšně ověřen",
+ "Books": "Knihy",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanály",
+ "ChapterNameValue": "Kapitola {0}",
+ "Collections": "Kolekce",
+ "DeviceOfflineWithName": "{0} se odpojil",
+ "DeviceOnlineWithName": "{0} je připojen",
+ "FailedLoginAttemptWithUserName": "Neúspěšný pokus o přihlášení z {0}",
+ "Favorites": "Oblíbené",
+ "Folders": "Složky",
+ "Games": "Hry",
+ "Genres": "Žánry",
+ "HeaderAlbumArtists": "Umělci alba",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Pokračovat ve sledování",
+ "HeaderFavoriteAlbums": "Oblíbená alba",
+ "HeaderFavoriteArtists": "Oblíbení umělci",
+ "HeaderFavoriteEpisodes": "Oblíbené epizody",
+ "HeaderFavoriteShows": "Oblíbené seriály",
+ "HeaderFavoriteSongs": "Oblíbené písně",
+ "HeaderLiveTV": "Živá TV",
+ "HeaderNextUp": "Nadcházející",
+ "HeaderRecordingGroups": "Skupiny nahrávek",
+ "HomeVideos": "Domáci videa",
+ "Inherit": "Zdědit",
+ "ItemAddedWithName": "{0} byl přidán do knihovny",
+ "ItemRemovedWithName": "{0} byl odstraněn z knihovny",
+ "LabelIpAddressValue": "IP adresa: {0}",
+ "LabelRunningTimeValue": "Délka média: {0}",
+ "Latest": "Nejnovější",
+ "MessageApplicationUpdated": "Jellyfin Server byl aktualizován",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizována",
+ "MessageServerConfigurationUpdated": "Konfigurace serveru aktualizována",
+ "MixedContent": "Smíšený obsah",
+ "Movies": "Filmy",
+ "Music": "Hudba",
+ "MusicVideos": "Hudební klipy",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Sezóna {0}",
+ "NameSeasonUnknown": "Neznámá sezóna",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Dostupná aktualizace aplikace",
+ "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalována",
+ "NotificationOptionAudioPlayback": "Přehrávání audia zahájeno",
+ "NotificationOptionAudioPlaybackStopped": "Přehrávání audia ukončeno",
+ "NotificationOptionCameraImageUploaded": "Kamerový záznam nahrán",
+ "NotificationOptionGamePlayback": "Spuštění hry zahájeno",
+ "NotificationOptionGamePlaybackStopped": "Hra ukončena",
+ "NotificationOptionInstallationFailed": "Chyba instalace",
+ "NotificationOptionNewLibraryContent": "Přidán nový obsah",
+ "NotificationOptionPluginError": "Chyba zásuvného modulu",
+ "NotificationOptionPluginInstalled": "Zásuvný modul instalován",
+ "NotificationOptionPluginUninstalled": "Zásuvný modul odstraněn",
+ "NotificationOptionPluginUpdateInstalled": "Aktualizace zásuvného modulu instalována",
+ "NotificationOptionServerRestartRequired": "Je vyžadován restart serveru",
+ "NotificationOptionTaskFailed": "Chyba naplánované úlohy",
+ "NotificationOptionUserLockedOut": "Uživatel uzamčen",
+ "NotificationOptionVideoPlayback": "Přehrávání videa zahájeno",
+ "NotificationOptionVideoPlaybackStopped": "Přehrávání videa ukončeno",
+ "Photos": "Fotky",
+ "Playlists": "Seznamy skladeb",
+ "Plugin": "Zásuvný modul",
+ "PluginInstalledWithName": "{0} byl nainstalován",
+ "PluginUninstalledWithName": "{0} byl odinstalován",
+ "PluginUpdatedWithName": "{0} byl aktualizován",
+ "ProviderValue": "Poskytl: {0}",
+ "ScheduledTaskFailedWithName": "{0} selhalo",
+ "ScheduledTaskStartedWithName": "{0} zahájeno",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Seriály",
+ "Songs": "Skladby",
+ "StartupEmbyServerIsLoading": "Jellyfin Server je spouštěn. Zkuste to prosím v brzké době znovu.",
+ "SubtitleDownloadFailureForItem": "Stahování titulků selhalo pro {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Staženy titulky pro {0}",
+ "Sync": "Synchronizace",
+ "System": "Systém",
+ "TvShows": "TV seriály",
+ "User": "Uživatel",
+ "UserCreatedWithName": "Uživatel {0} byl vytvořen",
+ "UserDeletedWithName": "Uživatel {0} byl smazán",
+ "UserDownloadingItemWithValues": "{0} stahuje {1}",
+ "UserLockedOutWithName": "Uživatel {0} byl odemčen",
+ "UserOfflineFromDevice": "{0} se odpojil od {1}",
+ "UserOnlineFromDevice": "{0} se připojil z {1}",
+ "UserPasswordChangedWithName": "Provedena změna hesla pro uživatele {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} spustil přehrávání {1}",
+ "UserStoppedPlayingItemWithValues": "{0} zastavil přehrávání {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Speciál - {0}",
+ "VersionNumber": "Verze {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/da.json b/Emby.Server.Implementations/Localization/Core/da.json
index c7c2a796e..30581c389 100644
--- a/Emby.Server.Implementations/Localization/Core/da.json
+++ b/Emby.Server.Implementations/Localization/Core/da.json
@@ -1,100 +1,100 @@
{
- "Albums": "Album",
- "AppDeviceValues": "App: {0}, Enhed: {1}",
- "Application": "Applikation",
- "Artists": "Kunstner",
- "AuthenticationSucceededWithUserName": "{0} bekræftet med succes",
- "Books": "Bøger",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanaler",
- "ChapterNameValue": "Kapitel {0}",
- "Collections": "Samlinger",
- "DeviceOfflineWithName": "{0} har afbrudt forbindelsen",
- "DeviceOnlineWithName": "{0} er forbundet",
- "FailedLoginAttemptWithUserName": "Fejlet loginforsøg fra {0}",
- "Favorites": "Favoritter",
- "Folders": "Mapper",
- "Games": "Spil",
- "Genres": "Genre",
- "HeaderAlbumArtists": "Albumkunstnere",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Fortsæt Afspilning",
- "HeaderFavoriteAlbums": "Favoritalbum",
- "HeaderFavoriteArtists": "Favoritkunstnere",
- "HeaderFavoriteEpisodes": "Favoritepisoder",
- "HeaderFavoriteShows": "Favorit serier",
- "HeaderFavoriteSongs": "Favoritsange",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Næste",
- "HeaderRecordingGroups": "Optagegrupper",
- "HomeVideos": "Hjemmevideoer",
- "Inherit": "Arv",
- "ItemAddedWithName": "{0} blev tilføjet til biblioteket",
- "ItemRemovedWithName": "{0} blev fjernet fra biblioteket",
- "LabelIpAddressValue": "IP-adresse: {0}",
- "LabelRunningTimeValue": "Spilletid: {0}",
- "Latest": "Seneste",
- "MessageApplicationUpdated": "Jellyfin Server er blevet opdateret",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret",
- "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret",
- "MixedContent": "Blandet indhold",
- "Movies": "Film",
- "Music": "Musik",
- "MusicVideos": "Musikvideoer",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Sæson {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilgængelig",
- "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret",
- "NotificationOptionAudioPlayback": "Audioafspilning påbegyndt",
- "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet",
- "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet",
- "NotificationOptionGamePlayback": "Afspilning af Spil påbegyndt",
- "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet",
- "NotificationOptionInstallationFailed": "Installationsfejl",
- "NotificationOptionNewLibraryContent": "Nyt indhold tilføjet",
- "NotificationOptionPluginError": "Pluginfejl",
- "NotificationOptionPluginInstalled": "Plugin installeret",
- "NotificationOptionPluginUninstalled": "Plugin afinstalleret",
- "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret",
- "NotificationOptionServerRestartRequired": "Genstart af server påkrævet",
- "NotificationOptionTaskFailed": "Planlagt opgave fejlet",
- "NotificationOptionUserLockedOut": "Bruger låst ude",
- "NotificationOptionVideoPlayback": "Videoafspilning påbegyndt",
- "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet",
- "Photos": "Fotos",
- "Playlists": "Spillelister",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} blev installeret",
- "PluginUninstalledWithName": "{0} blev afinstalleret",
- "PluginUpdatedWithName": "{0} blev opdateret",
- "ProviderValue": "Udbyder: {0}",
- "ScheduledTaskFailedWithName": "{0} fejlet",
- "ScheduledTaskStartedWithName": "{0} påbegyndt",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Sange",
- "StartupEmbyServerIsLoading": "Jellyfin Server indlæser. Prøv venligst igen om kort tid.",
- "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}",
- "Sync": "Synk",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "Bruger",
- "UserCreatedWithName": "Bruger {0} er blevet oprettet",
- "UserDeletedWithName": "Brugeren {0} er blevet slettet",
- "UserDownloadingItemWithValues": "{0} downloader {1}",
- "UserLockedOutWithName": "Brugeren {0} er blevet låst ude",
- "UserOfflineFromDevice": "{0} har afbrudt fra {1}",
- "UserOnlineFromDevice": "{0} er online fra {1}",
- "UserPasswordChangedWithName": "Adgangskode er ændret for bruger {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} har påbegyndt afspilning af {1}",
- "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Album",
+ "AppDeviceValues": "App: {0}, Enhed: {1}",
+ "Application": "Applikation",
+ "Artists": "Kunstner",
+ "AuthenticationSucceededWithUserName": "{0} bekræftet med succes",
+ "Books": "Bøger",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanaler",
+ "ChapterNameValue": "Kapitel {0}",
+ "Collections": "Samlinger",
+ "DeviceOfflineWithName": "{0} har afbrudt forbindelsen",
+ "DeviceOnlineWithName": "{0} er forbundet",
+ "FailedLoginAttemptWithUserName": "Fejlet loginforsøg fra {0}",
+ "Favorites": "Favoritter",
+ "Folders": "Mapper",
+ "Games": "Spil",
+ "Genres": "Genre",
+ "HeaderAlbumArtists": "Albumkunstnere",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Fortsæt Afspilning",
+ "HeaderFavoriteAlbums": "Favoritalbum",
+ "HeaderFavoriteArtists": "Favoritkunstnere",
+ "HeaderFavoriteEpisodes": "Favoritepisoder",
+ "HeaderFavoriteShows": "Favorit serier",
+ "HeaderFavoriteSongs": "Favoritsange",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Næste",
+ "HeaderRecordingGroups": "Optagegrupper",
+ "HomeVideos": "Hjemmevideoer",
+ "Inherit": "Arv",
+ "ItemAddedWithName": "{0} blev tilføjet til biblioteket",
+ "ItemRemovedWithName": "{0} blev fjernet fra biblioteket",
+ "LabelIpAddressValue": "IP-adresse: {0}",
+ "LabelRunningTimeValue": "Spilletid: {0}",
+ "Latest": "Seneste",
+ "MessageApplicationUpdated": "Jellyfin Server er blevet opdateret",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret",
+ "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret",
+ "MixedContent": "Blandet indhold",
+ "Movies": "Film",
+ "Music": "Musik",
+ "MusicVideos": "Musikvideoer",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Sæson {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilgængelig",
+ "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret",
+ "NotificationOptionAudioPlayback": "Audioafspilning påbegyndt",
+ "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet",
+ "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet",
+ "NotificationOptionGamePlayback": "Afspilning af Spil påbegyndt",
+ "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet",
+ "NotificationOptionInstallationFailed": "Installationsfejl",
+ "NotificationOptionNewLibraryContent": "Nyt indhold tilføjet",
+ "NotificationOptionPluginError": "Pluginfejl",
+ "NotificationOptionPluginInstalled": "Plugin installeret",
+ "NotificationOptionPluginUninstalled": "Plugin afinstalleret",
+ "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret",
+ "NotificationOptionServerRestartRequired": "Genstart af server påkrævet",
+ "NotificationOptionTaskFailed": "Planlagt opgave fejlet",
+ "NotificationOptionUserLockedOut": "Bruger låst ude",
+ "NotificationOptionVideoPlayback": "Videoafspilning påbegyndt",
+ "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet",
+ "Photos": "Fotos",
+ "Playlists": "Spillelister",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} blev installeret",
+ "PluginUninstalledWithName": "{0} blev afinstalleret",
+ "PluginUpdatedWithName": "{0} blev opdateret",
+ "ProviderValue": "Udbyder: {0}",
+ "ScheduledTaskFailedWithName": "{0} fejlet",
+ "ScheduledTaskStartedWithName": "{0} påbegyndt",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Sange",
+ "StartupEmbyServerIsLoading": "Jellyfin Server indlæser. Prøv venligst igen om kort tid.",
+ "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}",
+ "Sync": "Synk",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "Bruger",
+ "UserCreatedWithName": "Bruger {0} er blevet oprettet",
+ "UserDeletedWithName": "Brugeren {0} er blevet slettet",
+ "UserDownloadingItemWithValues": "{0} downloader {1}",
+ "UserLockedOutWithName": "Brugeren {0} er blevet låst ude",
+ "UserOfflineFromDevice": "{0} har afbrudt fra {1}",
+ "UserOnlineFromDevice": "{0} er online fra {1}",
+ "UserPasswordChangedWithName": "Adgangskode er ændret for bruger {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} har påbegyndt afspilning af {1}",
+ "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/de.json b/Emby.Server.Implementations/Localization/Core/de.json
index c5873450c..98cb07663 100644
--- a/Emby.Server.Implementations/Localization/Core/de.json
+++ b/Emby.Server.Implementations/Localization/Core/de.json
@@ -1,100 +1,100 @@
{
- "Albums": "Alben",
- "AppDeviceValues": "App: {0}, Gerät: {1}",
- "Application": "Anwendung",
- "Artists": "Interpreten",
- "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert",
- "Books": "Bücher",
- "CameraImageUploadedFrom": "Ein neues Bild wurde hochgeladen von {0}",
- "Channels": "Kanäle",
- "ChapterNameValue": "Kapitel {0}",
- "Collections": "Sammlungen",
- "DeviceOfflineWithName": "{0} wurde getrennt",
- "DeviceOnlineWithName": "{0} ist verbunden",
- "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}",
- "Favorites": "Favoriten",
- "Folders": "Verzeichnisse",
- "Games": "Spiele",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album-Künstler",
- "HeaderCameraUploads": "Kamera Uploads",
- "HeaderContinueWatching": "Weiterschauen",
- "HeaderFavoriteAlbums": "Lieblingsalben",
- "HeaderFavoriteArtists": "Interpreten Favoriten",
- "HeaderFavoriteEpisodes": "Lieblingsepisoden",
- "HeaderFavoriteShows": "Lieblingsserien",
- "HeaderFavoriteSongs": "Lieder Favoriten",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Als Nächstes",
- "HeaderRecordingGroups": "Aufnahme-Gruppen",
- "HomeVideos": "Heimvideos",
- "Inherit": "Übernehmen",
- "ItemAddedWithName": "{0} wurde der Bibliothek hinzugefügt",
- "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt",
- "LabelIpAddressValue": "IP Adresse: {0}",
- "LabelRunningTimeValue": "Laufzeit: {0}",
- "Latest": "Neueste",
- "MessageApplicationUpdated": "Jellyfin Server wurde auf den neusten Stand gebracht.",
- "MessageApplicationUpdatedTo": "Jellyfin Server wurde auf Version {0} aktualisiert",
- "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert",
- "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert",
- "MixedContent": "Gemischte Inhalte",
- "Movies": "Filme",
- "Music": "Musik",
- "MusicVideos": "Musikvideos",
- "NameInstallFailed": "{0} Installation fehlgeschlagen",
- "NameSeasonNumber": "Staffel {0}",
- "NameSeasonUnknown": "Staffel unbekannt",
- "NewVersionIsAvailable": "Eine neue Version von Jellyfin Server steht zum Download bereit.",
- "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verfügbar",
- "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert",
- "NotificationOptionAudioPlayback": "Audiowiedergabe gestartet",
- "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt",
- "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen",
- "NotificationOptionGamePlayback": "Spielwiedergabe gestartet",
- "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt",
- "NotificationOptionInstallationFailed": "Installationsfehler",
- "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugefügt",
- "NotificationOptionPluginError": "Plugin Fehler",
- "NotificationOptionPluginInstalled": "Plugin installiert",
- "NotificationOptionPluginUninstalled": "Plugin deinstalliert",
- "NotificationOptionPluginUpdateInstalled": "Pluginaktualisierung installiert",
- "NotificationOptionServerRestartRequired": "Serverneustart notwendig",
- "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen",
- "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen",
- "NotificationOptionVideoPlayback": "Videowiedergabe gestartet",
- "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt",
- "Photos": "Fotos",
- "Playlists": "Wiedergabelisten",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} wurde installiert",
- "PluginUninstalledWithName": "{0} wurde deinstalliert",
- "PluginUpdatedWithName": "{0} wurde aktualisiert",
- "ProviderValue": "Anbieter: {0}",
- "ScheduledTaskFailedWithName": "{0} fehlgeschlagen",
- "ScheduledTaskStartedWithName": "{0} gestartet",
- "ServerNameNeedsToBeRestarted": "{0} muss neu gestartet werden",
- "Shows": "Serien",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server startet, bitte versuche es gleich noch einmal.",
- "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen für {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Untertitel heruntergeladen für {0}",
- "Sync": "Synchronisation",
- "System": "System",
- "TvShows": "TV Sendungen",
- "User": "Benutzer",
- "UserCreatedWithName": "Benutzer {0} wurde erstellt",
- "UserDeletedWithName": "Benutzer {0} wurde gelöscht",
- "UserDownloadingItemWithValues": "{0} lädt {1} herunter",
- "UserLockedOutWithName": "Benutzer {0} wurde ausgeschlossen",
- "UserOfflineFromDevice": "{0} wurde getrennt von {1}",
- "UserOnlineFromDevice": "{0} ist online von {1}",
- "UserPasswordChangedWithName": "Das Passwort für Benutzer {0} wurde geändert",
- "UserPolicyUpdatedWithName": "Benutzerrichtlinie wurde für {0} aktualisiert",
- "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet",
- "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet",
- "ValueHasBeenAddedToLibrary": "{0} wurde ihrer Bibliothek hinzugefügt",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Alben",
+ "AppDeviceValues": "App: {0}, Gerät: {1}",
+ "Application": "Anwendung",
+ "Artists": "Interpreten",
+ "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert",
+ "Books": "Bücher",
+ "CameraImageUploadedFrom": "Ein neues Bild wurde hochgeladen von {0}",
+ "Channels": "Kanäle",
+ "ChapterNameValue": "Kapitel {0}",
+ "Collections": "Sammlungen",
+ "DeviceOfflineWithName": "{0} wurde getrennt",
+ "DeviceOnlineWithName": "{0} ist verbunden",
+ "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}",
+ "Favorites": "Favoriten",
+ "Folders": "Verzeichnisse",
+ "Games": "Spiele",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album-Künstler",
+ "HeaderCameraUploads": "Kamera Uploads",
+ "HeaderContinueWatching": "Weiterschauen",
+ "HeaderFavoriteAlbums": "Lieblingsalben",
+ "HeaderFavoriteArtists": "Interpreten Favoriten",
+ "HeaderFavoriteEpisodes": "Lieblingsepisoden",
+ "HeaderFavoriteShows": "Lieblingsserien",
+ "HeaderFavoriteSongs": "Lieder Favoriten",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Als Nächstes",
+ "HeaderRecordingGroups": "Aufnahme-Gruppen",
+ "HomeVideos": "Heimvideos",
+ "Inherit": "Übernehmen",
+ "ItemAddedWithName": "{0} wurde der Bibliothek hinzugefügt",
+ "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt",
+ "LabelIpAddressValue": "IP Adresse: {0}",
+ "LabelRunningTimeValue": "Laufzeit: {0}",
+ "Latest": "Neueste",
+ "MessageApplicationUpdated": "Jellyfin Server wurde auf den neusten Stand gebracht.",
+ "MessageApplicationUpdatedTo": "Jellyfin Server wurde auf Version {0} aktualisiert",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert",
+ "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert",
+ "MixedContent": "Gemischte Inhalte",
+ "Movies": "Filme",
+ "Music": "Musik",
+ "MusicVideos": "Musikvideos",
+ "NameInstallFailed": "{0} Installation fehlgeschlagen",
+ "NameSeasonNumber": "Staffel {0}",
+ "NameSeasonUnknown": "Staffel unbekannt",
+ "NewVersionIsAvailable": "Eine neue Version von Jellyfin Server steht zum Download bereit.",
+ "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verfügbar",
+ "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert",
+ "NotificationOptionAudioPlayback": "Audiowiedergabe gestartet",
+ "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt",
+ "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen",
+ "NotificationOptionGamePlayback": "Spielwiedergabe gestartet",
+ "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt",
+ "NotificationOptionInstallationFailed": "Installationsfehler",
+ "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugefügt",
+ "NotificationOptionPluginError": "Plugin Fehler",
+ "NotificationOptionPluginInstalled": "Plugin installiert",
+ "NotificationOptionPluginUninstalled": "Plugin deinstalliert",
+ "NotificationOptionPluginUpdateInstalled": "Pluginaktualisierung installiert",
+ "NotificationOptionServerRestartRequired": "Serverneustart notwendig",
+ "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen",
+ "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen",
+ "NotificationOptionVideoPlayback": "Videowiedergabe gestartet",
+ "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt",
+ "Photos": "Fotos",
+ "Playlists": "Wiedergabelisten",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} wurde installiert",
+ "PluginUninstalledWithName": "{0} wurde deinstalliert",
+ "PluginUpdatedWithName": "{0} wurde aktualisiert",
+ "ProviderValue": "Anbieter: {0}",
+ "ScheduledTaskFailedWithName": "{0} fehlgeschlagen",
+ "ScheduledTaskStartedWithName": "{0} gestartet",
+ "ServerNameNeedsToBeRestarted": "{0} muss neu gestartet werden",
+ "Shows": "Serien",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server startet, bitte versuche es gleich noch einmal.",
+ "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen für {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Untertitel heruntergeladen für {0}",
+ "Sync": "Synchronisation",
+ "System": "System",
+ "TvShows": "TV Sendungen",
+ "User": "Benutzer",
+ "UserCreatedWithName": "Benutzer {0} wurde erstellt",
+ "UserDeletedWithName": "Benutzer {0} wurde gelöscht",
+ "UserDownloadingItemWithValues": "{0} lädt {1} herunter",
+ "UserLockedOutWithName": "Benutzer {0} wurde ausgeschlossen",
+ "UserOfflineFromDevice": "{0} wurde getrennt von {1}",
+ "UserOnlineFromDevice": "{0} ist online von {1}",
+ "UserPasswordChangedWithName": "Das Passwort für Benutzer {0} wurde geändert",
+ "UserPolicyUpdatedWithName": "Benutzerrichtlinie wurde für {0} aktualisiert",
+ "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet",
+ "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet",
+ "ValueHasBeenAddedToLibrary": "{0} wurde ihrer Bibliothek hinzugefügt",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/el.json b/Emby.Server.Implementations/Localization/Core/el.json
index 81903db8f..ba687a089 100644
--- a/Emby.Server.Implementations/Localization/Core/el.json
+++ b/Emby.Server.Implementations/Localization/Core/el.json
@@ -1,100 +1,100 @@
{
- "Albums": "Άλμπουμ",
- "AppDeviceValues": "Εφαρμογή: {0}, Συσκευή: {1}",
- "Application": "Εφαρμογή",
- "Artists": "Καλλιτέχνες",
- "AuthenticationSucceededWithUserName": "{0} επιτυχείς σύνδεση",
- "Books": "Βιβλία",
- "CameraImageUploadedFrom": "Μια νέα εικόνα κάμερας έχει αποσταλεί από {0}",
- "Channels": "Κανάλια",
- "ChapterNameValue": "Κεφάλαιο {0}",
- "Collections": "Συλλογές",
- "DeviceOfflineWithName": "{0} αποσυνδέθηκε",
- "DeviceOnlineWithName": "{0} συνδέθηκε",
- "FailedLoginAttemptWithUserName": "Αποτυχημένη προσπάθεια σύνδεσης από {0}",
- "Favorites": "Αγαπημένα",
- "Folders": "Φάκελοι",
- "Games": "Παιχνίδια",
- "Genres": "Είδη",
- "HeaderAlbumArtists": "Άλμπουμ Καλλιτεχνών",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Συνεχίστε να παρακολουθείτε",
- "HeaderFavoriteAlbums": "Αγαπημένα Άλμπουμ",
- "HeaderFavoriteArtists": "Αγαπημένοι Καλλιτέχνες",
- "HeaderFavoriteEpisodes": "Αγαπημένα Επεισόδια",
- "HeaderFavoriteShows": "Αγαπημένες Σειρές",
- "HeaderFavoriteSongs": "Αγαπημένα Τραγούδια",
- "HeaderLiveTV": "Ζωντανή Τηλεόραση",
- "HeaderNextUp": "Επόμενο",
- "HeaderRecordingGroups": "Γκρουπ Εγγραφών",
- "HomeVideos": "Προσωπικά βίντεο",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} προστέθηκε στη βιβλιοθήκη",
- "ItemRemovedWithName": "{0} διαγράφηκε από τη βιβλιοθήκη",
- "LabelIpAddressValue": "Διεύθυνση IP: {0}",
- "LabelRunningTimeValue": "Διάρκεια: {0}",
- "Latest": "Πρόσφατα",
- "MessageApplicationUpdated": "Ο Jellyfin Server έχει ενημερωθεί",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Η ενότητα {0} ρύθμισης παραμέτρων του server έχει ενημερωθεί",
- "MessageServerConfigurationUpdated": "Η ρύθμιση παραμέτρων του server έχει ενημερωθεί",
- "MixedContent": "Ανάμεικτο Περιεχόμενο",
- "Movies": "Ταινίες",
- "Music": "Μουσική",
- "MusicVideos": "Μουσικά βίντεο",
- "NameInstallFailed": "{0} η εγκατάσταση απέτυχε",
- "NameSeasonNumber": "Κύκλος {0}",
- "NameSeasonUnknown": "Άγνωστος Κύκλος",
- "NewVersionIsAvailable": "Μια νέα έκδοση του Jellyfin Server είναι διαθέσιμη για λήψη.",
- "NotificationOptionApplicationUpdateAvailable": "Διαθέσιμη ενημερωμένη έκδοση εφαρμογής",
- "NotificationOptionApplicationUpdateInstalled": "Η ενημέρωση εφαρμογής εγκαταστάθηκε",
- "NotificationOptionAudioPlayback": "Η αναπαραγωγή ήχου ξεκίνησε",
- "NotificationOptionAudioPlaybackStopped": "Η αναπαραγωγή ήχου σταμάτησε",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Η αναπαραγωγή του παιχνιδιού ξεκίνησε",
- "NotificationOptionGamePlaybackStopped": "Η αναπαραγωγή του παιχνιδιού σταμάτησε",
- "NotificationOptionInstallationFailed": "Αποτυχία εγκατάστασης",
- "NotificationOptionNewLibraryContent": "Προστέθηκε νέο περιεχόμενο",
- "NotificationOptionPluginError": "Αποτυχία του plugin",
- "NotificationOptionPluginInstalled": "Το plugin εγκαταστάθηκε",
- "NotificationOptionPluginUninstalled": "Το plugin απεγκαταστάθηκε",
- "NotificationOptionPluginUpdateInstalled": "Η αναβάθμιση του plugin εγκαταστάθηκε",
- "NotificationOptionServerRestartRequired": "Απαιτείται επανεκκίνηση του server",
- "NotificationOptionTaskFailed": "Αποτυχία προγραμματισμένης εργασίας",
- "NotificationOptionUserLockedOut": "Ο χρήστης αποκλείστηκε",
- "NotificationOptionVideoPlayback": "Η αναπαραγωγή βίντεο ξεκίνησε",
- "NotificationOptionVideoPlaybackStopped": "Η αναπαραγωγή βίντεο σταμάτησε",
- "Photos": "Φωτογραφίες",
- "Playlists": "Λίστες αναπαραγωγής",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} εγκαταστήθηκε",
- "PluginUninstalledWithName": "{0} έχει απεγκατασταθεί",
- "PluginUpdatedWithName": "{0} έχει αναβαθμιστεί",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} αποτυχία",
- "ScheduledTaskStartedWithName": "{0} ξεκίνησε",
- "ServerNameNeedsToBeRestarted": "{0} χρειάζεται επανεκκίνηση",
- "Shows": "Σειρές",
- "Songs": "Τραγούδια",
- "StartupEmbyServerIsLoading": "Ο Jellyfin Server φορτώνει. Παρακαλώ δοκιμάστε σε λίγο.",
- "SubtitleDownloadFailureForItem": "Οι υπότιτλοι απέτυχαν να κατέβουν για {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Οι υπότιτλοι κατέβηκαν για {0}",
- "Sync": "Συγχρονισμός",
- "System": "Σύστημα",
- "TvShows": "Τηλεοπτικές Σειρές",
- "User": "Χρήστης",
- "UserCreatedWithName": "Δημιουργήθηκε ο χρήστης {0}",
- "UserDeletedWithName": "Ο χρήστης {0} έχει διαγραφεί",
- "UserDownloadingItemWithValues": "{0} κατεβάζει {1}",
- "UserLockedOutWithName": "Ο χρήστης {0} αποκλείστηκε",
- "UserOfflineFromDevice": "{0} αποσυνδέθηκε από {1}",
- "UserOnlineFromDevice": "{0} είναι online απο {1}",
- "UserPasswordChangedWithName": "Ο κωδικός του χρήστη {0} έχει αλλάξει",
- "UserPolicyUpdatedWithName": "Η πολιτική χρήστη έχει ενημερωθεί για {0}",
- "UserStartedPlayingItemWithValues": "{0} παίζει {1} σε {2}",
- "UserStoppedPlayingItemWithValues": "{0} τελείωσε να παίζει {1} σε {2}",
- "ValueHasBeenAddedToLibrary": "{0} προστέθηκαν στη βιβλιοθήκη πολυμέσων σας",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Έκδοση {0}"
+ "Albums": "Άλμπουμ",
+ "AppDeviceValues": "Εφαρμογή: {0}, Συσκευή: {1}",
+ "Application": "Εφαρμογή",
+ "Artists": "Καλλιτέχνες",
+ "AuthenticationSucceededWithUserName": "{0} επιτυχείς σύνδεση",
+ "Books": "Βιβλία",
+ "CameraImageUploadedFrom": "Μια νέα εικόνα κάμερας έχει αποσταλεί από {0}",
+ "Channels": "Κανάλια",
+ "ChapterNameValue": "Κεφάλαιο {0}",
+ "Collections": "Συλλογές",
+ "DeviceOfflineWithName": "{0} αποσυνδέθηκε",
+ "DeviceOnlineWithName": "{0} συνδέθηκε",
+ "FailedLoginAttemptWithUserName": "Αποτυχημένη προσπάθεια σύνδεσης από {0}",
+ "Favorites": "Αγαπημένα",
+ "Folders": "Φάκελοι",
+ "Games": "Παιχνίδια",
+ "Genres": "Είδη",
+ "HeaderAlbumArtists": "Άλμπουμ Καλλιτεχνών",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Συνεχίστε να παρακολουθείτε",
+ "HeaderFavoriteAlbums": "Αγαπημένα Άλμπουμ",
+ "HeaderFavoriteArtists": "Αγαπημένοι Καλλιτέχνες",
+ "HeaderFavoriteEpisodes": "Αγαπημένα Επεισόδια",
+ "HeaderFavoriteShows": "Αγαπημένες Σειρές",
+ "HeaderFavoriteSongs": "Αγαπημένα Τραγούδια",
+ "HeaderLiveTV": "Ζωντανή Τηλεόραση",
+ "HeaderNextUp": "Επόμενο",
+ "HeaderRecordingGroups": "Γκρουπ Εγγραφών",
+ "HomeVideos": "Προσωπικά βίντεο",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} προστέθηκε στη βιβλιοθήκη",
+ "ItemRemovedWithName": "{0} διαγράφηκε από τη βιβλιοθήκη",
+ "LabelIpAddressValue": "Διεύθυνση IP: {0}",
+ "LabelRunningTimeValue": "Διάρκεια: {0}",
+ "Latest": "Πρόσφατα",
+ "MessageApplicationUpdated": "Ο Jellyfin Server έχει ενημερωθεί",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Η ενότητα {0} ρύθμισης παραμέτρων του server έχει ενημερωθεί",
+ "MessageServerConfigurationUpdated": "Η ρύθμιση παραμέτρων του server έχει ενημερωθεί",
+ "MixedContent": "Ανάμεικτο Περιεχόμενο",
+ "Movies": "Ταινίες",
+ "Music": "Μουσική",
+ "MusicVideos": "Μουσικά βίντεο",
+ "NameInstallFailed": "{0} η εγκατάσταση απέτυχε",
+ "NameSeasonNumber": "Κύκλος {0}",
+ "NameSeasonUnknown": "Άγνωστος Κύκλος",
+ "NewVersionIsAvailable": "Μια νέα έκδοση του Jellyfin Server είναι διαθέσιμη για λήψη.",
+ "NotificationOptionApplicationUpdateAvailable": "Διαθέσιμη ενημερωμένη έκδοση εφαρμογής",
+ "NotificationOptionApplicationUpdateInstalled": "Η ενημέρωση εφαρμογής εγκαταστάθηκε",
+ "NotificationOptionAudioPlayback": "Η αναπαραγωγή ήχου ξεκίνησε",
+ "NotificationOptionAudioPlaybackStopped": "Η αναπαραγωγή ήχου σταμάτησε",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Η αναπαραγωγή του παιχνιδιού ξεκίνησε",
+ "NotificationOptionGamePlaybackStopped": "Η αναπαραγωγή του παιχνιδιού σταμάτησε",
+ "NotificationOptionInstallationFailed": "Αποτυχία εγκατάστασης",
+ "NotificationOptionNewLibraryContent": "Προστέθηκε νέο περιεχόμενο",
+ "NotificationOptionPluginError": "Αποτυχία του plugin",
+ "NotificationOptionPluginInstalled": "Το plugin εγκαταστάθηκε",
+ "NotificationOptionPluginUninstalled": "Το plugin απεγκαταστάθηκε",
+ "NotificationOptionPluginUpdateInstalled": "Η αναβάθμιση του plugin εγκαταστάθηκε",
+ "NotificationOptionServerRestartRequired": "Απαιτείται επανεκκίνηση του server",
+ "NotificationOptionTaskFailed": "Αποτυχία προγραμματισμένης εργασίας",
+ "NotificationOptionUserLockedOut": "Ο χρήστης αποκλείστηκε",
+ "NotificationOptionVideoPlayback": "Η αναπαραγωγή βίντεο ξεκίνησε",
+ "NotificationOptionVideoPlaybackStopped": "Η αναπαραγωγή βίντεο σταμάτησε",
+ "Photos": "Φωτογραφίες",
+ "Playlists": "Λίστες αναπαραγωγής",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} εγκαταστήθηκε",
+ "PluginUninstalledWithName": "{0} έχει απεγκατασταθεί",
+ "PluginUpdatedWithName": "{0} έχει αναβαθμιστεί",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} αποτυχία",
+ "ScheduledTaskStartedWithName": "{0} ξεκίνησε",
+ "ServerNameNeedsToBeRestarted": "{0} χρειάζεται επανεκκίνηση",
+ "Shows": "Σειρές",
+ "Songs": "Τραγούδια",
+ "StartupEmbyServerIsLoading": "Ο Jellyfin Server φορτώνει. Παρακαλώ δοκιμάστε σε λίγο.",
+ "SubtitleDownloadFailureForItem": "Οι υπότιτλοι απέτυχαν να κατέβουν για {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Οι υπότιτλοι κατέβηκαν για {0}",
+ "Sync": "Συγχρονισμός",
+ "System": "Σύστημα",
+ "TvShows": "Τηλεοπτικές Σειρές",
+ "User": "Χρήστης",
+ "UserCreatedWithName": "Δημιουργήθηκε ο χρήστης {0}",
+ "UserDeletedWithName": "Ο χρήστης {0} έχει διαγραφεί",
+ "UserDownloadingItemWithValues": "{0} κατεβάζει {1}",
+ "UserLockedOutWithName": "Ο χρήστης {0} αποκλείστηκε",
+ "UserOfflineFromDevice": "{0} αποσυνδέθηκε από {1}",
+ "UserOnlineFromDevice": "{0} είναι online απο {1}",
+ "UserPasswordChangedWithName": "Ο κωδικός του χρήστη {0} έχει αλλάξει",
+ "UserPolicyUpdatedWithName": "Η πολιτική χρήστη έχει ενημερωθεί για {0}",
+ "UserStartedPlayingItemWithValues": "{0} παίζει {1} σε {2}",
+ "UserStoppedPlayingItemWithValues": "{0} τελείωσε να παίζει {1} σε {2}",
+ "ValueHasBeenAddedToLibrary": "{0} προστέθηκαν στη βιβλιοθήκη πολυμέσων σας",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Έκδοση {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/en-GB.json b/Emby.Server.Implementations/Localization/Core/en-GB.json
index b16afea5b..20d397a1a 100644
--- a/Emby.Server.Implementations/Localization/Core/en-GB.json
+++ b/Emby.Server.Implementations/Localization/Core/en-GB.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favourites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favourite Albums",
- "HeaderFavoriteArtists": "Favourite Artists",
- "HeaderFavoriteEpisodes": "Favourite Episodes",
- "HeaderFavoriteShows": "Favourite Shows",
- "HeaderFavoriteSongs": "Favourite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "IP address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
- "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favourites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favourite Albums",
+ "HeaderFavoriteArtists": "Favourite Artists",
+ "HeaderFavoriteEpisodes": "Favourite Episodes",
+ "HeaderFavoriteShows": "Favourite Shows",
+ "HeaderFavoriteSongs": "Favourite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "IP address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
+ "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/en-US.json b/Emby.Server.Implementations/Localization/Core/en-US.json
index b90e8b593..69c8bf03c 100644
--- a/Emby.Server.Implementations/Localization/Core/en-US.json
+++ b/Emby.Server.Implementations/Localization/Core/en-US.json
@@ -1,99 +1,99 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/es-AR.json b/Emby.Server.Implementations/Localization/Core/es-AR.json
index ae74d6f7e..aaaf09788 100644
--- a/Emby.Server.Implementations/Localization/Core/es-AR.json
+++ b/Emby.Server.Implementations/Localization/Core/es-AR.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/es-MX.json b/Emby.Server.Implementations/Localization/Core/es-MX.json
index 4fa29a398..2ba9c8c7a 100644
--- a/Emby.Server.Implementations/Localization/Core/es-MX.json
+++ b/Emby.Server.Implementations/Localization/Core/es-MX.json
@@ -1,100 +1,100 @@
{
- "Albums": "Álbumes",
- "AppDeviceValues": "App: {0}, Dispositivo: {1}",
- "Application": "Aplicación",
- "Artists": "Artistas",
- "AuthenticationSucceededWithUserName": "{0} autenticado con éxito",
- "Books": "Libros",
- "CameraImageUploadedFrom": "Una nueva imagen de cámara ha sido subida desde {0}",
- "Channels": "Canales",
- "ChapterNameValue": "Capítulo {0}",
- "Collections": "Colecciones",
- "DeviceOfflineWithName": "{0} se ha desconectado",
- "DeviceOnlineWithName": "{0} está conectado",
- "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesión de {0}",
- "Favorites": "Favoritos",
- "Folders": "Carpetas",
- "Games": "Juegos",
- "Genres": "Géneros",
- "HeaderAlbumArtists": "Artistas del Álbum",
- "HeaderCameraUploads": "Subidos desde Camara",
- "HeaderContinueWatching": "Continuar Viendo",
- "HeaderFavoriteAlbums": "Álbumes Favoritos",
- "HeaderFavoriteArtists": "Artistas Favoritos",
- "HeaderFavoriteEpisodes": "Episodios Preferidos",
- "HeaderFavoriteShows": "Programas Preferidos",
- "HeaderFavoriteSongs": "Canciones Favoritas",
- "HeaderLiveTV": "TV en Vivo",
- "HeaderNextUp": "A Continuación",
- "HeaderRecordingGroups": "Grupos de Grabaciones",
- "HomeVideos": "Videos caseros",
- "Inherit": "Heredar",
- "ItemAddedWithName": "{0} fue agregado a la biblioteca",
- "ItemRemovedWithName": "{0} fue removido de la biblioteca",
- "LabelIpAddressValue": "Dirección IP: {0}",
- "LabelRunningTimeValue": "Duración: {0}",
- "Latest": "Recientes",
- "MessageApplicationUpdated": "El servidor Jellyfin ha sido actualizado",
- "MessageApplicationUpdatedTo": "El servidor Jellyfin ha sido actualizado a {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la sección {0} de la configuración del servidor",
- "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor",
- "MixedContent": "Contenido mezclado",
- "Movies": "Películas",
- "Music": "Música",
- "MusicVideos": "Videos musicales",
- "NameInstallFailed": "{0} instalación fallida",
- "NameSeasonNumber": "Temporada {0}",
- "NameSeasonUnknown": "Temporada Desconocida",
- "NewVersionIsAvailable": "Una nueva versión del Servidor Jellyfin está disponible para descargar.",
- "NotificationOptionApplicationUpdateAvailable": "Actualización de aplicación disponible",
- "NotificationOptionApplicationUpdateInstalled": "Actualización de aplicación instalada",
- "NotificationOptionAudioPlayback": "Reproducción de audio iniciada",
- "NotificationOptionAudioPlaybackStopped": "Reproducción de audio detenida",
- "NotificationOptionCameraImageUploaded": "Imagen de la cámara subida",
- "NotificationOptionGamePlayback": "Ejecución de juego iniciada",
- "NotificationOptionGamePlaybackStopped": "Ejecución de juego detenida",
- "NotificationOptionInstallationFailed": "Falla de instalación",
- "NotificationOptionNewLibraryContent": "Nuevo contenido agregado",
- "NotificationOptionPluginError": "Falla de complemento",
- "NotificationOptionPluginInstalled": "Complemento instalado",
- "NotificationOptionPluginUninstalled": "Complemento desinstalado",
- "NotificationOptionPluginUpdateInstalled": "Actualización de complemento instalada",
- "NotificationOptionServerRestartRequired": "Se necesita reiniciar el Servidor",
- "NotificationOptionTaskFailed": "Falla de tarea programada",
- "NotificationOptionUserLockedOut": "Usuario bloqueado",
- "NotificationOptionVideoPlayback": "Reproducción de video iniciada",
- "NotificationOptionVideoPlaybackStopped": "Reproducción de video detenida",
- "Photos": "Fotos",
- "Playlists": "Listas de reproducción",
- "Plugin": "Complemento",
- "PluginInstalledWithName": "{0} fue instalado",
- "PluginUninstalledWithName": "{0} fue desinstalado",
- "PluginUpdatedWithName": "{0} fue actualizado",
- "ProviderValue": "Proveedor: {0}",
- "ScheduledTaskFailedWithName": "{0} falló",
- "ScheduledTaskStartedWithName": "{0} Iniciado",
- "ServerNameNeedsToBeRestarted": "{0} debe ser reiniciado",
- "Shows": "Programas",
- "Songs": "Canciones",
- "StartupEmbyServerIsLoading": "El servidor Jellyfin esta cargando. Por favor intente de nuevo dentro de poco.",
- "SubtitleDownloadFailureForItem": "Falló la descarga de subtítulos para {0}",
- "SubtitleDownloadFailureFromForItem": "Falló la descarga de subtitulos desde {0} para {1}",
- "SubtitlesDownloadedForItem": "Subtítulos descargados para {0}",
- "Sync": "Sincronizar",
- "System": "Sistema",
- "TvShows": "Programas de TV",
- "User": "Usuario",
- "UserCreatedWithName": "Se ha creado el usuario {0}",
- "UserDeletedWithName": "Se ha eliminado el usuario {0}",
- "UserDownloadingItemWithValues": "{0} esta descargando {1}",
- "UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
- "UserOfflineFromDevice": "{0} se ha desconectado desde {1}",
- "UserOnlineFromDevice": "{0} está en línea desde {1}",
- "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}",
- "UserPolicyUpdatedWithName": "Las política de usuario ha sido actualizada por {0}",
- "UserStartedPlayingItemWithValues": "{0} está reproduciéndose {1} en {2}",
- "UserStoppedPlayingItemWithValues": "{0} ha terminado de reproducirse {1} en {2}",
- "ValueHasBeenAddedToLibrary": "{0} se han añadido a su biblioteca de medios",
- "ValueSpecialEpisodeName": "Especial - {0}",
- "VersionNumber": "Versión {0}"
+ "Albums": "Álbumes",
+ "AppDeviceValues": "App: {0}, Dispositivo: {1}",
+ "Application": "Aplicación",
+ "Artists": "Artistas",
+ "AuthenticationSucceededWithUserName": "{0} autenticado con éxito",
+ "Books": "Libros",
+ "CameraImageUploadedFrom": "Una nueva imagen de cámara ha sido subida desde {0}",
+ "Channels": "Canales",
+ "ChapterNameValue": "Capítulo {0}",
+ "Collections": "Colecciones",
+ "DeviceOfflineWithName": "{0} se ha desconectado",
+ "DeviceOnlineWithName": "{0} está conectado",
+ "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesión de {0}",
+ "Favorites": "Favoritos",
+ "Folders": "Carpetas",
+ "Games": "Juegos",
+ "Genres": "Géneros",
+ "HeaderAlbumArtists": "Artistas del Álbum",
+ "HeaderCameraUploads": "Subidos desde Camara",
+ "HeaderContinueWatching": "Continuar Viendo",
+ "HeaderFavoriteAlbums": "Álbumes Favoritos",
+ "HeaderFavoriteArtists": "Artistas Favoritos",
+ "HeaderFavoriteEpisodes": "Episodios Preferidos",
+ "HeaderFavoriteShows": "Programas Preferidos",
+ "HeaderFavoriteSongs": "Canciones Favoritas",
+ "HeaderLiveTV": "TV en Vivo",
+ "HeaderNextUp": "A Continuación",
+ "HeaderRecordingGroups": "Grupos de Grabaciones",
+ "HomeVideos": "Videos caseros",
+ "Inherit": "Heredar",
+ "ItemAddedWithName": "{0} fue agregado a la biblioteca",
+ "ItemRemovedWithName": "{0} fue removido de la biblioteca",
+ "LabelIpAddressValue": "Dirección IP: {0}",
+ "LabelRunningTimeValue": "Duración: {0}",
+ "Latest": "Recientes",
+ "MessageApplicationUpdated": "El servidor Jellyfin ha sido actualizado",
+ "MessageApplicationUpdatedTo": "El servidor Jellyfin ha sido actualizado a {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la sección {0} de la configuración del servidor",
+ "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor",
+ "MixedContent": "Contenido mezclado",
+ "Movies": "Películas",
+ "Music": "Música",
+ "MusicVideos": "Videos musicales",
+ "NameInstallFailed": "{0} instalación fallida",
+ "NameSeasonNumber": "Temporada {0}",
+ "NameSeasonUnknown": "Temporada Desconocida",
+ "NewVersionIsAvailable": "Una nueva versión del Servidor Jellyfin está disponible para descargar.",
+ "NotificationOptionApplicationUpdateAvailable": "Actualización de aplicación disponible",
+ "NotificationOptionApplicationUpdateInstalled": "Actualización de aplicación instalada",
+ "NotificationOptionAudioPlayback": "Reproducción de audio iniciada",
+ "NotificationOptionAudioPlaybackStopped": "Reproducción de audio detenida",
+ "NotificationOptionCameraImageUploaded": "Imagen de la cámara subida",
+ "NotificationOptionGamePlayback": "Ejecución de juego iniciada",
+ "NotificationOptionGamePlaybackStopped": "Ejecución de juego detenida",
+ "NotificationOptionInstallationFailed": "Falla de instalación",
+ "NotificationOptionNewLibraryContent": "Nuevo contenido agregado",
+ "NotificationOptionPluginError": "Falla de complemento",
+ "NotificationOptionPluginInstalled": "Complemento instalado",
+ "NotificationOptionPluginUninstalled": "Complemento desinstalado",
+ "NotificationOptionPluginUpdateInstalled": "Actualización de complemento instalada",
+ "NotificationOptionServerRestartRequired": "Se necesita reiniciar el Servidor",
+ "NotificationOptionTaskFailed": "Falla de tarea programada",
+ "NotificationOptionUserLockedOut": "Usuario bloqueado",
+ "NotificationOptionVideoPlayback": "Reproducción de video iniciada",
+ "NotificationOptionVideoPlaybackStopped": "Reproducción de video detenida",
+ "Photos": "Fotos",
+ "Playlists": "Listas de reproducción",
+ "Plugin": "Complemento",
+ "PluginInstalledWithName": "{0} fue instalado",
+ "PluginUninstalledWithName": "{0} fue desinstalado",
+ "PluginUpdatedWithName": "{0} fue actualizado",
+ "ProviderValue": "Proveedor: {0}",
+ "ScheduledTaskFailedWithName": "{0} falló",
+ "ScheduledTaskStartedWithName": "{0} Iniciado",
+ "ServerNameNeedsToBeRestarted": "{0} debe ser reiniciado",
+ "Shows": "Programas",
+ "Songs": "Canciones",
+ "StartupEmbyServerIsLoading": "El servidor Jellyfin esta cargando. Por favor intente de nuevo dentro de poco.",
+ "SubtitleDownloadFailureForItem": "Falló la descarga de subtítulos para {0}",
+ "SubtitleDownloadFailureFromForItem": "Falló la descarga de subtitulos desde {0} para {1}",
+ "SubtitlesDownloadedForItem": "Subtítulos descargados para {0}",
+ "Sync": "Sincronizar",
+ "System": "Sistema",
+ "TvShows": "Programas de TV",
+ "User": "Usuario",
+ "UserCreatedWithName": "Se ha creado el usuario {0}",
+ "UserDeletedWithName": "Se ha eliminado el usuario {0}",
+ "UserDownloadingItemWithValues": "{0} esta descargando {1}",
+ "UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
+ "UserOfflineFromDevice": "{0} se ha desconectado desde {1}",
+ "UserOnlineFromDevice": "{0} está en línea desde {1}",
+ "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}",
+ "UserPolicyUpdatedWithName": "Las política de usuario ha sido actualizada por {0}",
+ "UserStartedPlayingItemWithValues": "{0} está reproduciéndose {1} en {2}",
+ "UserStoppedPlayingItemWithValues": "{0} ha terminado de reproducirse {1} en {2}",
+ "ValueHasBeenAddedToLibrary": "{0} se han añadido a su biblioteca de medios",
+ "ValueSpecialEpisodeName": "Especial - {0}",
+ "VersionNumber": "Versión {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/es.json b/Emby.Server.Implementations/Localization/Core/es.json
index ad6a32a0e..38a282382 100644
--- a/Emby.Server.Implementations/Localization/Core/es.json
+++ b/Emby.Server.Implementations/Localization/Core/es.json
@@ -1,100 +1,100 @@
{
- "Albums": "Álbumes",
- "AppDeviceValues": "Aplicación: {0}, Dispositivo: {1}",
- "Application": "Aplicación",
- "Artists": "Artistas",
- "AuthenticationSucceededWithUserName": "{0} autenticado correctamente",
- "Books": "Libros",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Canales",
- "ChapterNameValue": "Capítulo {0}",
- "Collections": "Colecciones",
- "DeviceOfflineWithName": "{0} se ha desconectado",
- "DeviceOnlineWithName": "{0} está conectado",
- "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesión a partir de {0}",
- "Favorites": "Favoritos",
- "Folders": "Carpetas",
- "Games": "Juegos",
- "Genres": "Géneros",
- "HeaderAlbumArtists": "Artistas del Álbum",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continuar viendo",
- "HeaderFavoriteAlbums": "Álbumes favoritos",
- "HeaderFavoriteArtists": "Artistas favoritos",
- "HeaderFavoriteEpisodes": "Episodios favoritos",
- "HeaderFavoriteShows": "Programas favoritos",
- "HeaderFavoriteSongs": "Canciones favoritas",
- "HeaderLiveTV": "TV en vivo",
- "HeaderNextUp": "Siguiendo",
- "HeaderRecordingGroups": "Grupos de grabación",
- "HomeVideos": "Vídeos de inicio",
- "Inherit": "Heredar",
- "ItemAddedWithName": "{0} se ha añadido a la biblioteca",
- "ItemRemovedWithName": "{0} se elimina de la biblioteca",
- "LabelIpAddressValue": "Dirección IP: {0}",
- "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}",
- "Latest": "Últimos",
- "MessageApplicationUpdated": "Se ha actualizado el servidor Jellyfin",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "La sección de configuración del servidor {0} ha sido actualizado",
- "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor",
- "MixedContent": "Contenido mixto",
- "Movies": "Peliculas",
- "Music": "Música",
- "MusicVideos": "Videos musicales",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Temporada {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Actualización de la aplicación disponible",
- "NotificationOptionApplicationUpdateInstalled": "Actualización de la aplicación instalada",
- "NotificationOptionAudioPlayback": "Se inició la reproducción de audio",
- "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducción de audio",
- "NotificationOptionCameraImageUploaded": "Imagen de la cámara cargada",
- "NotificationOptionGamePlayback": "Se inició la reproducción del juego",
- "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducción del juego",
- "NotificationOptionInstallationFailed": "Error de instalación",
- "NotificationOptionNewLibraryContent": "Nuevo contenido añadido",
- "NotificationOptionPluginError": "Error en plugin",
- "NotificationOptionPluginInstalled": "Plugin instalado",
- "NotificationOptionPluginUninstalled": "Plugin desinstalado",
- "NotificationOptionPluginUpdateInstalled": "Actualización del complemento instalada",
- "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor",
- "NotificationOptionTaskFailed": "Error de tarea programada",
- "NotificationOptionUserLockedOut": "Usuario bloqueado",
- "NotificationOptionVideoPlayback": "Se inició la reproducción de vídeo",
- "NotificationOptionVideoPlaybackStopped": "Reproducción de vídeo detenida",
- "Photos": "Fotos",
- "Playlists": "Listas reproducción",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} se ha instalado",
- "PluginUninstalledWithName": "{0} se ha desinstalado",
- "PluginUpdatedWithName": "{0} se actualizó",
- "ProviderValue": "Proveedor: {0}",
- "ScheduledTaskFailedWithName": "{0} falló",
- "ScheduledTaskStartedWithName": "{0} iniciada",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Canciones",
- "StartupEmbyServerIsLoading": "Jellyfin Server se está cargando. Vuelve a intentarlo en breve.",
- "SubtitleDownloadFailureForItem": "Error al descargar subtítulos para {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Descargar subtítulos para {0}",
- "Sync": "Sincronizar",
- "System": "Sistema",
- "TvShows": "Series TV",
- "User": "Usuario",
- "UserCreatedWithName": "El usuario {0} ha sido creado",
- "UserDeletedWithName": "El usuario {0} ha sido borrado",
- "UserDownloadingItemWithValues": "{0} está descargando {1}",
- "UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
- "UserOfflineFromDevice": "{0} se ha desconectado de {1}",
- "UserOnlineFromDevice": "{0} está en línea desde {1}",
- "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} ha comenzado reproducir {1}",
- "UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Especial - {0}",
- "VersionNumber": "Versión {0}"
+ "Albums": "Álbumes",
+ "AppDeviceValues": "Aplicación: {0}, Dispositivo: {1}",
+ "Application": "Aplicación",
+ "Artists": "Artistas",
+ "AuthenticationSucceededWithUserName": "{0} autenticado correctamente",
+ "Books": "Libros",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Canales",
+ "ChapterNameValue": "Capítulo {0}",
+ "Collections": "Colecciones",
+ "DeviceOfflineWithName": "{0} se ha desconectado",
+ "DeviceOnlineWithName": "{0} está conectado",
+ "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesión a partir de {0}",
+ "Favorites": "Favoritos",
+ "Folders": "Carpetas",
+ "Games": "Juegos",
+ "Genres": "Géneros",
+ "HeaderAlbumArtists": "Artistas del Álbum",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continuar viendo",
+ "HeaderFavoriteAlbums": "Álbumes favoritos",
+ "HeaderFavoriteArtists": "Artistas favoritos",
+ "HeaderFavoriteEpisodes": "Episodios favoritos",
+ "HeaderFavoriteShows": "Programas favoritos",
+ "HeaderFavoriteSongs": "Canciones favoritas",
+ "HeaderLiveTV": "TV en vivo",
+ "HeaderNextUp": "Siguiendo",
+ "HeaderRecordingGroups": "Grupos de grabación",
+ "HomeVideos": "Vídeos de inicio",
+ "Inherit": "Heredar",
+ "ItemAddedWithName": "{0} se ha añadido a la biblioteca",
+ "ItemRemovedWithName": "{0} se elimina de la biblioteca",
+ "LabelIpAddressValue": "Dirección IP: {0}",
+ "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}",
+ "Latest": "Últimos",
+ "MessageApplicationUpdated": "Se ha actualizado el servidor Jellyfin",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "La sección de configuración del servidor {0} ha sido actualizado",
+ "MessageServerConfigurationUpdated": "Se ha actualizado la configuración del servidor",
+ "MixedContent": "Contenido mixto",
+ "Movies": "Peliculas",
+ "Music": "Música",
+ "MusicVideos": "Videos musicales",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Temporada {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Actualización de la aplicación disponible",
+ "NotificationOptionApplicationUpdateInstalled": "Actualización de la aplicación instalada",
+ "NotificationOptionAudioPlayback": "Se inició la reproducción de audio",
+ "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducción de audio",
+ "NotificationOptionCameraImageUploaded": "Imagen de la cámara cargada",
+ "NotificationOptionGamePlayback": "Se inició la reproducción del juego",
+ "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducción del juego",
+ "NotificationOptionInstallationFailed": "Error de instalación",
+ "NotificationOptionNewLibraryContent": "Nuevo contenido añadido",
+ "NotificationOptionPluginError": "Error en plugin",
+ "NotificationOptionPluginInstalled": "Plugin instalado",
+ "NotificationOptionPluginUninstalled": "Plugin desinstalado",
+ "NotificationOptionPluginUpdateInstalled": "Actualización del complemento instalada",
+ "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor",
+ "NotificationOptionTaskFailed": "Error de tarea programada",
+ "NotificationOptionUserLockedOut": "Usuario bloqueado",
+ "NotificationOptionVideoPlayback": "Se inició la reproducción de vídeo",
+ "NotificationOptionVideoPlaybackStopped": "Reproducción de vídeo detenida",
+ "Photos": "Fotos",
+ "Playlists": "Listas reproducción",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} se ha instalado",
+ "PluginUninstalledWithName": "{0} se ha desinstalado",
+ "PluginUpdatedWithName": "{0} se actualizó",
+ "ProviderValue": "Proveedor: {0}",
+ "ScheduledTaskFailedWithName": "{0} falló",
+ "ScheduledTaskStartedWithName": "{0} iniciada",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Canciones",
+ "StartupEmbyServerIsLoading": "Jellyfin Server se está cargando. Vuelve a intentarlo en breve.",
+ "SubtitleDownloadFailureForItem": "Error al descargar subtítulos para {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Descargar subtítulos para {0}",
+ "Sync": "Sincronizar",
+ "System": "Sistema",
+ "TvShows": "Series TV",
+ "User": "Usuario",
+ "UserCreatedWithName": "El usuario {0} ha sido creado",
+ "UserDeletedWithName": "El usuario {0} ha sido borrado",
+ "UserDownloadingItemWithValues": "{0} está descargando {1}",
+ "UserLockedOutWithName": "El usuario {0} ha sido bloqueado",
+ "UserOfflineFromDevice": "{0} se ha desconectado de {1}",
+ "UserOnlineFromDevice": "{0} está en línea desde {1}",
+ "UserPasswordChangedWithName": "Se ha cambiado la contraseña para el usuario {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} ha comenzado reproducir {1}",
+ "UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Especial - {0}",
+ "VersionNumber": "Versión {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/fa.json b/Emby.Server.Implementations/Localization/Core/fa.json
index 08a5f185d..1d7bc5fe8 100644
--- a/Emby.Server.Implementations/Localization/Core/fa.json
+++ b/Emby.Server.Implementations/Localization/Core/fa.json
@@ -1,100 +1,100 @@
{
- "Albums": "آلبوم ها",
- "AppDeviceValues": "برنامه: {0} ، دستگاه: {1}",
- "Application": "برنامه",
- "Artists": "هنرمندان",
- "AuthenticationSucceededWithUserName": "{0} با موفقیت تایید اعتبار شد",
- "Books": "کتاب ها",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "کانال ها",
- "ChapterNameValue": "فصل {0}",
- "Collections": "کلکسیون ها",
- "DeviceOfflineWithName": "ارتباط {0} قطع شد",
- "DeviceOnlineWithName": "{0} متصل شده",
- "FailedLoginAttemptWithUserName": "تلاش برای ورود از {0} ناموفق بود",
- "Favorites": "مورد علاقه ها",
- "Folders": "پوشه ها",
- "Games": "بازی ها",
- "Genres": "ژانرها",
- "HeaderAlbumArtists": "هنرمندان آلبوم",
- "HeaderCameraUploads": "آپلودهای دوربین",
- "HeaderContinueWatching": "ادامه تماشا",
- "HeaderFavoriteAlbums": "آلبوم های مورد علاقه",
- "HeaderFavoriteArtists": "هنرمندان مورد علاقه",
- "HeaderFavoriteEpisodes": "قسمت های مورد علاقه",
- "HeaderFavoriteShows": "سریال های مورد علاقه",
- "HeaderFavoriteSongs": "آهنگ های مورد علاقه",
- "HeaderLiveTV": "پخش زنده تلویزیون",
- "HeaderNextUp": "بعدی چیه",
- "HeaderRecordingGroups": "گروه های ضبط",
- "HomeVideos": "ویدیوهای خانگی",
- "Inherit": "به ارث برده",
- "ItemAddedWithName": "{0} به کتابخانه افزوده شد",
- "ItemRemovedWithName": "{0} از کتابخانه حذف شد",
- "LabelIpAddressValue": "آدرس آی پی: {0}",
- "LabelRunningTimeValue": "زمان اجرا: {0}",
- "Latest": "آخرین",
- "MessageApplicationUpdated": "سرور Jellyfin بروزرسانی شد",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "پکربندی بخش {0} سرور بروزرسانی شد",
- "MessageServerConfigurationUpdated": "پیکربندی سرور بروزرسانی شد",
- "MixedContent": "محتوای درهم",
- "Movies": "فیلم های سینمایی",
- "Music": "موسیقی",
- "MusicVideos": "موزیک ویدیوها",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "فصل {0}",
- "NameSeasonUnknown": "فصل های ناشناخته",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "بروزرسانی برنامه موجود است",
- "NotificationOptionApplicationUpdateInstalled": "بروزرسانی برنامه نصب شد",
- "NotificationOptionAudioPlayback": "پخش صدا آغاز شد",
- "NotificationOptionAudioPlaybackStopped": "پخش صدا متوقف شد",
- "NotificationOptionCameraImageUploaded": "تصاویر دوربین آپلود شد",
- "NotificationOptionGamePlayback": "پخش بازی آغاز شد",
- "NotificationOptionGamePlaybackStopped": "پخش بازی متوقف شد",
- "NotificationOptionInstallationFailed": "شکست نصب",
- "NotificationOptionNewLibraryContent": "محتوای جدید افزوده شد",
- "NotificationOptionPluginError": "خرابی افزونه",
- "NotificationOptionPluginInstalled": "افزونه نصب شد",
- "NotificationOptionPluginUninstalled": "افزونه حذف شد",
- "NotificationOptionPluginUpdateInstalled": "بروزرسانی افزونه نصب شد",
- "NotificationOptionServerRestartRequired": "شروع مجدد سرور نیاز است",
- "NotificationOptionTaskFailed": "شکست وظیفه برنامه ریزی شده",
- "NotificationOptionUserLockedOut": "کاربر از سیستم خارج شد",
- "NotificationOptionVideoPlayback": "پخش ویدیو آغاز شد",
- "NotificationOptionVideoPlaybackStopped": "پخش ویدیو متوقف شد",
- "Photos": "عکس ها",
- "Playlists": "لیست های پخش",
- "Plugin": "افزونه",
- "PluginInstalledWithName": "{0} نصب شد",
- "PluginUninstalledWithName": "{0} حذف شد",
- "PluginUpdatedWithName": "{0} آپدیت شد",
- "ProviderValue": "ارائه دهنده: {0}",
- "ScheduledTaskFailedWithName": "{0} ناموفق بود",
- "ScheduledTaskStartedWithName": "{0} شروع شد",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "سریال ها",
- "Songs": "آهنگ ها",
- "StartupEmbyServerIsLoading": "سرور Jellyfin در حال بارگیری است. لطفا کمی بعد دوباره تلاش کنید.",
- "SubtitleDownloadFailureForItem": "دانلود زیرنویس برای {0} ناموفق بود",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "زیرنویس {0} دانلود شد",
- "Sync": "همگامسازی",
- "System": "سیستم",
- "TvShows": "سریال های تلویزیونی",
- "User": "کاربر",
- "UserCreatedWithName": "کاربر {0} ایجاد شد",
- "UserDeletedWithName": "کاربر {0} حذف شد",
- "UserDownloadingItemWithValues": "{0} در حال دانلود است {1}",
- "UserLockedOutWithName": "کاربر {0} از سیستم خارج شد",
- "UserOfflineFromDevice": "ارتباط {0} از {1} قطع شد",
- "UserOnlineFromDevice": "{0}از {1} آنلاین میباشد",
- "UserPasswordChangedWithName": "رمز برای کاربر {0} تغییر یافت",
- "UserPolicyUpdatedWithName": "سیاست کاربری برای {0} بروزرسانی شد",
- "UserStartedPlayingItemWithValues": "{0} شروع به پخش {1} کرد",
- "UserStoppedPlayingItemWithValues": "{0} پخش {1} را متوقف کرد",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "ویژه- {0}",
- "VersionNumber": "نسخه {0}"
+ "Albums": "آلبوم ها",
+ "AppDeviceValues": "برنامه: {0} ، دستگاه: {1}",
+ "Application": "برنامه",
+ "Artists": "هنرمندان",
+ "AuthenticationSucceededWithUserName": "{0} با موفقیت تایید اعتبار شد",
+ "Books": "کتاب ها",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "کانال ها",
+ "ChapterNameValue": "فصل {0}",
+ "Collections": "کلکسیون ها",
+ "DeviceOfflineWithName": "ارتباط {0} قطع شد",
+ "DeviceOnlineWithName": "{0} متصل شده",
+ "FailedLoginAttemptWithUserName": "تلاش برای ورود از {0} ناموفق بود",
+ "Favorites": "مورد علاقه ها",
+ "Folders": "پوشه ها",
+ "Games": "بازی ها",
+ "Genres": "ژانرها",
+ "HeaderAlbumArtists": "هنرمندان آلبوم",
+ "HeaderCameraUploads": "آپلودهای دوربین",
+ "HeaderContinueWatching": "ادامه تماشا",
+ "HeaderFavoriteAlbums": "آلبوم های مورد علاقه",
+ "HeaderFavoriteArtists": "هنرمندان مورد علاقه",
+ "HeaderFavoriteEpisodes": "قسمت های مورد علاقه",
+ "HeaderFavoriteShows": "سریال های مورد علاقه",
+ "HeaderFavoriteSongs": "آهنگ های مورد علاقه",
+ "HeaderLiveTV": "پخش زنده تلویزیون",
+ "HeaderNextUp": "بعدی چیه",
+ "HeaderRecordingGroups": "گروه های ضبط",
+ "HomeVideos": "ویدیوهای خانگی",
+ "Inherit": "به ارث برده",
+ "ItemAddedWithName": "{0} به کتابخانه افزوده شد",
+ "ItemRemovedWithName": "{0} از کتابخانه حذف شد",
+ "LabelIpAddressValue": "آدرس آی پی: {0}",
+ "LabelRunningTimeValue": "زمان اجرا: {0}",
+ "Latest": "آخرین",
+ "MessageApplicationUpdated": "سرور Jellyfin بروزرسانی شد",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "پکربندی بخش {0} سرور بروزرسانی شد",
+ "MessageServerConfigurationUpdated": "پیکربندی سرور بروزرسانی شد",
+ "MixedContent": "محتوای درهم",
+ "Movies": "فیلم های سینمایی",
+ "Music": "موسیقی",
+ "MusicVideos": "موزیک ویدیوها",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "فصل {0}",
+ "NameSeasonUnknown": "فصل های ناشناخته",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "بروزرسانی برنامه موجود است",
+ "NotificationOptionApplicationUpdateInstalled": "بروزرسانی برنامه نصب شد",
+ "NotificationOptionAudioPlayback": "پخش صدا آغاز شد",
+ "NotificationOptionAudioPlaybackStopped": "پخش صدا متوقف شد",
+ "NotificationOptionCameraImageUploaded": "تصاویر دوربین آپلود شد",
+ "NotificationOptionGamePlayback": "پخش بازی آغاز شد",
+ "NotificationOptionGamePlaybackStopped": "پخش بازی متوقف شد",
+ "NotificationOptionInstallationFailed": "شکست نصب",
+ "NotificationOptionNewLibraryContent": "محتوای جدید افزوده شد",
+ "NotificationOptionPluginError": "خرابی افزونه",
+ "NotificationOptionPluginInstalled": "افزونه نصب شد",
+ "NotificationOptionPluginUninstalled": "افزونه حذف شد",
+ "NotificationOptionPluginUpdateInstalled": "بروزرسانی افزونه نصب شد",
+ "NotificationOptionServerRestartRequired": "شروع مجدد سرور نیاز است",
+ "NotificationOptionTaskFailed": "شکست وظیفه برنامه ریزی شده",
+ "NotificationOptionUserLockedOut": "کاربر از سیستم خارج شد",
+ "NotificationOptionVideoPlayback": "پخش ویدیو آغاز شد",
+ "NotificationOptionVideoPlaybackStopped": "پخش ویدیو متوقف شد",
+ "Photos": "عکس ها",
+ "Playlists": "لیست های پخش",
+ "Plugin": "افزونه",
+ "PluginInstalledWithName": "{0} نصب شد",
+ "PluginUninstalledWithName": "{0} حذف شد",
+ "PluginUpdatedWithName": "{0} آپدیت شد",
+ "ProviderValue": "ارائه دهنده: {0}",
+ "ScheduledTaskFailedWithName": "{0} ناموفق بود",
+ "ScheduledTaskStartedWithName": "{0} شروع شد",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "سریال ها",
+ "Songs": "آهنگ ها",
+ "StartupEmbyServerIsLoading": "سرور Jellyfin در حال بارگیری است. لطفا کمی بعد دوباره تلاش کنید.",
+ "SubtitleDownloadFailureForItem": "دانلود زیرنویس برای {0} ناموفق بود",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "زیرنویس {0} دانلود شد",
+ "Sync": "همگامسازی",
+ "System": "سیستم",
+ "TvShows": "سریال های تلویزیونی",
+ "User": "کاربر",
+ "UserCreatedWithName": "کاربر {0} ایجاد شد",
+ "UserDeletedWithName": "کاربر {0} حذف شد",
+ "UserDownloadingItemWithValues": "{0} در حال دانلود است {1}",
+ "UserLockedOutWithName": "کاربر {0} از سیستم خارج شد",
+ "UserOfflineFromDevice": "ارتباط {0} از {1} قطع شد",
+ "UserOnlineFromDevice": "{0}از {1} آنلاین میباشد",
+ "UserPasswordChangedWithName": "رمز برای کاربر {0} تغییر یافت",
+ "UserPolicyUpdatedWithName": "سیاست کاربری برای {0} بروزرسانی شد",
+ "UserStartedPlayingItemWithValues": "{0} شروع به پخش {1} کرد",
+ "UserStoppedPlayingItemWithValues": "{0} پخش {1} را متوقف کرد",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "ویژه- {0}",
+ "VersionNumber": "نسخه {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/fr-CA.json b/Emby.Server.Implementations/Localization/Core/fr-CA.json
index 737fde076..22cd4cf6d 100644
--- a/Emby.Server.Implementations/Localization/Core/fr-CA.json
+++ b/Emby.Server.Implementations/Localization/Core/fr-CA.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continuer à regarder",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "À Suivre",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Spécial - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continuer à regarder",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "À Suivre",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Spécial - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/fr.json b/Emby.Server.Implementations/Localization/Core/fr.json
index c374ec3ed..085e22cf7 100644
--- a/Emby.Server.Implementations/Localization/Core/fr.json
+++ b/Emby.Server.Implementations/Localization/Core/fr.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "Application : {0}, Appareil : {1}",
- "Application": "Application",
- "Artists": "Artistes",
- "AuthenticationSucceededWithUserName": "{0} s'est authentifié avec succès",
- "Books": "Livres",
- "CameraImageUploadedFrom": "Une image de caméra a été chargée depuis {0}",
- "Channels": "Chaînes",
- "ChapterNameValue": "Chapitre {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} s'est déconnecté",
- "DeviceOnlineWithName": "{0} est connecté",
- "FailedLoginAttemptWithUserName": "Échec d'une tentative de connexion de {0}",
- "Favorites": "Favoris",
- "Folders": "Dossiers",
- "Games": "Jeux",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Artistes de l'album",
- "HeaderCameraUploads": "Photos transférées",
- "HeaderContinueWatching": "Continuer à regarder",
- "HeaderFavoriteAlbums": "Albums favoris",
- "HeaderFavoriteArtists": "Artistes favoris",
- "HeaderFavoriteEpisodes": "Épisodes favoris",
- "HeaderFavoriteShows": "Séries favorites",
- "HeaderFavoriteSongs": "Chansons favorites",
- "HeaderLiveTV": "TV en direct",
- "HeaderNextUp": "En Cours",
- "HeaderRecordingGroups": "Groupes d'enregistrements",
- "HomeVideos": "Vidéos personnelles",
- "Inherit": "Hériter",
- "ItemAddedWithName": "{0} a été ajouté à la médiathèque",
- "ItemRemovedWithName": "{0} a été supprimé de la médiathèque",
- "LabelIpAddressValue": "Adresse IP : {0}",
- "LabelRunningTimeValue": "Durée : {0}",
- "Latest": "Derniers",
- "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour",
- "MessageApplicationUpdatedTo": "Jellyfin Serveur a été mis à jour en version {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a été mise à jour",
- "MessageServerConfigurationUpdated": "La configuration du serveur a été mise à jour.",
- "MixedContent": "Contenu mixte",
- "Movies": "Films",
- "Music": "Musique",
- "MusicVideos": "Vidéos musicales",
- "NameInstallFailed": "{0} échec d'installation",
- "NameSeasonNumber": "Saison {0}",
- "NameSeasonUnknown": "Saison Inconnue",
- "NewVersionIsAvailable": "Une nouvelle version d'Jellyfin Serveur est disponible au téléchargement.",
- "NotificationOptionApplicationUpdateAvailable": "Mise à jour de l'application disponible",
- "NotificationOptionApplicationUpdateInstalled": "Mise à jour de l'application installée",
- "NotificationOptionAudioPlayback": "Lecture audio démarrée",
- "NotificationOptionAudioPlaybackStopped": "Lecture audio arrêtée",
- "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a été transférée",
- "NotificationOptionGamePlayback": "Lecture de jeu démarrée",
- "NotificationOptionGamePlaybackStopped": "Lecture de jeu arrêtée",
- "NotificationOptionInstallationFailed": "Échec d'installation",
- "NotificationOptionNewLibraryContent": "Nouveau contenu ajouté",
- "NotificationOptionPluginError": "Erreur d'extension",
- "NotificationOptionPluginInstalled": "Extension installée",
- "NotificationOptionPluginUninstalled": "Extension désinstallée",
- "NotificationOptionPluginUpdateInstalled": "Mise à jour d'extension installée",
- "NotificationOptionServerRestartRequired": "Un redémarrage du serveur est requis",
- "NotificationOptionTaskFailed": "Échec de tâche planifiée",
- "NotificationOptionUserLockedOut": "Utilisateur verrouillé",
- "NotificationOptionVideoPlayback": "Lecture vidéo démarrée",
- "NotificationOptionVideoPlaybackStopped": "Lecture vidéo arrêtée",
- "Photos": "Photos",
- "Playlists": "Listes de lecture",
- "Plugin": "Extension",
- "PluginInstalledWithName": "{0} a été installé",
- "PluginUninstalledWithName": "{0} a été désinstallé",
- "PluginUpdatedWithName": "{0} a été mis à jour",
- "ProviderValue": "Fournisseur : {0}",
- "ScheduledTaskFailedWithName": "{0} a échoué",
- "ScheduledTaskStartedWithName": "{0} a commencé",
- "ServerNameNeedsToBeRestarted": "{0} doit être redémarré",
- "Shows": "Émissions",
- "Songs": "Chansons",
- "StartupEmbyServerIsLoading": "Le serveur Jellyfin est en cours de chargement. Veuillez réessayer dans quelques instants.",
- "SubtitleDownloadFailureForItem": "Le téléchargement des sous-titres pour {0} a échoué.",
- "SubtitleDownloadFailureFromForItem": "Échec du téléchargement des sous-titres depuis {0} pour {1}",
- "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont été téléchargés",
- "Sync": "Synchroniser",
- "System": "Système",
- "TvShows": "Séries Télé",
- "User": "Utilisateur",
- "UserCreatedWithName": "L'utilisateur {0} a été créé",
- "UserDeletedWithName": "L'utilisateur {0} a été supprimé",
- "UserDownloadingItemWithValues": "{0} est en train de télécharger {1}",
- "UserLockedOutWithName": "L'utilisateur {0} a été verrouillé",
- "UserOfflineFromDevice": "{0} s'est déconnecté depuis {1}",
- "UserOnlineFromDevice": "{0} s'est connecté depuis {1}",
- "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a été modifié",
- "UserPolicyUpdatedWithName": "La politique de l'utilisateur a été mise à jour pour {0}",
- "UserStartedPlayingItemWithValues": "{0} est entrain de lire {1} sur {2}",
- "UserStoppedPlayingItemWithValues": "{0} vient d'arrêter la lecture de {1} sur {2}",
- "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre librairie",
- "ValueSpecialEpisodeName": "Spécial - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "Application : {0}, Appareil : {1}",
+ "Application": "Application",
+ "Artists": "Artistes",
+ "AuthenticationSucceededWithUserName": "{0} s'est authentifié avec succès",
+ "Books": "Livres",
+ "CameraImageUploadedFrom": "Une image de caméra a été chargée depuis {0}",
+ "Channels": "Chaînes",
+ "ChapterNameValue": "Chapitre {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} s'est déconnecté",
+ "DeviceOnlineWithName": "{0} est connecté",
+ "FailedLoginAttemptWithUserName": "Échec d'une tentative de connexion de {0}",
+ "Favorites": "Favoris",
+ "Folders": "Dossiers",
+ "Games": "Jeux",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Artistes de l'album",
+ "HeaderCameraUploads": "Photos transférées",
+ "HeaderContinueWatching": "Continuer à regarder",
+ "HeaderFavoriteAlbums": "Albums favoris",
+ "HeaderFavoriteArtists": "Artistes favoris",
+ "HeaderFavoriteEpisodes": "Épisodes favoris",
+ "HeaderFavoriteShows": "Séries favorites",
+ "HeaderFavoriteSongs": "Chansons favorites",
+ "HeaderLiveTV": "TV en direct",
+ "HeaderNextUp": "En Cours",
+ "HeaderRecordingGroups": "Groupes d'enregistrements",
+ "HomeVideos": "Vidéos personnelles",
+ "Inherit": "Hériter",
+ "ItemAddedWithName": "{0} a été ajouté à la médiathèque",
+ "ItemRemovedWithName": "{0} a été supprimé de la médiathèque",
+ "LabelIpAddressValue": "Adresse IP : {0}",
+ "LabelRunningTimeValue": "Durée : {0}",
+ "Latest": "Derniers",
+ "MessageApplicationUpdated": "Le serveur Jellyfin a été mis à jour",
+ "MessageApplicationUpdatedTo": "Jellyfin Serveur a été mis à jour en version {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a été mise à jour",
+ "MessageServerConfigurationUpdated": "La configuration du serveur a été mise à jour.",
+ "MixedContent": "Contenu mixte",
+ "Movies": "Films",
+ "Music": "Musique",
+ "MusicVideos": "Vidéos musicales",
+ "NameInstallFailed": "{0} échec d'installation",
+ "NameSeasonNumber": "Saison {0}",
+ "NameSeasonUnknown": "Saison Inconnue",
+ "NewVersionIsAvailable": "Une nouvelle version d'Jellyfin Serveur est disponible au téléchargement.",
+ "NotificationOptionApplicationUpdateAvailable": "Mise à jour de l'application disponible",
+ "NotificationOptionApplicationUpdateInstalled": "Mise à jour de l'application installée",
+ "NotificationOptionAudioPlayback": "Lecture audio démarrée",
+ "NotificationOptionAudioPlaybackStopped": "Lecture audio arrêtée",
+ "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a été transférée",
+ "NotificationOptionGamePlayback": "Lecture de jeu démarrée",
+ "NotificationOptionGamePlaybackStopped": "Lecture de jeu arrêtée",
+ "NotificationOptionInstallationFailed": "Échec d'installation",
+ "NotificationOptionNewLibraryContent": "Nouveau contenu ajouté",
+ "NotificationOptionPluginError": "Erreur d'extension",
+ "NotificationOptionPluginInstalled": "Extension installée",
+ "NotificationOptionPluginUninstalled": "Extension désinstallée",
+ "NotificationOptionPluginUpdateInstalled": "Mise à jour d'extension installée",
+ "NotificationOptionServerRestartRequired": "Un redémarrage du serveur est requis",
+ "NotificationOptionTaskFailed": "Échec de tâche planifiée",
+ "NotificationOptionUserLockedOut": "Utilisateur verrouillé",
+ "NotificationOptionVideoPlayback": "Lecture vidéo démarrée",
+ "NotificationOptionVideoPlaybackStopped": "Lecture vidéo arrêtée",
+ "Photos": "Photos",
+ "Playlists": "Listes de lecture",
+ "Plugin": "Extension",
+ "PluginInstalledWithName": "{0} a été installé",
+ "PluginUninstalledWithName": "{0} a été désinstallé",
+ "PluginUpdatedWithName": "{0} a été mis à jour",
+ "ProviderValue": "Fournisseur : {0}",
+ "ScheduledTaskFailedWithName": "{0} a échoué",
+ "ScheduledTaskStartedWithName": "{0} a commencé",
+ "ServerNameNeedsToBeRestarted": "{0} doit être redémarré",
+ "Shows": "Émissions",
+ "Songs": "Chansons",
+ "StartupEmbyServerIsLoading": "Le serveur Jellyfin est en cours de chargement. Veuillez réessayer dans quelques instants.",
+ "SubtitleDownloadFailureForItem": "Le téléchargement des sous-titres pour {0} a échoué.",
+ "SubtitleDownloadFailureFromForItem": "Échec du téléchargement des sous-titres depuis {0} pour {1}",
+ "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont été téléchargés",
+ "Sync": "Synchroniser",
+ "System": "Système",
+ "TvShows": "Séries Télé",
+ "User": "Utilisateur",
+ "UserCreatedWithName": "L'utilisateur {0} a été créé",
+ "UserDeletedWithName": "L'utilisateur {0} a été supprimé",
+ "UserDownloadingItemWithValues": "{0} est en train de télécharger {1}",
+ "UserLockedOutWithName": "L'utilisateur {0} a été verrouillé",
+ "UserOfflineFromDevice": "{0} s'est déconnecté depuis {1}",
+ "UserOnlineFromDevice": "{0} s'est connecté depuis {1}",
+ "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a été modifié",
+ "UserPolicyUpdatedWithName": "La politique de l'utilisateur a été mise à jour pour {0}",
+ "UserStartedPlayingItemWithValues": "{0} est entrain de lire {1} sur {2}",
+ "UserStoppedPlayingItemWithValues": "{0} vient d'arrêter la lecture de {1} sur {2}",
+ "ValueHasBeenAddedToLibrary": "{0} a été ajouté à votre librairie",
+ "ValueSpecialEpisodeName": "Spécial - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/gsw.json b/Emby.Server.Implementations/Localization/Core/gsw.json
index 4d53418b9..537fe35d5 100644
--- a/Emby.Server.Implementations/Localization/Core/gsw.json
+++ b/Emby.Server.Implementations/Localization/Core/gsw.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Büecher",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Spiel",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Albuminterprete",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Wiiterluege",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Besti Interpret",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Besti Lieder",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Ufnahmegruppe",
- "HomeVideos": "Heimfilmli",
- "Inherit": "Hinzuefüege",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Letschte",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Gmischte Inhalt",
- "Movies": "Movies",
- "Music": "Musig",
- "MusicVideos": "Musigfilm",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Fotis",
- "Playlists": "Abspielliste",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Spezial - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Büecher",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Spiel",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Albuminterprete",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Wiiterluege",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Besti Interpret",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Besti Lieder",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Ufnahmegruppe",
+ "HomeVideos": "Heimfilmli",
+ "Inherit": "Hinzuefüege",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Letschte",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Gmischte Inhalt",
+ "Movies": "Movies",
+ "Music": "Musig",
+ "MusicVideos": "Musigfilm",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Fotis",
+ "Playlists": "Abspielliste",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Spezial - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json
index 67abf1d18..6fff9d0ab 100644
--- a/Emby.Server.Implementations/Localization/Core/he.json
+++ b/Emby.Server.Implementations/Localization/Core/he.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "ספרים",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "משחקים",
- "Genres": "ז'אנרים",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "המשך בצפייה",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "קבוצות הקלטה",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "אחרון",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "תוכן מעורב",
- "Movies": "סרטים",
- "Music": "מוזיקה",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "תמונות",
- "Playlists": "רשימות ניגון",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "סנכרן",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "מיוחד- {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "ספרים",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "משחקים",
+ "Genres": "ז'אנרים",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "המשך בצפייה",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "קבוצות הקלטה",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "אחרון",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "תוכן מעורב",
+ "Movies": "סרטים",
+ "Music": "מוזיקה",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "תמונות",
+ "Playlists": "רשימות ניגון",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "סנכרן",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "מיוחד- {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json
index e0add87bf..3232a4ff7 100644
--- a/Emby.Server.Implementations/Localization/Core/hr.json
+++ b/Emby.Server.Implementations/Localization/Core/hr.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albumi",
- "AppDeviceValues": "Aplikacija: {0}, Uređaj: {1}",
- "Application": "Aplikacija",
- "Artists": "Izvođači",
- "AuthenticationSucceededWithUserName": "{0} uspješno ovjerena",
- "Books": "Knjige",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanali",
- "ChapterNameValue": "Poglavlje {0}",
- "Collections": "Kolekcije",
- "DeviceOfflineWithName": "{0} se odspojilo",
- "DeviceOnlineWithName": "{0} je spojeno",
- "FailedLoginAttemptWithUserName": "Neuspjeli pokušaj prijave za {0}",
- "Favorites": "Omiljeni",
- "Folders": "Mape",
- "Games": "Igre",
- "Genres": "Žanrovi",
- "HeaderAlbumArtists": "Izvođači albuma",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Omiljeni albumi",
- "HeaderFavoriteArtists": "Omiljeni izvođači",
- "HeaderFavoriteEpisodes": "Omiljene epizode",
- "HeaderFavoriteShows": "Omiljene emisije",
- "HeaderFavoriteSongs": "Omiljene pjesme",
- "HeaderLiveTV": "TV uživo",
- "HeaderNextUp": "Sljedeće je",
- "HeaderRecordingGroups": "Grupa snimka",
- "HomeVideos": "Kućni videi",
- "Inherit": "Naslijedi",
- "ItemAddedWithName": "{0} je dodano u biblioteku",
- "ItemRemovedWithName": "{0} je uklonjen iz biblioteke",
- "LabelIpAddressValue": "Ip adresa: {0}",
- "LabelRunningTimeValue": "Vrijeme rada: {0}",
- "Latest": "Najnovije",
- "MessageApplicationUpdated": "Jellyfin Server je ažuriran",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Odjeljak postavka servera {0} je ažuriran",
- "MessageServerConfigurationUpdated": "Postavke servera su ažurirane",
- "MixedContent": "Miješani sadržaj",
- "Movies": "Filmovi",
- "Music": "Glazba",
- "MusicVideos": "Glazbeni spotovi",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Sezona {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Dostupno ažuriranje aplikacije",
- "NotificationOptionApplicationUpdateInstalled": "Instalirano ažuriranje aplikacije",
- "NotificationOptionAudioPlayback": "Reprodukcija glazbe započeta",
- "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena",
- "NotificationOptionCameraImageUploaded": "Slike kamere preuzete",
- "NotificationOptionGamePlayback": "Igrica pokrenuta",
- "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena",
- "NotificationOptionInstallationFailed": "Instalacija nije izvršena",
- "NotificationOptionNewLibraryContent": "Novi sadržaj je dodan",
- "NotificationOptionPluginError": "Dodatak otkazao",
- "NotificationOptionPluginInstalled": "Dodatak instaliran",
- "NotificationOptionPluginUninstalled": "Dodatak uklonjen",
- "NotificationOptionPluginUpdateInstalled": "Instalirano ažuriranje za dodatak",
- "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera",
- "NotificationOptionTaskFailed": "Zakazan zadatak nije izvršen",
- "NotificationOptionUserLockedOut": "Korisnik zaključan",
- "NotificationOptionVideoPlayback": "Reprodukcija videa započeta",
- "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena",
- "Photos": "Slike",
- "Playlists": "Popisi",
- "Plugin": "Dodatak",
- "PluginInstalledWithName": "{0} je instalirano",
- "PluginUninstalledWithName": "{0} je deinstalirano",
- "PluginUpdatedWithName": "{0} je ažurirano",
- "ProviderValue": "Pružitelj: {0}",
- "ScheduledTaskFailedWithName": "{0} neuspjelo",
- "ScheduledTaskStartedWithName": "{0} pokrenuto",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Pjesme",
- "StartupEmbyServerIsLoading": "Jellyfin Server se učitava. Pokušajte ponovo kasnije.",
- "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Titlovi prijevoda preuzeti za {0}",
- "Sync": "Sink.",
- "System": "Sistem",
- "TvShows": "TV Shows",
- "User": "Korisnik",
- "UserCreatedWithName": "Korisnik {0} je stvoren",
- "UserDeletedWithName": "Korisnik {0} je obrisan",
- "UserDownloadingItemWithValues": "{0} se preuzima {1}",
- "UserLockedOutWithName": "Korisnik {0} je zaključan",
- "UserOfflineFromDevice": "{0} se odspojilo od {1}",
- "UserOnlineFromDevice": "{0} je online od {1}",
- "UserPasswordChangedWithName": "Lozinka je promijenjena za korisnika {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} je pokrenuo {1}",
- "UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Specijal - {0}",
- "VersionNumber": "Verzija {0}"
+ "Albums": "Albumi",
+ "AppDeviceValues": "Aplikacija: {0}, Uređaj: {1}",
+ "Application": "Aplikacija",
+ "Artists": "Izvođači",
+ "AuthenticationSucceededWithUserName": "{0} uspješno ovjerena",
+ "Books": "Knjige",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanali",
+ "ChapterNameValue": "Poglavlje {0}",
+ "Collections": "Kolekcije",
+ "DeviceOfflineWithName": "{0} se odspojilo",
+ "DeviceOnlineWithName": "{0} je spojeno",
+ "FailedLoginAttemptWithUserName": "Neuspjeli pokušaj prijave za {0}",
+ "Favorites": "Omiljeni",
+ "Folders": "Mape",
+ "Games": "Igre",
+ "Genres": "Žanrovi",
+ "HeaderAlbumArtists": "Izvođači albuma",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Omiljeni albumi",
+ "HeaderFavoriteArtists": "Omiljeni izvođači",
+ "HeaderFavoriteEpisodes": "Omiljene epizode",
+ "HeaderFavoriteShows": "Omiljene emisije",
+ "HeaderFavoriteSongs": "Omiljene pjesme",
+ "HeaderLiveTV": "TV uživo",
+ "HeaderNextUp": "Sljedeće je",
+ "HeaderRecordingGroups": "Grupa snimka",
+ "HomeVideos": "Kućni videi",
+ "Inherit": "Naslijedi",
+ "ItemAddedWithName": "{0} je dodano u biblioteku",
+ "ItemRemovedWithName": "{0} je uklonjen iz biblioteke",
+ "LabelIpAddressValue": "Ip adresa: {0}",
+ "LabelRunningTimeValue": "Vrijeme rada: {0}",
+ "Latest": "Najnovije",
+ "MessageApplicationUpdated": "Jellyfin Server je ažuriran",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Odjeljak postavka servera {0} je ažuriran",
+ "MessageServerConfigurationUpdated": "Postavke servera su ažurirane",
+ "MixedContent": "Miješani sadržaj",
+ "Movies": "Filmovi",
+ "Music": "Glazba",
+ "MusicVideos": "Glazbeni spotovi",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Sezona {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Dostupno ažuriranje aplikacije",
+ "NotificationOptionApplicationUpdateInstalled": "Instalirano ažuriranje aplikacije",
+ "NotificationOptionAudioPlayback": "Reprodukcija glazbe započeta",
+ "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena",
+ "NotificationOptionCameraImageUploaded": "Slike kamere preuzete",
+ "NotificationOptionGamePlayback": "Igrica pokrenuta",
+ "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena",
+ "NotificationOptionInstallationFailed": "Instalacija nije izvršena",
+ "NotificationOptionNewLibraryContent": "Novi sadržaj je dodan",
+ "NotificationOptionPluginError": "Dodatak otkazao",
+ "NotificationOptionPluginInstalled": "Dodatak instaliran",
+ "NotificationOptionPluginUninstalled": "Dodatak uklonjen",
+ "NotificationOptionPluginUpdateInstalled": "Instalirano ažuriranje za dodatak",
+ "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera",
+ "NotificationOptionTaskFailed": "Zakazan zadatak nije izvršen",
+ "NotificationOptionUserLockedOut": "Korisnik zaključan",
+ "NotificationOptionVideoPlayback": "Reprodukcija videa započeta",
+ "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena",
+ "Photos": "Slike",
+ "Playlists": "Popisi",
+ "Plugin": "Dodatak",
+ "PluginInstalledWithName": "{0} je instalirano",
+ "PluginUninstalledWithName": "{0} je deinstalirano",
+ "PluginUpdatedWithName": "{0} je ažurirano",
+ "ProviderValue": "Pružitelj: {0}",
+ "ScheduledTaskFailedWithName": "{0} neuspjelo",
+ "ScheduledTaskStartedWithName": "{0} pokrenuto",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Pjesme",
+ "StartupEmbyServerIsLoading": "Jellyfin Server se učitava. Pokušajte ponovo kasnije.",
+ "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Titlovi prijevoda preuzeti za {0}",
+ "Sync": "Sink.",
+ "System": "Sistem",
+ "TvShows": "TV Shows",
+ "User": "Korisnik",
+ "UserCreatedWithName": "Korisnik {0} je stvoren",
+ "UserDeletedWithName": "Korisnik {0} je obrisan",
+ "UserDownloadingItemWithValues": "{0} se preuzima {1}",
+ "UserLockedOutWithName": "Korisnik {0} je zaključan",
+ "UserOfflineFromDevice": "{0} se odspojilo od {1}",
+ "UserOnlineFromDevice": "{0} je online od {1}",
+ "UserPasswordChangedWithName": "Lozinka je promijenjena za korisnika {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} je pokrenuo {1}",
+ "UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Specijal - {0}",
+ "VersionNumber": "Verzija {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/hu.json b/Emby.Server.Implementations/Localization/Core/hu.json
index ad3164588..3a0119faf 100644
--- a/Emby.Server.Implementations/Localization/Core/hu.json
+++ b/Emby.Server.Implementations/Localization/Core/hu.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albumok",
- "AppDeviceValues": "Program: {0}, Eszköz: {1}",
- "Application": "Program",
- "Artists": "Előadók",
- "AuthenticationSucceededWithUserName": "{0} sikeresen azonosítva",
- "Books": "Könyvek",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Csatornák",
- "ChapterNameValue": "Jelenet {0}",
- "Collections": "Gyűjtemények",
- "DeviceOfflineWithName": "{0} kijelentkezett",
- "DeviceOnlineWithName": "{0} belépett",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Kedvencek",
- "Folders": "Könyvtárak",
- "Games": "Játékok",
- "Genres": "Műfajok",
- "HeaderAlbumArtists": "Album Előadók",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Vetítés(ek) folytatása",
- "HeaderFavoriteAlbums": "Kedvenc Albumok",
- "HeaderFavoriteArtists": "Kedvenc Művészek",
- "HeaderFavoriteEpisodes": "Kedvenc Epizódok",
- "HeaderFavoriteShows": "Kedvenc Műsorok",
- "HeaderFavoriteSongs": "Kedvenc Dalok",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Következik",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Házi videók",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip cím: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Legújabb",
- "MessageApplicationUpdated": "Jellyfin Szerver frissítve",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Szerver konfigurációs rész {0} frissítve",
- "MessageServerConfigurationUpdated": "Szerver konfiguráció frissítve",
- "MixedContent": "Vegyes tartalom",
- "Movies": "Filmek",
- "Music": "Zene",
- "MusicVideos": "Zenei Videók",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Program frissítés elérhető",
- "NotificationOptionApplicationUpdateInstalled": "Program frissítés telepítve",
- "NotificationOptionAudioPlayback": "Audió lejátszás elkezdve",
- "NotificationOptionAudioPlaybackStopped": "Audió lejátszás befejezve",
- "NotificationOptionCameraImageUploaded": "Kamera kép feltöltve",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Telepítési hiba",
- "NotificationOptionNewLibraryContent": "Új tartalom hozzáadva",
- "NotificationOptionPluginError": "Bővítmény hiba",
- "NotificationOptionPluginInstalled": "Bővítmény telepítve",
- "NotificationOptionPluginUninstalled": "Bővítmény eltávolítva",
- "NotificationOptionPluginUpdateInstalled": "Bővítmény frissítés telepítve",
- "NotificationOptionServerRestartRequired": "Szerver újraindítás szükséges",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "Felhasználó tiltva",
- "NotificationOptionVideoPlayback": "Videó lejátszás elkezdve",
- "NotificationOptionVideoPlaybackStopped": "Videó lejátszás befejezve",
- "Photos": "Fényképek",
- "Playlists": "Lejátszási listák",
- "Plugin": "Bővítmény",
- "PluginInstalledWithName": "{0} telepítve",
- "PluginUninstalledWithName": "{0} eltávolítva",
- "PluginUpdatedWithName": "{0} frissítve",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Műsorok",
- "Songs": "Dalok",
- "StartupEmbyServerIsLoading": "Jellyfin Szerver betöltődik. Kérjük, próbáld meg újra később.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Szinkronizál",
- "System": "Rendszer",
- "TvShows": "TV Műsorok",
- "User": "Felhasználó",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} letölti {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} kijelentkezett innen {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} elkezdte játszani a következőt {1}",
- "UserStoppedPlayingItemWithValues": "{0} befejezte a következőt {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Verzió {0}"
+ "Albums": "Albumok",
+ "AppDeviceValues": "Program: {0}, Eszköz: {1}",
+ "Application": "Program",
+ "Artists": "Előadók",
+ "AuthenticationSucceededWithUserName": "{0} sikeresen azonosítva",
+ "Books": "Könyvek",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Csatornák",
+ "ChapterNameValue": "Jelenet {0}",
+ "Collections": "Gyűjtemények",
+ "DeviceOfflineWithName": "{0} kijelentkezett",
+ "DeviceOnlineWithName": "{0} belépett",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Kedvencek",
+ "Folders": "Könyvtárak",
+ "Games": "Játékok",
+ "Genres": "Műfajok",
+ "HeaderAlbumArtists": "Album Előadók",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Vetítés(ek) folytatása",
+ "HeaderFavoriteAlbums": "Kedvenc Albumok",
+ "HeaderFavoriteArtists": "Kedvenc Művészek",
+ "HeaderFavoriteEpisodes": "Kedvenc Epizódok",
+ "HeaderFavoriteShows": "Kedvenc Műsorok",
+ "HeaderFavoriteSongs": "Kedvenc Dalok",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Következik",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Házi videók",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip cím: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Legújabb",
+ "MessageApplicationUpdated": "Jellyfin Szerver frissítve",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Szerver konfigurációs rész {0} frissítve",
+ "MessageServerConfigurationUpdated": "Szerver konfiguráció frissítve",
+ "MixedContent": "Vegyes tartalom",
+ "Movies": "Filmek",
+ "Music": "Zene",
+ "MusicVideos": "Zenei Videók",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Program frissítés elérhető",
+ "NotificationOptionApplicationUpdateInstalled": "Program frissítés telepítve",
+ "NotificationOptionAudioPlayback": "Audió lejátszás elkezdve",
+ "NotificationOptionAudioPlaybackStopped": "Audió lejátszás befejezve",
+ "NotificationOptionCameraImageUploaded": "Kamera kép feltöltve",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Telepítési hiba",
+ "NotificationOptionNewLibraryContent": "Új tartalom hozzáadva",
+ "NotificationOptionPluginError": "Bővítmény hiba",
+ "NotificationOptionPluginInstalled": "Bővítmény telepítve",
+ "NotificationOptionPluginUninstalled": "Bővítmény eltávolítva",
+ "NotificationOptionPluginUpdateInstalled": "Bővítmény frissítés telepítve",
+ "NotificationOptionServerRestartRequired": "Szerver újraindítás szükséges",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "Felhasználó tiltva",
+ "NotificationOptionVideoPlayback": "Videó lejátszás elkezdve",
+ "NotificationOptionVideoPlaybackStopped": "Videó lejátszás befejezve",
+ "Photos": "Fényképek",
+ "Playlists": "Lejátszási listák",
+ "Plugin": "Bővítmény",
+ "PluginInstalledWithName": "{0} telepítve",
+ "PluginUninstalledWithName": "{0} eltávolítva",
+ "PluginUpdatedWithName": "{0} frissítve",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Műsorok",
+ "Songs": "Dalok",
+ "StartupEmbyServerIsLoading": "Jellyfin Szerver betöltődik. Kérjük, próbáld meg újra később.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Szinkronizál",
+ "System": "Rendszer",
+ "TvShows": "TV Műsorok",
+ "User": "Felhasználó",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} letölti {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} kijelentkezett innen {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} elkezdte játszani a következőt {1}",
+ "UserStoppedPlayingItemWithValues": "{0} befejezte a következőt {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Verzió {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/it.json b/Emby.Server.Implementations/Localization/Core/it.json
index ed980ac7a..58b7bb61a 100644
--- a/Emby.Server.Implementations/Localization/Core/it.json
+++ b/Emby.Server.Implementations/Localization/Core/it.json
@@ -1,100 +1,100 @@
{
- "Albums": "Album",
- "AppDeviceValues": "App: {0}, Dispositivo: {1}",
- "Application": "Applicazione",
- "Artists": "Artisti",
- "AuthenticationSucceededWithUserName": "{0} autenticato con successo",
- "Books": "Libri",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Canali",
- "ChapterNameValue": "Capitolo {0}",
- "Collections": "Collezioni",
- "DeviceOfflineWithName": "{0} è stato disconnesso",
- "DeviceOnlineWithName": "{0} è connesso",
- "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}",
- "Favorites": "Preferiti",
- "Folders": "Cartelle",
- "Games": "Giochi",
- "Genres": "Generi",
- "HeaderAlbumArtists": "Artisti Album",
- "HeaderCameraUploads": "Caricamenti Fotocamera",
- "HeaderContinueWatching": "Continua a guardare",
- "HeaderFavoriteAlbums": "Album preferiti",
- "HeaderFavoriteArtists": "Artisti preferiti",
- "HeaderFavoriteEpisodes": "Episodi Preferiti",
- "HeaderFavoriteShows": "Show preferiti",
- "HeaderFavoriteSongs": "Brani Preferiti",
- "HeaderLiveTV": "Diretta TV",
- "HeaderNextUp": "Prossimo",
- "HeaderRecordingGroups": "Gruppi di Registrazione",
- "HomeVideos": "Video personali",
- "Inherit": "Eredita",
- "ItemAddedWithName": "{0} è stato aggiunto alla libreria",
- "ItemRemovedWithName": "{0} è stato rimosso dalla libreria",
- "LabelIpAddressValue": "Indirizzo IP: {0}",
- "LabelRunningTimeValue": "Durata: {0}",
- "Latest": "Più recenti",
- "MessageApplicationUpdated": "Il Server Jellyfin è stato aggiornato",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server è stata aggiornata",
- "MessageServerConfigurationUpdated": "La configurazione del server è stata aggiornata",
- "MixedContent": "Contenuto misto",
- "Movies": "Film",
- "Music": "Musica",
- "MusicVideos": "Video musicali",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Stagione {0}",
- "NameSeasonUnknown": "Stagione sconosciuto",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile",
- "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato",
- "NotificationOptionAudioPlayback": "La riproduzione audio è iniziata",
- "NotificationOptionAudioPlaybackStopped": "La riproduzione audio è stata interrotta",
- "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata",
- "NotificationOptionGamePlayback": "Il gioco è stato avviato",
- "NotificationOptionGamePlaybackStopped": "Il gioco è stato fermato",
- "NotificationOptionInstallationFailed": "Installazione fallita",
- "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto",
- "NotificationOptionPluginError": "Errore del Plug-in",
- "NotificationOptionPluginInstalled": "Plug-in installato",
- "NotificationOptionPluginUninstalled": "Plug-in disinstallato",
- "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plug-in installato",
- "NotificationOptionServerRestartRequired": "Riavvio del server necessario",
- "NotificationOptionTaskFailed": "Operazione pianificata fallita",
- "NotificationOptionUserLockedOut": "Utente bloccato",
- "NotificationOptionVideoPlayback": "La riproduzione video è iniziata",
- "NotificationOptionVideoPlaybackStopped": "La riproduzione video è stata interrotta",
- "Photos": "Foto",
- "Playlists": "Playlist",
- "Plugin": "Plug-in",
- "PluginInstalledWithName": "{0} è stato Installato",
- "PluginUninstalledWithName": "{0} è stato disinstallato",
- "PluginUpdatedWithName": "{0} è stato aggiornato",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} fallito",
- "ScheduledTaskStartedWithName": "{0} avviati",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Programmi",
- "Songs": "Canzoni",
- "StartupEmbyServerIsLoading": "Jellyfin server si sta avviando. Per favore riprova più tardi.",
- "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}",
- "Sync": "Sincronizza",
- "System": "Sistema",
- "TvShows": "Serie TV",
- "User": "Utente",
- "UserCreatedWithName": "L'utente {0} è stato creato",
- "UserDeletedWithName": "L'utente {0} è stato rimosso",
- "UserDownloadingItemWithValues": "{0} sta scaricando {1}",
- "UserLockedOutWithName": "L'utente {0} è stato bloccato",
- "UserOfflineFromDevice": "{0} è stato disconnesso da {1}",
- "UserOnlineFromDevice": "{0} è online da {1}",
- "UserPasswordChangedWithName": "La password è stata cambiata per l'utente {0}",
- "UserPolicyUpdatedWithName": "La politica dell'utente è stata aggiornata per {0}",
- "UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}",
- "UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Speciale - {0}",
- "VersionNumber": "Versione {0}"
+ "Albums": "Album",
+ "AppDeviceValues": "App: {0}, Dispositivo: {1}",
+ "Application": "Applicazione",
+ "Artists": "Artisti",
+ "AuthenticationSucceededWithUserName": "{0} autenticato con successo",
+ "Books": "Libri",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Canali",
+ "ChapterNameValue": "Capitolo {0}",
+ "Collections": "Collezioni",
+ "DeviceOfflineWithName": "{0} è stato disconnesso",
+ "DeviceOnlineWithName": "{0} è connesso",
+ "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}",
+ "Favorites": "Preferiti",
+ "Folders": "Cartelle",
+ "Games": "Giochi",
+ "Genres": "Generi",
+ "HeaderAlbumArtists": "Artisti Album",
+ "HeaderCameraUploads": "Caricamenti Fotocamera",
+ "HeaderContinueWatching": "Continua a guardare",
+ "HeaderFavoriteAlbums": "Album preferiti",
+ "HeaderFavoriteArtists": "Artisti preferiti",
+ "HeaderFavoriteEpisodes": "Episodi Preferiti",
+ "HeaderFavoriteShows": "Show preferiti",
+ "HeaderFavoriteSongs": "Brani Preferiti",
+ "HeaderLiveTV": "Diretta TV",
+ "HeaderNextUp": "Prossimo",
+ "HeaderRecordingGroups": "Gruppi di Registrazione",
+ "HomeVideos": "Video personali",
+ "Inherit": "Eredita",
+ "ItemAddedWithName": "{0} è stato aggiunto alla libreria",
+ "ItemRemovedWithName": "{0} è stato rimosso dalla libreria",
+ "LabelIpAddressValue": "Indirizzo IP: {0}",
+ "LabelRunningTimeValue": "Durata: {0}",
+ "Latest": "Più recenti",
+ "MessageApplicationUpdated": "Il Server Jellyfin è stato aggiornato",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server è stata aggiornata",
+ "MessageServerConfigurationUpdated": "La configurazione del server è stata aggiornata",
+ "MixedContent": "Contenuto misto",
+ "Movies": "Film",
+ "Music": "Musica",
+ "MusicVideos": "Video musicali",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Stagione {0}",
+ "NameSeasonUnknown": "Stagione sconosciuto",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile",
+ "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato",
+ "NotificationOptionAudioPlayback": "La riproduzione audio è iniziata",
+ "NotificationOptionAudioPlaybackStopped": "La riproduzione audio è stata interrotta",
+ "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata",
+ "NotificationOptionGamePlayback": "Il gioco è stato avviato",
+ "NotificationOptionGamePlaybackStopped": "Il gioco è stato fermato",
+ "NotificationOptionInstallationFailed": "Installazione fallita",
+ "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto",
+ "NotificationOptionPluginError": "Errore del Plug-in",
+ "NotificationOptionPluginInstalled": "Plug-in installato",
+ "NotificationOptionPluginUninstalled": "Plug-in disinstallato",
+ "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plug-in installato",
+ "NotificationOptionServerRestartRequired": "Riavvio del server necessario",
+ "NotificationOptionTaskFailed": "Operazione pianificata fallita",
+ "NotificationOptionUserLockedOut": "Utente bloccato",
+ "NotificationOptionVideoPlayback": "La riproduzione video è iniziata",
+ "NotificationOptionVideoPlaybackStopped": "La riproduzione video è stata interrotta",
+ "Photos": "Foto",
+ "Playlists": "Playlist",
+ "Plugin": "Plug-in",
+ "PluginInstalledWithName": "{0} è stato Installato",
+ "PluginUninstalledWithName": "{0} è stato disinstallato",
+ "PluginUpdatedWithName": "{0} è stato aggiornato",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} fallito",
+ "ScheduledTaskStartedWithName": "{0} avviati",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Programmi",
+ "Songs": "Canzoni",
+ "StartupEmbyServerIsLoading": "Jellyfin server si sta avviando. Per favore riprova più tardi.",
+ "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}",
+ "Sync": "Sincronizza",
+ "System": "Sistema",
+ "TvShows": "Serie TV",
+ "User": "Utente",
+ "UserCreatedWithName": "L'utente {0} è stato creato",
+ "UserDeletedWithName": "L'utente {0} è stato rimosso",
+ "UserDownloadingItemWithValues": "{0} sta scaricando {1}",
+ "UserLockedOutWithName": "L'utente {0} è stato bloccato",
+ "UserOfflineFromDevice": "{0} è stato disconnesso da {1}",
+ "UserOnlineFromDevice": "{0} è online da {1}",
+ "UserPasswordChangedWithName": "La password è stata cambiata per l'utente {0}",
+ "UserPolicyUpdatedWithName": "La politica dell'utente è stata aggiornata per {0}",
+ "UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}",
+ "UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Speciale - {0}",
+ "VersionNumber": "Versione {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/kk.json b/Emby.Server.Implementations/Localization/Core/kk.json
index 970a5d460..45b8617f1 100644
--- a/Emby.Server.Implementations/Localization/Core/kk.json
+++ b/Emby.Server.Implementations/Localization/Core/kk.json
@@ -1,100 +1,100 @@
{
- "Albums": "Альбомдар",
- "AppDeviceValues": "Қолданба: {0}, Құрылғы: {1}",
- "Application": "Қолданба",
- "Artists": "Орындаушылар",
- "AuthenticationSucceededWithUserName": "{0} түпнұсқалығын расталуы сәтті",
- "Books": "Кітаптар",
- "CameraImageUploadedFrom": "Жаңа сурет {0} камерасынан жүктеп алынды",
- "Channels": "Арналар",
- "ChapterNameValue": "{0}-сахна",
- "Collections": "Жиынтықтар",
- "DeviceOfflineWithName": "{0} ажыратылған",
- "DeviceOnlineWithName": "{0} қосылған",
- "FailedLoginAttemptWithUserName": "{0} тарапынан кіру әрекеті сәтсіз",
- "Favorites": "Таңдаулылар",
- "Folders": "Қалталар",
- "Games": "Ойындар",
- "Genres": "Жанрлар",
- "HeaderAlbumArtists": "Альбом орындаушылары",
- "HeaderCameraUploads": "Камерадан жүктелгендер",
- "HeaderContinueWatching": "Қарауды жалғастыру",
- "HeaderFavoriteAlbums": "Таңдаулы альбомдар",
- "HeaderFavoriteArtists": "Таңдаулы орындаушылар",
- "HeaderFavoriteEpisodes": "Таңдаулы бөлімдер",
- "HeaderFavoriteShows": "Таңдаулы көрсетімдер",
- "HeaderFavoriteSongs": "Таңдаулы әуендер",
- "HeaderLiveTV": "Эфир",
- "HeaderNextUp": "Кезекті",
- "HeaderRecordingGroups": "Жазба топтары",
- "HomeVideos": "Үйлік бейнелер",
- "Inherit": "Мұраға иелену",
- "ItemAddedWithName": "{0} тасығышханаға үстелінді",
- "ItemRemovedWithName": "{0} тасығышханадан аласталды",
- "LabelIpAddressValue": "IP-мекенжайы: {0}",
- "LabelRunningTimeValue": "Іске қосылу уақыты: {0}",
- "Latest": "Ең кейінгі",
- "MessageApplicationUpdated": "Jellyfin Server жаңартылды.",
- "MessageApplicationUpdatedTo": "Jellyfin Server {0} үшін жаңартылды",
- "MessageNamedServerConfigurationUpdatedWithValue": "Сервер теңшелімі ({0} бөлімі) жаңартылды",
- "MessageServerConfigurationUpdated": "Сервер теңшелімі жаңартылды",
- "MixedContent": "Аралас мазмұн",
- "Movies": "Фильмдер",
- "Music": "Музыка",
- "MusicVideos": "Музыкалық бейнелер",
- "NameInstallFailed": "{0} орнатылуы сәтсіз",
- "NameSeasonNumber": "{0}-маусым",
- "NameSeasonUnknown": "Белгісіз маусым",
- "NewVersionIsAvailable": "Жаңа Jellyfin Server нұсқасы жүктеп алуға қолжетімді.",
- "NotificationOptionApplicationUpdateAvailable": "Қолданба жаңартуы қолжетімді",
- "NotificationOptionApplicationUpdateInstalled": "Қолданба жаңартуы орнатылды",
- "NotificationOptionAudioPlayback": "Дыбыс ойнатуы басталды",
- "NotificationOptionAudioPlaybackStopped": "Дыбыс ойнатуы тоқтатылды",
- "NotificationOptionCameraImageUploaded": "Камерадан фотосурет кері қотарылған",
- "NotificationOptionGamePlayback": "Ойын ойнатуы басталды",
- "NotificationOptionGamePlaybackStopped": "Ойын ойнатуы тоқтатылды",
- "NotificationOptionInstallationFailed": "Орнату сәтсіздігі",
- "NotificationOptionNewLibraryContent": "Жаңа мазмұн үстелген",
- "NotificationOptionPluginError": "Плагин сәтсіздігі",
- "NotificationOptionPluginInstalled": "Плагин орнатылды",
- "NotificationOptionPluginUninstalled": "Плагин орнатуы болдырылмады",
- "NotificationOptionPluginUpdateInstalled": "Плагин жаңартуы орнатылды",
- "NotificationOptionServerRestartRequired": "Серверді қайта іске қосу қажет",
- "NotificationOptionTaskFailed": "Жоспарлаған тапсырма сәтсіздігі",
- "NotificationOptionUserLockedOut": "Пайдаланушы құрсаулы",
- "NotificationOptionVideoPlayback": "Бейне ойнатуы басталды",
- "NotificationOptionVideoPlaybackStopped": "Бейне ойнатуы тоқтатылды",
- "Photos": "Фотосуреттер",
- "Playlists": "Ойнату тізімдері",
- "Plugin": "Плагин",
- "PluginInstalledWithName": "{0} орнатылды",
- "PluginUninstalledWithName": "{0} жойылды",
- "PluginUpdatedWithName": "{0} жаңартылды",
- "ProviderValue": "Жеткізуші: {0}",
- "ScheduledTaskFailedWithName": "{0} сәтсіз",
- "ScheduledTaskStartedWithName": "{0} іске қосылды",
- "ServerNameNeedsToBeRestarted": "{0} қайта іске қосу қажет",
- "Shows": "Көрсетімдер",
- "Songs": "Әуендер",
- "StartupEmbyServerIsLoading": "Jellyfin Server жүктелуде. Әрекетті көп ұзамай қайталаңыз.",
- "SubtitleDownloadFailureForItem": "Субтитрлер {0} үшін жүктеліп алынуы сәтсіз",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "{0} үшін субтитрлер жүктеліп алынды",
- "Sync": "Үндестіру",
- "System": "Жүйе",
- "TvShows": "ТД-көрсетімдер",
- "User": "Пайдаланушы",
- "UserCreatedWithName": "Пайдаланушы {0} жасалған",
- "UserDeletedWithName": "Пайдаланушы {0} жойылған",
- "UserDownloadingItemWithValues": "{0} мынаны жүктеп алуда: {1}",
- "UserLockedOutWithName": "Пайдаланушы {0} құрсаулы",
- "UserOfflineFromDevice": "{0} - {1} тарапынан ажыратылған",
- "UserOnlineFromDevice": "{0} - {1} арқылы қосылған",
- "UserPasswordChangedWithName": "Пайдаланушы {0} үшін құпия сөз өзгертілді",
- "UserPolicyUpdatedWithName": "Пайдаланушы {0} үшін саясаттары жаңартылды",
- "UserStartedPlayingItemWithValues": "{0} - {1} ойнатуын {2} бастады",
- "UserStoppedPlayingItemWithValues": "{0} - {1} ойнатуын {2} тоқтатты",
- "ValueHasBeenAddedToLibrary": "{0} (тасығышханаға үстелінді)",
- "ValueSpecialEpisodeName": "Арнайы - {0}",
- "VersionNumber": "Нұсқасы: {0}"
+ "Albums": "Альбомдар",
+ "AppDeviceValues": "Қолданба: {0}, Құрылғы: {1}",
+ "Application": "Қолданба",
+ "Artists": "Орындаушылар",
+ "AuthenticationSucceededWithUserName": "{0} түпнұсқалығын расталуы сәтті",
+ "Books": "Кітаптар",
+ "CameraImageUploadedFrom": "Жаңа сурет {0} камерасынан жүктеп алынды",
+ "Channels": "Арналар",
+ "ChapterNameValue": "{0}-сахна",
+ "Collections": "Жиынтықтар",
+ "DeviceOfflineWithName": "{0} ажыратылған",
+ "DeviceOnlineWithName": "{0} қосылған",
+ "FailedLoginAttemptWithUserName": "{0} тарапынан кіру әрекеті сәтсіз",
+ "Favorites": "Таңдаулылар",
+ "Folders": "Қалталар",
+ "Games": "Ойындар",
+ "Genres": "Жанрлар",
+ "HeaderAlbumArtists": "Альбом орындаушылары",
+ "HeaderCameraUploads": "Камерадан жүктелгендер",
+ "HeaderContinueWatching": "Қарауды жалғастыру",
+ "HeaderFavoriteAlbums": "Таңдаулы альбомдар",
+ "HeaderFavoriteArtists": "Таңдаулы орындаушылар",
+ "HeaderFavoriteEpisodes": "Таңдаулы бөлімдер",
+ "HeaderFavoriteShows": "Таңдаулы көрсетімдер",
+ "HeaderFavoriteSongs": "Таңдаулы әуендер",
+ "HeaderLiveTV": "Эфир",
+ "HeaderNextUp": "Кезекті",
+ "HeaderRecordingGroups": "Жазба топтары",
+ "HomeVideos": "Үйлік бейнелер",
+ "Inherit": "Мұраға иелену",
+ "ItemAddedWithName": "{0} тасығышханаға үстелінді",
+ "ItemRemovedWithName": "{0} тасығышханадан аласталды",
+ "LabelIpAddressValue": "IP-мекенжайы: {0}",
+ "LabelRunningTimeValue": "Іске қосылу уақыты: {0}",
+ "Latest": "Ең кейінгі",
+ "MessageApplicationUpdated": "Jellyfin Server жаңартылды.",
+ "MessageApplicationUpdatedTo": "Jellyfin Server {0} үшін жаңартылды",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Сервер теңшелімі ({0} бөлімі) жаңартылды",
+ "MessageServerConfigurationUpdated": "Сервер теңшелімі жаңартылды",
+ "MixedContent": "Аралас мазмұн",
+ "Movies": "Фильмдер",
+ "Music": "Музыка",
+ "MusicVideos": "Музыкалық бейнелер",
+ "NameInstallFailed": "{0} орнатылуы сәтсіз",
+ "NameSeasonNumber": "{0}-маусым",
+ "NameSeasonUnknown": "Белгісіз маусым",
+ "NewVersionIsAvailable": "Жаңа Jellyfin Server нұсқасы жүктеп алуға қолжетімді.",
+ "NotificationOptionApplicationUpdateAvailable": "Қолданба жаңартуы қолжетімді",
+ "NotificationOptionApplicationUpdateInstalled": "Қолданба жаңартуы орнатылды",
+ "NotificationOptionAudioPlayback": "Дыбыс ойнатуы басталды",
+ "NotificationOptionAudioPlaybackStopped": "Дыбыс ойнатуы тоқтатылды",
+ "NotificationOptionCameraImageUploaded": "Камерадан фотосурет кері қотарылған",
+ "NotificationOptionGamePlayback": "Ойын ойнатуы басталды",
+ "NotificationOptionGamePlaybackStopped": "Ойын ойнатуы тоқтатылды",
+ "NotificationOptionInstallationFailed": "Орнату сәтсіздігі",
+ "NotificationOptionNewLibraryContent": "Жаңа мазмұн үстелген",
+ "NotificationOptionPluginError": "Плагин сәтсіздігі",
+ "NotificationOptionPluginInstalled": "Плагин орнатылды",
+ "NotificationOptionPluginUninstalled": "Плагин орнатуы болдырылмады",
+ "NotificationOptionPluginUpdateInstalled": "Плагин жаңартуы орнатылды",
+ "NotificationOptionServerRestartRequired": "Серверді қайта іске қосу қажет",
+ "NotificationOptionTaskFailed": "Жоспарлаған тапсырма сәтсіздігі",
+ "NotificationOptionUserLockedOut": "Пайдаланушы құрсаулы",
+ "NotificationOptionVideoPlayback": "Бейне ойнатуы басталды",
+ "NotificationOptionVideoPlaybackStopped": "Бейне ойнатуы тоқтатылды",
+ "Photos": "Фотосуреттер",
+ "Playlists": "Ойнату тізімдері",
+ "Plugin": "Плагин",
+ "PluginInstalledWithName": "{0} орнатылды",
+ "PluginUninstalledWithName": "{0} жойылды",
+ "PluginUpdatedWithName": "{0} жаңартылды",
+ "ProviderValue": "Жеткізуші: {0}",
+ "ScheduledTaskFailedWithName": "{0} сәтсіз",
+ "ScheduledTaskStartedWithName": "{0} іске қосылды",
+ "ServerNameNeedsToBeRestarted": "{0} қайта іске қосу қажет",
+ "Shows": "Көрсетімдер",
+ "Songs": "Әуендер",
+ "StartupEmbyServerIsLoading": "Jellyfin Server жүктелуде. Әрекетті көп ұзамай қайталаңыз.",
+ "SubtitleDownloadFailureForItem": "Субтитрлер {0} үшін жүктеліп алынуы сәтсіз",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "{0} үшін субтитрлер жүктеліп алынды",
+ "Sync": "Үндестіру",
+ "System": "Жүйе",
+ "TvShows": "ТД-көрсетімдер",
+ "User": "Пайдаланушы",
+ "UserCreatedWithName": "Пайдаланушы {0} жасалған",
+ "UserDeletedWithName": "Пайдаланушы {0} жойылған",
+ "UserDownloadingItemWithValues": "{0} мынаны жүктеп алуда: {1}",
+ "UserLockedOutWithName": "Пайдаланушы {0} құрсаулы",
+ "UserOfflineFromDevice": "{0} - {1} тарапынан ажыратылған",
+ "UserOnlineFromDevice": "{0} - {1} арқылы қосылған",
+ "UserPasswordChangedWithName": "Пайдаланушы {0} үшін құпия сөз өзгертілді",
+ "UserPolicyUpdatedWithName": "Пайдаланушы {0} үшін саясаттары жаңартылды",
+ "UserStartedPlayingItemWithValues": "{0} - {1} ойнатуын {2} бастады",
+ "UserStoppedPlayingItemWithValues": "{0} - {1} ойнатуын {2} тоқтатты",
+ "ValueHasBeenAddedToLibrary": "{0} (тасығышханаға үстелінді)",
+ "ValueSpecialEpisodeName": "Арнайы - {0}",
+ "VersionNumber": "Нұсқасы: {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/ko.json b/Emby.Server.Implementations/Localization/Core/ko.json
index ec7785619..04fc52d6e 100644
--- a/Emby.Server.Implementations/Localization/Core/ko.json
+++ b/Emby.Server.Implementations/Localization/Core/ko.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "앨범 아티스트",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "계속 시청하기",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "즐겨찾는 쇼",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin 서버를 불러오고 있습니다. 잠시후 다시시도 해주세요.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "앨범 아티스트",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "계속 시청하기",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "즐겨찾는 쇼",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin 서버를 불러오고 있습니다. 잠시후 다시시도 해주세요.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/lt-LT.json b/Emby.Server.Implementations/Localization/Core/lt-LT.json
index bd362c493..653565db6 100644
--- a/Emby.Server.Implementations/Localization/Core/lt-LT.json
+++ b/Emby.Server.Implementations/Localization/Core/lt-LT.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Žanrai",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Žiūrėti toliau",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Filmai",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sinchronizuoti",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Ypatinga - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Žanrai",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Žiūrėti toliau",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Filmai",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sinchronizuoti",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Ypatinga - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/ms.json b/Emby.Server.Implementations/Localization/Core/ms.json
index ae74d6f7e..aaaf09788 100644
--- a/Emby.Server.Implementations/Localization/Core/ms.json
+++ b/Emby.Server.Implementations/Localization/Core/ms.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/nb.json b/Emby.Server.Implementations/Localization/Core/nb.json
index 779b508c4..ed63aa29c 100644
--- a/Emby.Server.Implementations/Localization/Core/nb.json
+++ b/Emby.Server.Implementations/Localization/Core/nb.json
@@ -1,100 +1,100 @@
{
- "Albums": "Album",
- "AppDeviceValues": "App:{0}, Enhet {1}",
- "Application": "Applikasjon",
- "Artists": "Artister",
- "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert",
- "Books": "Bøker",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanaler",
- "ChapterNameValue": "Kapittel {0}",
- "Collections": "Samlinger",
- "DeviceOfflineWithName": "{0} har koblet fra",
- "DeviceOnlineWithName": "{0} er tilkoblet",
- "FailedLoginAttemptWithUserName": "Mislykket påloggingsforsøk fra {0}",
- "Favorites": "Favoritter",
- "Folders": "Mapper",
- "Games": "Spill",
- "Genres": "Sjanger",
- "HeaderAlbumArtists": "Albumartist",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Forsett og see på",
- "HeaderFavoriteAlbums": "Favoritt albumer",
- "HeaderFavoriteArtists": "Favorittartister",
- "HeaderFavoriteEpisodes": "Favoritt episode",
- "HeaderFavoriteShows": "Favorittserier",
- "HeaderFavoriteSongs": "Favorittsanger",
- "HeaderLiveTV": "Direkte TV",
- "HeaderNextUp": "Neste",
- "HeaderRecordingGroups": "Opptak Grupper",
- "HomeVideos": "Hjemmelaget filmer",
- "Inherit": "Arve",
- "ItemAddedWithName": "{0} ble lagt til i biblioteket",
- "ItemRemovedWithName": "{0} ble fjernet fra biblioteket",
- "LabelIpAddressValue": "IP adresse: {0}",
- "LabelRunningTimeValue": "Løpetid {0}",
- "Latest": "Siste",
- "MessageApplicationUpdated": "Jellyfin server har blitt oppdatert",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert",
- "MessageServerConfigurationUpdated": "Server konfigurasjon er oppdatert",
- "MixedContent": "Blandet innhold",
- "Movies": "Filmer",
- "Music": "Musikk",
- "MusicVideos": "Musikkvideoer",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Sesong {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig",
- "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.",
- "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet",
- "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet",
- "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp",
- "NotificationOptionGamePlayback": "Spill avspillingen startet",
- "NotificationOptionGamePlaybackStopped": "Filmer",
- "NotificationOptionInstallationFailed": "Installasjon feil",
- "NotificationOptionNewLibraryContent": "Ny innhold er lagt til",
- "NotificationOptionPluginError": "Plugin feil",
- "NotificationOptionPluginInstalled": "Plugin installert",
- "NotificationOptionPluginUninstalled": "Plugin avinstallert",
- "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert",
- "NotificationOptionServerRestartRequired": "Server omstart er nødvendig",
- "NotificationOptionTaskFailed": "Feil under utføring av planlagt oppgaver",
- "NotificationOptionUserLockedOut": "Bruker er utestengt",
- "NotificationOptionVideoPlayback": "Video tilbakespilling startet",
- "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet",
- "Photos": "BIlder",
- "Playlists": "Spilleliste",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} ble installert",
- "PluginUninstalledWithName": "{0} ble avinstallert",
- "PluginUpdatedWithName": "{0} ble oppdatert",
- "ProviderValue": "Leverandører: {0}",
- "ScheduledTaskFailedWithName": "{0} Mislykkes",
- "ScheduledTaskStartedWithName": "{0} Startet",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Programmer",
- "Songs": "Sanger",
- "StartupEmbyServerIsLoading": "Jellyfin server laster. Prøv igjen snart.",
- "SubtitleDownloadFailureForItem": "En feil oppstå under nedlasting av undertekster for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}",
- "Sync": "Synk",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "Bruker",
- "UserCreatedWithName": "Bruker {0} er opprettet",
- "UserDeletedWithName": "Bruker {0} har blitt slettet",
- "UserDownloadingItemWithValues": "{0} laster ned {1}",
- "UserLockedOutWithName": "Bruker {0} er blitt utestengt",
- "UserOfflineFromDevice": "{0} har koblet fra {1}",
- "UserOnlineFromDevice": "{0} er tilkoblet fra {1}",
- "UserPasswordChangedWithName": "Passordet for {0} er oppdatert",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}",
- "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Spesial - {0}",
- "VersionNumber": "Versjon {0}"
+ "Albums": "Album",
+ "AppDeviceValues": "App:{0}, Enhet {1}",
+ "Application": "Applikasjon",
+ "Artists": "Artister",
+ "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert",
+ "Books": "Bøker",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanaler",
+ "ChapterNameValue": "Kapittel {0}",
+ "Collections": "Samlinger",
+ "DeviceOfflineWithName": "{0} har koblet fra",
+ "DeviceOnlineWithName": "{0} er tilkoblet",
+ "FailedLoginAttemptWithUserName": "Mislykket påloggingsforsøk fra {0}",
+ "Favorites": "Favoritter",
+ "Folders": "Mapper",
+ "Games": "Spill",
+ "Genres": "Sjanger",
+ "HeaderAlbumArtists": "Albumartist",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Forsett og see på",
+ "HeaderFavoriteAlbums": "Favoritt albumer",
+ "HeaderFavoriteArtists": "Favorittartister",
+ "HeaderFavoriteEpisodes": "Favoritt episode",
+ "HeaderFavoriteShows": "Favorittserier",
+ "HeaderFavoriteSongs": "Favorittsanger",
+ "HeaderLiveTV": "Direkte TV",
+ "HeaderNextUp": "Neste",
+ "HeaderRecordingGroups": "Opptak Grupper",
+ "HomeVideos": "Hjemmelaget filmer",
+ "Inherit": "Arve",
+ "ItemAddedWithName": "{0} ble lagt til i biblioteket",
+ "ItemRemovedWithName": "{0} ble fjernet fra biblioteket",
+ "LabelIpAddressValue": "IP adresse: {0}",
+ "LabelRunningTimeValue": "Løpetid {0}",
+ "Latest": "Siste",
+ "MessageApplicationUpdated": "Jellyfin server har blitt oppdatert",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert",
+ "MessageServerConfigurationUpdated": "Server konfigurasjon er oppdatert",
+ "MixedContent": "Blandet innhold",
+ "Movies": "Filmer",
+ "Music": "Musikk",
+ "MusicVideos": "Musikkvideoer",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Sesong {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig",
+ "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.",
+ "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet",
+ "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet",
+ "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp",
+ "NotificationOptionGamePlayback": "Spill avspillingen startet",
+ "NotificationOptionGamePlaybackStopped": "Filmer",
+ "NotificationOptionInstallationFailed": "Installasjon feil",
+ "NotificationOptionNewLibraryContent": "Ny innhold er lagt til",
+ "NotificationOptionPluginError": "Plugin feil",
+ "NotificationOptionPluginInstalled": "Plugin installert",
+ "NotificationOptionPluginUninstalled": "Plugin avinstallert",
+ "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert",
+ "NotificationOptionServerRestartRequired": "Server omstart er nødvendig",
+ "NotificationOptionTaskFailed": "Feil under utføring av planlagt oppgaver",
+ "NotificationOptionUserLockedOut": "Bruker er utestengt",
+ "NotificationOptionVideoPlayback": "Video tilbakespilling startet",
+ "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet",
+ "Photos": "BIlder",
+ "Playlists": "Spilleliste",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} ble installert",
+ "PluginUninstalledWithName": "{0} ble avinstallert",
+ "PluginUpdatedWithName": "{0} ble oppdatert",
+ "ProviderValue": "Leverandører: {0}",
+ "ScheduledTaskFailedWithName": "{0} Mislykkes",
+ "ScheduledTaskStartedWithName": "{0} Startet",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Programmer",
+ "Songs": "Sanger",
+ "StartupEmbyServerIsLoading": "Jellyfin server laster. Prøv igjen snart.",
+ "SubtitleDownloadFailureForItem": "En feil oppstå under nedlasting av undertekster for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}",
+ "Sync": "Synk",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "Bruker",
+ "UserCreatedWithName": "Bruker {0} er opprettet",
+ "UserDeletedWithName": "Bruker {0} har blitt slettet",
+ "UserDownloadingItemWithValues": "{0} laster ned {1}",
+ "UserLockedOutWithName": "Bruker {0} er blitt utestengt",
+ "UserOfflineFromDevice": "{0} har koblet fra {1}",
+ "UserOnlineFromDevice": "{0} er tilkoblet fra {1}",
+ "UserPasswordChangedWithName": "Passordet for {0} er oppdatert",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}",
+ "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Spesial - {0}",
+ "VersionNumber": "Versjon {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json
index 67529ccd9..7b8c8765e 100644
--- a/Emby.Server.Implementations/Localization/Core/nl.json
+++ b/Emby.Server.Implementations/Localization/Core/nl.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Apparaat: {1}",
- "Application": "Toepassing",
- "Artists": "Artiesten",
- "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
- "Books": "Boeken",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanalen",
- "ChapterNameValue": "Hoofdstuk {0}",
- "Collections": "Collecties",
- "DeviceOfflineWithName": "{0} is losgekoppeld",
- "DeviceOnlineWithName": "{0} is verbonden",
- "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}",
- "Favorites": "Favorieten",
- "Folders": "Mappen",
- "Games": "Spellen",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album artiesten",
- "HeaderCameraUploads": "Camera uploads",
- "HeaderContinueWatching": "Kijken hervatten",
- "HeaderFavoriteAlbums": "Favoriete albums",
- "HeaderFavoriteArtists": "Favoriete artiesten",
- "HeaderFavoriteEpisodes": "Favoriete afleveringen",
- "HeaderFavoriteShows": "Favoriete shows",
- "HeaderFavoriteSongs": "Favoriete titels",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Volgende",
- "HeaderRecordingGroups": "Opnamegroepen",
- "HomeVideos": "Thuis video's",
- "Inherit": "Overerven",
- "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek",
- "ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek",
- "LabelIpAddressValue": "IP adres: {0}",
- "LabelRunningTimeValue": "Looptijd: {0}",
- "Latest": "Nieuwste",
- "MessageApplicationUpdated": "Jellyfin Server is bijgewerkt",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt",
- "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt",
- "MixedContent": "Gemengde inhoud",
- "Movies": "Films",
- "Music": "Muziek",
- "MusicVideos": "Muziekvideo's",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Seizoen {0}",
- "NameSeasonUnknown": "Seizoen onbekend",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar",
- "NotificationOptionApplicationUpdateInstalled": "Programma-update geïnstalleerd",
- "NotificationOptionAudioPlayback": "Geluid gestart",
- "NotificationOptionAudioPlaybackStopped": "Geluid gestopt",
- "NotificationOptionCameraImageUploaded": "Camera afbeelding geüpload",
- "NotificationOptionGamePlayback": "Spel gestart",
- "NotificationOptionGamePlaybackStopped": "Spel gestopt",
- "NotificationOptionInstallationFailed": "Installatie mislukt",
- "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd",
- "NotificationOptionPluginError": "Plug-in fout",
- "NotificationOptionPluginInstalled": "Plug-in geïnstalleerd",
- "NotificationOptionPluginUninstalled": "Plug-in verwijderd",
- "NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd",
- "NotificationOptionServerRestartRequired": "Server herstart nodig",
- "NotificationOptionTaskFailed": "Geplande taak mislukt",
- "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld",
- "NotificationOptionVideoPlayback": "Video gestart",
- "NotificationOptionVideoPlaybackStopped": "Video gestopt",
- "Photos": "Foto's",
- "Playlists": "Afspeellijsten",
- "Plugin": "Plug-in",
- "PluginInstalledWithName": "{0} is geïnstalleerd",
- "PluginUninstalledWithName": "{0} is verwijderd",
- "PluginUpdatedWithName": "{0} is bijgewerkt",
- "ProviderValue": "Aanbieder: {0}",
- "ScheduledTaskFailedWithName": "{0} is mislukt",
- "ScheduledTaskStartedWithName": "{0} is gestart",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Titels",
- "StartupEmbyServerIsLoading": "Jellyfin Server is aan het laden, probeer het later opnieuw.",
- "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload",
- "Sync": "Synchronisatie",
- "System": "Systeem",
- "TvShows": "TV-series",
- "User": "Gebruiker",
- "UserCreatedWithName": "Gebruiker {0} is aangemaakt",
- "UserDeletedWithName": "Gebruiker {0} is verwijderd",
- "UserDownloadingItemWithValues": "{0} download {1}",
- "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld",
- "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken",
- "UserOnlineFromDevice": "{0} heeft verbinding met {1}",
- "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd",
- "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}",
- "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart",
- "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Speciaal - {0}",
- "VersionNumber": "Versie {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Apparaat: {1}",
+ "Application": "Toepassing",
+ "Artists": "Artiesten",
+ "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
+ "Books": "Boeken",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanalen",
+ "ChapterNameValue": "Hoofdstuk {0}",
+ "Collections": "Collecties",
+ "DeviceOfflineWithName": "{0} is losgekoppeld",
+ "DeviceOnlineWithName": "{0} is verbonden",
+ "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}",
+ "Favorites": "Favorieten",
+ "Folders": "Mappen",
+ "Games": "Spellen",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album artiesten",
+ "HeaderCameraUploads": "Camera uploads",
+ "HeaderContinueWatching": "Kijken hervatten",
+ "HeaderFavoriteAlbums": "Favoriete albums",
+ "HeaderFavoriteArtists": "Favoriete artiesten",
+ "HeaderFavoriteEpisodes": "Favoriete afleveringen",
+ "HeaderFavoriteShows": "Favoriete shows",
+ "HeaderFavoriteSongs": "Favoriete titels",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Volgende",
+ "HeaderRecordingGroups": "Opnamegroepen",
+ "HomeVideos": "Thuis video's",
+ "Inherit": "Overerven",
+ "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek",
+ "ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek",
+ "LabelIpAddressValue": "IP adres: {0}",
+ "LabelRunningTimeValue": "Looptijd: {0}",
+ "Latest": "Nieuwste",
+ "MessageApplicationUpdated": "Jellyfin Server is bijgewerkt",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt",
+ "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt",
+ "MixedContent": "Gemengde inhoud",
+ "Movies": "Films",
+ "Music": "Muziek",
+ "MusicVideos": "Muziekvideo's",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Seizoen {0}",
+ "NameSeasonUnknown": "Seizoen onbekend",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar",
+ "NotificationOptionApplicationUpdateInstalled": "Programma-update geïnstalleerd",
+ "NotificationOptionAudioPlayback": "Geluid gestart",
+ "NotificationOptionAudioPlaybackStopped": "Geluid gestopt",
+ "NotificationOptionCameraImageUploaded": "Camera afbeelding geüpload",
+ "NotificationOptionGamePlayback": "Spel gestart",
+ "NotificationOptionGamePlaybackStopped": "Spel gestopt",
+ "NotificationOptionInstallationFailed": "Installatie mislukt",
+ "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd",
+ "NotificationOptionPluginError": "Plug-in fout",
+ "NotificationOptionPluginInstalled": "Plug-in geïnstalleerd",
+ "NotificationOptionPluginUninstalled": "Plug-in verwijderd",
+ "NotificationOptionPluginUpdateInstalled": "Plug-in-update geïnstalleerd",
+ "NotificationOptionServerRestartRequired": "Server herstart nodig",
+ "NotificationOptionTaskFailed": "Geplande taak mislukt",
+ "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld",
+ "NotificationOptionVideoPlayback": "Video gestart",
+ "NotificationOptionVideoPlaybackStopped": "Video gestopt",
+ "Photos": "Foto's",
+ "Playlists": "Afspeellijsten",
+ "Plugin": "Plug-in",
+ "PluginInstalledWithName": "{0} is geïnstalleerd",
+ "PluginUninstalledWithName": "{0} is verwijderd",
+ "PluginUpdatedWithName": "{0} is bijgewerkt",
+ "ProviderValue": "Aanbieder: {0}",
+ "ScheduledTaskFailedWithName": "{0} is mislukt",
+ "ScheduledTaskStartedWithName": "{0} is gestart",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Titels",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is aan het laden, probeer het later opnieuw.",
+ "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload",
+ "Sync": "Synchronisatie",
+ "System": "Systeem",
+ "TvShows": "TV-series",
+ "User": "Gebruiker",
+ "UserCreatedWithName": "Gebruiker {0} is aangemaakt",
+ "UserDeletedWithName": "Gebruiker {0} is verwijderd",
+ "UserDownloadingItemWithValues": "{0} download {1}",
+ "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld",
+ "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken",
+ "UserOnlineFromDevice": "{0} heeft verbinding met {1}",
+ "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd",
+ "UserPolicyUpdatedWithName": "Gebruikersbeleid gewijzigd voor {0}",
+ "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart",
+ "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Speciaal - {0}",
+ "VersionNumber": "Versie {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/pl.json b/Emby.Server.Implementations/Localization/Core/pl.json
index 82ee1becd..5aefa740b 100644
--- a/Emby.Server.Implementations/Localization/Core/pl.json
+++ b/Emby.Server.Implementations/Localization/Core/pl.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albumy",
- "AppDeviceValues": "Aplikacja: {0}, Urządzenie: {1}",
- "Application": "Aplikacja",
- "Artists": "Wykonawcy",
- "AuthenticationSucceededWithUserName": "{0} został pomyślnie uwierzytelniony",
- "Books": "Książki",
- "CameraImageUploadedFrom": "Nowy obraz został przekazany z {0}",
- "Channels": "Kanały",
- "ChapterNameValue": "Rozdział {0}",
- "Collections": "Kolekcje",
- "DeviceOfflineWithName": "{0} został rozłączony",
- "DeviceOnlineWithName": "{0} połączył się",
- "FailedLoginAttemptWithUserName": "Próba logowania przez {0} zakończona niepowodzeniem",
- "Favorites": "Ulubione",
- "Folders": "Foldery",
- "Games": "Gry",
- "Genres": "Gatunki",
- "HeaderAlbumArtists": "Wykonawcy albumów",
- "HeaderCameraUploads": "Przekazane obrazy",
- "HeaderContinueWatching": "Kontynuuj odtwarzanie",
- "HeaderFavoriteAlbums": "Albumy ulubione",
- "HeaderFavoriteArtists": "Wykonawcy ulubieni",
- "HeaderFavoriteEpisodes": "Odcinki ulubione",
- "HeaderFavoriteShows": "Seriale ulubione",
- "HeaderFavoriteSongs": "Utwory ulubione",
- "HeaderLiveTV": "Telewizja",
- "HeaderNextUp": "Do obejrzenia",
- "HeaderRecordingGroups": "Grupy nagrań",
- "HomeVideos": "Nagrania prywatne",
- "Inherit": "Dziedzicz",
- "ItemAddedWithName": "{0} zostało dodane do biblioteki",
- "ItemRemovedWithName": "{0} zostało usunięte z biblioteki",
- "LabelIpAddressValue": "Adres IP: {0}",
- "LabelRunningTimeValue": "Czas trwania: {0}",
- "Latest": "Ostatnio dodane",
- "MessageApplicationUpdated": "Serwer Jellyfin został zaktualizowany",
- "MessageApplicationUpdatedTo": "Serwer Jellyfin został zaktualizowany do wersji {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera została zaktualizowana",
- "MessageServerConfigurationUpdated": "Konfiguracja serwera została zaktualizowana",
- "MixedContent": "Zawartość mieszana",
- "Movies": "Filmy",
- "Music": "Muzyka",
- "MusicVideos": "Teledyski",
- "NameInstallFailed": "Instalacja {0} nieudana.",
- "NameSeasonNumber": "Sezon {0}",
- "NameSeasonUnknown": "Sezon nieznany",
- "NewVersionIsAvailable": "Nowa wersja serwera Jellyfin jest dostępna do pobrania.",
- "NotificationOptionApplicationUpdateAvailable": "Dostępna aktualizacja aplikacji",
- "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizację aplikacji",
- "NotificationOptionAudioPlayback": "Rozpoczęto odtwarzanie muzyki",
- "NotificationOptionAudioPlaybackStopped": "Odtwarzane dźwięku zatrzymane",
- "NotificationOptionCameraImageUploaded": "Przekazano obraz z urządzenia mobilnego",
- "NotificationOptionGamePlayback": "Odtwarzanie gry rozpoczęte",
- "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane",
- "NotificationOptionInstallationFailed": "Niepowodzenie instalacji",
- "NotificationOptionNewLibraryContent": "Dodano nową zawartość",
- "NotificationOptionPluginError": "Awaria wtyczki",
- "NotificationOptionPluginInstalled": "Zainstalowano wtyczkę",
- "NotificationOptionPluginUninstalled": "Odinstalowano wtyczkę",
- "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizację wtyczki",
- "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera",
- "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania",
- "NotificationOptionUserLockedOut": "Użytkownik zablokowany",
- "NotificationOptionVideoPlayback": "Rozpoczęto odtwarzanie wideo",
- "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane",
- "Photos": "Zdjęcia",
- "Playlists": "Listy odtwarzania",
- "Plugin": "Wtyczka",
- "PluginInstalledWithName": "{0} zostało zainstalowane",
- "PluginUninstalledWithName": "{0} odinstalowane",
- "PluginUpdatedWithName": "{0} zaktualizowane",
- "ProviderValue": "Dostawca: {0}",
- "ScheduledTaskFailedWithName": "Nieudane {0}",
- "ScheduledTaskStartedWithName": "Rozpoczęto {0}",
- "ServerNameNeedsToBeRestarted": "{0} wymaga ponownego uruchomienia",
- "Shows": "Seriale",
- "Songs": "Utwory",
- "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Jellyfin. Spróbuj ponownie za chwilę.",
- "SubtitleDownloadFailureForItem": "Pobieranie napisów dla {0} zakończone niepowodzeniem",
- "SubtitleDownloadFailureFromForItem": "Nieudane pobieranie napisów z {0} dla {1}",
- "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}",
- "Sync": "Synchronizacja",
- "System": "System",
- "TvShows": "Seriale",
- "User": "Użytkownik",
- "UserCreatedWithName": "Użytkownik {0} został utworzony",
- "UserDeletedWithName": "Użytkownik {0} został usunięty",
- "UserDownloadingItemWithValues": "{0} pobiera {1}",
- "UserLockedOutWithName": "Użytkownik {0} został zablokowany",
- "UserOfflineFromDevice": "{0} z {1} został rozłączony",
- "UserOnlineFromDevice": "{0} połączył się z {1}",
- "UserPasswordChangedWithName": "Hasło użytkownika {0} zostało zmienione",
- "UserPolicyUpdatedWithName": "Zmieniono zasady użytkowania dla {0}",
- "UserStartedPlayingItemWithValues": "{0} odtwarza {1} na {2}",
- "UserStoppedPlayingItemWithValues": "{0} zakończył odtwarzanie {1} na {2}",
- "ValueHasBeenAddedToLibrary": "{0} został dodany to biblioteki mediów",
- "ValueSpecialEpisodeName": "Specjalne - {0}",
- "VersionNumber": "Wersja {0}"
+ "Albums": "Albumy",
+ "AppDeviceValues": "Aplikacja: {0}, Urządzenie: {1}",
+ "Application": "Aplikacja",
+ "Artists": "Wykonawcy",
+ "AuthenticationSucceededWithUserName": "{0} został pomyślnie uwierzytelniony",
+ "Books": "Książki",
+ "CameraImageUploadedFrom": "Nowy obraz został przekazany z {0}",
+ "Channels": "Kanały",
+ "ChapterNameValue": "Rozdział {0}",
+ "Collections": "Kolekcje",
+ "DeviceOfflineWithName": "{0} został rozłączony",
+ "DeviceOnlineWithName": "{0} połączył się",
+ "FailedLoginAttemptWithUserName": "Próba logowania przez {0} zakończona niepowodzeniem",
+ "Favorites": "Ulubione",
+ "Folders": "Foldery",
+ "Games": "Gry",
+ "Genres": "Gatunki",
+ "HeaderAlbumArtists": "Wykonawcy albumów",
+ "HeaderCameraUploads": "Przekazane obrazy",
+ "HeaderContinueWatching": "Kontynuuj odtwarzanie",
+ "HeaderFavoriteAlbums": "Albumy ulubione",
+ "HeaderFavoriteArtists": "Wykonawcy ulubieni",
+ "HeaderFavoriteEpisodes": "Odcinki ulubione",
+ "HeaderFavoriteShows": "Seriale ulubione",
+ "HeaderFavoriteSongs": "Utwory ulubione",
+ "HeaderLiveTV": "Telewizja",
+ "HeaderNextUp": "Do obejrzenia",
+ "HeaderRecordingGroups": "Grupy nagrań",
+ "HomeVideos": "Nagrania prywatne",
+ "Inherit": "Dziedzicz",
+ "ItemAddedWithName": "{0} zostało dodane do biblioteki",
+ "ItemRemovedWithName": "{0} zostało usunięte z biblioteki",
+ "LabelIpAddressValue": "Adres IP: {0}",
+ "LabelRunningTimeValue": "Czas trwania: {0}",
+ "Latest": "Ostatnio dodane",
+ "MessageApplicationUpdated": "Serwer Jellyfin został zaktualizowany",
+ "MessageApplicationUpdatedTo": "Serwer Jellyfin został zaktualizowany do wersji {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera została zaktualizowana",
+ "MessageServerConfigurationUpdated": "Konfiguracja serwera została zaktualizowana",
+ "MixedContent": "Zawartość mieszana",
+ "Movies": "Filmy",
+ "Music": "Muzyka",
+ "MusicVideos": "Teledyski",
+ "NameInstallFailed": "Instalacja {0} nieudana.",
+ "NameSeasonNumber": "Sezon {0}",
+ "NameSeasonUnknown": "Sezon nieznany",
+ "NewVersionIsAvailable": "Nowa wersja serwera Jellyfin jest dostępna do pobrania.",
+ "NotificationOptionApplicationUpdateAvailable": "Dostępna aktualizacja aplikacji",
+ "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizację aplikacji",
+ "NotificationOptionAudioPlayback": "Rozpoczęto odtwarzanie muzyki",
+ "NotificationOptionAudioPlaybackStopped": "Odtwarzane dźwięku zatrzymane",
+ "NotificationOptionCameraImageUploaded": "Przekazano obraz z urządzenia mobilnego",
+ "NotificationOptionGamePlayback": "Odtwarzanie gry rozpoczęte",
+ "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane",
+ "NotificationOptionInstallationFailed": "Niepowodzenie instalacji",
+ "NotificationOptionNewLibraryContent": "Dodano nową zawartość",
+ "NotificationOptionPluginError": "Awaria wtyczki",
+ "NotificationOptionPluginInstalled": "Zainstalowano wtyczkę",
+ "NotificationOptionPluginUninstalled": "Odinstalowano wtyczkę",
+ "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizację wtyczki",
+ "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera",
+ "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania",
+ "NotificationOptionUserLockedOut": "Użytkownik zablokowany",
+ "NotificationOptionVideoPlayback": "Rozpoczęto odtwarzanie wideo",
+ "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane",
+ "Photos": "Zdjęcia",
+ "Playlists": "Listy odtwarzania",
+ "Plugin": "Wtyczka",
+ "PluginInstalledWithName": "{0} zostało zainstalowane",
+ "PluginUninstalledWithName": "{0} odinstalowane",
+ "PluginUpdatedWithName": "{0} zaktualizowane",
+ "ProviderValue": "Dostawca: {0}",
+ "ScheduledTaskFailedWithName": "Nieudane {0}",
+ "ScheduledTaskStartedWithName": "Rozpoczęto {0}",
+ "ServerNameNeedsToBeRestarted": "{0} wymaga ponownego uruchomienia",
+ "Shows": "Seriale",
+ "Songs": "Utwory",
+ "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Jellyfin. Spróbuj ponownie za chwilę.",
+ "SubtitleDownloadFailureForItem": "Pobieranie napisów dla {0} zakończone niepowodzeniem",
+ "SubtitleDownloadFailureFromForItem": "Nieudane pobieranie napisów z {0} dla {1}",
+ "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}",
+ "Sync": "Synchronizacja",
+ "System": "System",
+ "TvShows": "Seriale",
+ "User": "Użytkownik",
+ "UserCreatedWithName": "Użytkownik {0} został utworzony",
+ "UserDeletedWithName": "Użytkownik {0} został usunięty",
+ "UserDownloadingItemWithValues": "{0} pobiera {1}",
+ "UserLockedOutWithName": "Użytkownik {0} został zablokowany",
+ "UserOfflineFromDevice": "{0} z {1} został rozłączony",
+ "UserOnlineFromDevice": "{0} połączył się z {1}",
+ "UserPasswordChangedWithName": "Hasło użytkownika {0} zostało zmienione",
+ "UserPolicyUpdatedWithName": "Zmieniono zasady użytkowania dla {0}",
+ "UserStartedPlayingItemWithValues": "{0} odtwarza {1} na {2}",
+ "UserStoppedPlayingItemWithValues": "{0} zakończył odtwarzanie {1} na {2}",
+ "ValueHasBeenAddedToLibrary": "{0} został dodany to biblioteki mediów",
+ "ValueSpecialEpisodeName": "Specjalne - {0}",
+ "VersionNumber": "Wersja {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/pt-BR.json b/Emby.Server.Implementations/Localization/Core/pt-BR.json
index 84c29174b..9ae25d3ac 100644
--- a/Emby.Server.Implementations/Localization/Core/pt-BR.json
+++ b/Emby.Server.Implementations/Localization/Core/pt-BR.json
@@ -1,100 +1,100 @@
{
- "Albums": "Álbuns",
- "AppDeviceValues": "App: {0}, Dispositivo: {1}",
- "Application": "Aplicativo",
- "Artists": "Artistas",
- "AuthenticationSucceededWithUserName": "{0} autenticado com sucesso",
- "Books": "Livros",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Canais",
- "ChapterNameValue": "Capítulo {0}",
- "Collections": "Coletâneas",
- "DeviceOfflineWithName": "{0} se desconectou",
- "DeviceOnlineWithName": "{0} está conectado",
- "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}",
- "Favorites": "Favoritos",
- "Folders": "Pastas",
- "Games": "Jogos",
- "Genres": "Gêneros",
- "HeaderAlbumArtists": "Artistas do Álbum",
- "HeaderCameraUploads": "Uploads da Câmera",
- "HeaderContinueWatching": "Continuar Assistindo",
- "HeaderFavoriteAlbums": "Álbuns Favoritos",
- "HeaderFavoriteArtists": "Artistas Favoritos",
- "HeaderFavoriteEpisodes": "Episódios Favoritos",
- "HeaderFavoriteShows": "Séries Favoritas",
- "HeaderFavoriteSongs": "Músicas Favoritas",
- "HeaderLiveTV": "TV ao Vivo",
- "HeaderNextUp": "Próximos",
- "HeaderRecordingGroups": "Grupos de Gravação",
- "HomeVideos": "Vídeos caseiros",
- "Inherit": "Herdar",
- "ItemAddedWithName": "{0} foi adicionado à biblioteca",
- "ItemRemovedWithName": "{0} foi removido da biblioteca",
- "LabelIpAddressValue": "Endereço ip: {0}",
- "LabelRunningTimeValue": "Tempo de execução: {0}",
- "Latest": "Recente",
- "MessageApplicationUpdated": "O servidor Jellyfin foi atualizado",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "A seção {0} da configuração do servidor foi atualizada",
- "MessageServerConfigurationUpdated": "A configuração do servidor foi atualizada",
- "MixedContent": "Conteúdo misto",
- "Movies": "Filmes",
- "Music": "Música",
- "MusicVideos": "Vídeos musicais",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Temporada {0}",
- "NameSeasonUnknown": "Temporada Desconhecida",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Atualização de aplicativo disponível",
- "NotificationOptionApplicationUpdateInstalled": "Atualização de aplicativo instalada",
- "NotificationOptionAudioPlayback": "Reprodução de áudio iniciada",
- "NotificationOptionAudioPlaybackStopped": "Reprodução de áudio parada",
- "NotificationOptionCameraImageUploaded": "Imagem de câmera enviada",
- "NotificationOptionGamePlayback": "Reprodução de jogo iniciada",
- "NotificationOptionGamePlaybackStopped": "Reprodução de jogo parada",
- "NotificationOptionInstallationFailed": "Falha na instalação",
- "NotificationOptionNewLibraryContent": "Novo conteúdo adicionado",
- "NotificationOptionPluginError": "Falha de plugin",
- "NotificationOptionPluginInstalled": "Plugin instalado",
- "NotificationOptionPluginUninstalled": "Plugin desinstalado",
- "NotificationOptionPluginUpdateInstalled": "Atualização de plugin instalada",
- "NotificationOptionServerRestartRequired": "Necessário reiniciar servidor",
- "NotificationOptionTaskFailed": "Falha na tarefa agendada",
- "NotificationOptionUserLockedOut": "Usuário bloqueado",
- "NotificationOptionVideoPlayback": "Reprodução de vídeo iniciada",
- "NotificationOptionVideoPlaybackStopped": "Reprodução de vídeo parada",
- "Photos": "Fotos",
- "Playlists": "Listas de Reprodução",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} foi instalado",
- "PluginUninstalledWithName": "{0} foi desinstalado",
- "PluginUpdatedWithName": "{0} foi atualizado",
- "ProviderValue": "Provedor: {0}",
- "ScheduledTaskFailedWithName": "{0} falhou",
- "ScheduledTaskStartedWithName": "{0} iniciada",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Séries",
- "Songs": "Músicas",
- "StartupEmbyServerIsLoading": "O Servidor Jellyfin está carregando. Por favor tente novamente em breve.",
- "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Legendas baixadas para {0}",
- "Sync": "Sincronizar",
- "System": "Sistema",
- "TvShows": "Séries de TV",
- "User": "Usuário",
- "UserCreatedWithName": "O usuário {0} foi criado",
- "UserDeletedWithName": "O usuário {0} foi excluído",
- "UserDownloadingItemWithValues": "{0} está baixando {1}",
- "UserLockedOutWithName": "Usuário {0} foi bloqueado",
- "UserOfflineFromDevice": "{0} se desconectou de {1}",
- "UserOnlineFromDevice": "{0} está ativo em {1}",
- "UserPasswordChangedWithName": "A senha foi alterada para o usuário {0}",
- "UserPolicyUpdatedWithName": "A política de usuário foi atualizada para {0}",
- "UserStartedPlayingItemWithValues": "{0} iniciou a reprodução de {1}",
- "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Especial - {0}",
- "VersionNumber": "Versão {0}"
+ "Albums": "Álbuns",
+ "AppDeviceValues": "App: {0}, Dispositivo: {1}",
+ "Application": "Aplicativo",
+ "Artists": "Artistas",
+ "AuthenticationSucceededWithUserName": "{0} autenticado com sucesso",
+ "Books": "Livros",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Canais",
+ "ChapterNameValue": "Capítulo {0}",
+ "Collections": "Coletâneas",
+ "DeviceOfflineWithName": "{0} se desconectou",
+ "DeviceOnlineWithName": "{0} está conectado",
+ "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}",
+ "Favorites": "Favoritos",
+ "Folders": "Pastas",
+ "Games": "Jogos",
+ "Genres": "Gêneros",
+ "HeaderAlbumArtists": "Artistas do Álbum",
+ "HeaderCameraUploads": "Uploads da Câmera",
+ "HeaderContinueWatching": "Continuar Assistindo",
+ "HeaderFavoriteAlbums": "Álbuns Favoritos",
+ "HeaderFavoriteArtists": "Artistas Favoritos",
+ "HeaderFavoriteEpisodes": "Episódios Favoritos",
+ "HeaderFavoriteShows": "Séries Favoritas",
+ "HeaderFavoriteSongs": "Músicas Favoritas",
+ "HeaderLiveTV": "TV ao Vivo",
+ "HeaderNextUp": "Próximos",
+ "HeaderRecordingGroups": "Grupos de Gravação",
+ "HomeVideos": "Vídeos caseiros",
+ "Inherit": "Herdar",
+ "ItemAddedWithName": "{0} foi adicionado à biblioteca",
+ "ItemRemovedWithName": "{0} foi removido da biblioteca",
+ "LabelIpAddressValue": "Endereço ip: {0}",
+ "LabelRunningTimeValue": "Tempo de execução: {0}",
+ "Latest": "Recente",
+ "MessageApplicationUpdated": "O servidor Jellyfin foi atualizado",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "A seção {0} da configuração do servidor foi atualizada",
+ "MessageServerConfigurationUpdated": "A configuração do servidor foi atualizada",
+ "MixedContent": "Conteúdo misto",
+ "Movies": "Filmes",
+ "Music": "Música",
+ "MusicVideos": "Vídeos musicais",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Temporada {0}",
+ "NameSeasonUnknown": "Temporada Desconhecida",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Atualização de aplicativo disponível",
+ "NotificationOptionApplicationUpdateInstalled": "Atualização de aplicativo instalada",
+ "NotificationOptionAudioPlayback": "Reprodução de áudio iniciada",
+ "NotificationOptionAudioPlaybackStopped": "Reprodução de áudio parada",
+ "NotificationOptionCameraImageUploaded": "Imagem de câmera enviada",
+ "NotificationOptionGamePlayback": "Reprodução de jogo iniciada",
+ "NotificationOptionGamePlaybackStopped": "Reprodução de jogo parada",
+ "NotificationOptionInstallationFailed": "Falha na instalação",
+ "NotificationOptionNewLibraryContent": "Novo conteúdo adicionado",
+ "NotificationOptionPluginError": "Falha de plugin",
+ "NotificationOptionPluginInstalled": "Plugin instalado",
+ "NotificationOptionPluginUninstalled": "Plugin desinstalado",
+ "NotificationOptionPluginUpdateInstalled": "Atualização de plugin instalada",
+ "NotificationOptionServerRestartRequired": "Necessário reiniciar servidor",
+ "NotificationOptionTaskFailed": "Falha na tarefa agendada",
+ "NotificationOptionUserLockedOut": "Usuário bloqueado",
+ "NotificationOptionVideoPlayback": "Reprodução de vídeo iniciada",
+ "NotificationOptionVideoPlaybackStopped": "Reprodução de vídeo parada",
+ "Photos": "Fotos",
+ "Playlists": "Listas de Reprodução",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} foi instalado",
+ "PluginUninstalledWithName": "{0} foi desinstalado",
+ "PluginUpdatedWithName": "{0} foi atualizado",
+ "ProviderValue": "Provedor: {0}",
+ "ScheduledTaskFailedWithName": "{0} falhou",
+ "ScheduledTaskStartedWithName": "{0} iniciada",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Séries",
+ "Songs": "Músicas",
+ "StartupEmbyServerIsLoading": "O Servidor Jellyfin está carregando. Por favor tente novamente em breve.",
+ "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Legendas baixadas para {0}",
+ "Sync": "Sincronizar",
+ "System": "Sistema",
+ "TvShows": "Séries de TV",
+ "User": "Usuário",
+ "UserCreatedWithName": "O usuário {0} foi criado",
+ "UserDeletedWithName": "O usuário {0} foi excluído",
+ "UserDownloadingItemWithValues": "{0} está baixando {1}",
+ "UserLockedOutWithName": "Usuário {0} foi bloqueado",
+ "UserOfflineFromDevice": "{0} se desconectou de {1}",
+ "UserOnlineFromDevice": "{0} está ativo em {1}",
+ "UserPasswordChangedWithName": "A senha foi alterada para o usuário {0}",
+ "UserPolicyUpdatedWithName": "A política de usuário foi atualizada para {0}",
+ "UserStartedPlayingItemWithValues": "{0} iniciou a reprodução de {1}",
+ "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Especial - {0}",
+ "VersionNumber": "Versão {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json
index 0d3acc9c1..59c25f0e3 100644
--- a/Emby.Server.Implementations/Localization/Core/pt-PT.json
+++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Aplicação",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continuar a ver",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Séries Favoritas",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Especial - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Aplicação",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continuar a ver",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Séries Favoritas",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Especial - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json
index 97216f276..338141294 100644
--- a/Emby.Server.Implementations/Localization/Core/ru.json
+++ b/Emby.Server.Implementations/Localization/Core/ru.json
@@ -1,100 +1,100 @@
{
- "Albums": "Альбомы",
- "AppDeviceValues": "Прил.: {0}, Устр.: {1}",
- "Application": "Приложение",
- "Artists": "Исполнители",
- "AuthenticationSucceededWithUserName": "{0} - авторизация успешна",
- "Books": "Литература",
- "CameraImageUploadedFrom": "Новое фото было выложено с {0}",
- "Channels": "Каналы",
- "ChapterNameValue": "Сцена {0}",
- "Collections": "Коллекции",
- "DeviceOfflineWithName": "{0} - подкл. разъ-но",
- "DeviceOnlineWithName": "{0} - подкл. уст-но",
- "FailedLoginAttemptWithUserName": "{0} - попытка входа неудачна",
- "Favorites": "Избранное",
- "Folders": "Папки",
- "Games": "Игры",
- "Genres": "Жанры",
- "HeaderAlbumArtists": "Исп-ли альбома",
- "HeaderCameraUploads": "Камеры",
- "HeaderContinueWatching": "Продолжение просмотра",
- "HeaderFavoriteAlbums": "Избранные альбомы",
- "HeaderFavoriteArtists": "Избранные исполнители",
- "HeaderFavoriteEpisodes": "Избранные эпизоды",
- "HeaderFavoriteShows": "Избранные передачи",
- "HeaderFavoriteSongs": "Избранные композиции",
- "HeaderLiveTV": "Эфир",
- "HeaderNextUp": "Очередное",
- "HeaderRecordingGroups": "Группы записей",
- "HomeVideos": "Дом. видео",
- "Inherit": "Наследуемое",
- "ItemAddedWithName": "{0} - добавлено в медиатеку",
- "ItemRemovedWithName": "{0} - изъято из медиатеки",
- "LabelIpAddressValue": "IP-адрес: {0}",
- "LabelRunningTimeValue": "Время выполнения: {0}",
- "Latest": "Новейшее",
- "MessageApplicationUpdated": "Jellyfin Server был обновлён",
- "MessageApplicationUpdatedTo": "Jellyfin Server был обновлён до {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Конфиг-ия сервера (раздел {0}) была обновлена",
- "MessageServerConfigurationUpdated": "Конфиг-ия сервера была обновлена",
- "MixedContent": "Смешанное содержание",
- "Movies": "Кино",
- "Music": "Музыка",
- "MusicVideos": "Муз. видео",
- "NameInstallFailed": "Установка {0} неудачна",
- "NameSeasonNumber": "Сезон {0}",
- "NameSeasonUnknown": "Сезон неопознан",
- "NewVersionIsAvailable": "Имеется новая версия Jellyfin Server",
- "NotificationOptionApplicationUpdateAvailable": "Имеется обновление приложения",
- "NotificationOptionApplicationUpdateInstalled": "Обновление приложения установлено",
- "NotificationOptionAudioPlayback": "Воспр-ие аудио зап-но",
- "NotificationOptionAudioPlaybackStopped": "Восп-ие аудио ост-но",
- "NotificationOptionCameraImageUploaded": "Произведена выкладка отснятого с камеры",
- "NotificationOptionGamePlayback": "Воспр-ие игры зап-но",
- "NotificationOptionGamePlaybackStopped": "Восп-ие игры ост-но",
- "NotificationOptionInstallationFailed": "Сбой установки",
- "NotificationOptionNewLibraryContent": "Новое содержание добавлено",
- "NotificationOptionPluginError": "Сбой плагина",
- "NotificationOptionPluginInstalled": "Плагин установлен",
- "NotificationOptionPluginUninstalled": "Плагин удалён",
- "NotificationOptionPluginUpdateInstalled": "Обновление плагина установлено",
- "NotificationOptionServerRestartRequired": "Требуется перезапуск сервера",
- "NotificationOptionTaskFailed": "Сбой назначенной задачи",
- "NotificationOptionUserLockedOut": "Пользователь заблокирован",
- "NotificationOptionVideoPlayback": "Воспр-ие видео зап-но",
- "NotificationOptionVideoPlaybackStopped": "Восп-ие видео ост-но",
- "Photos": "Фото",
- "Playlists": "Плей-листы",
- "Plugin": "Плагин",
- "PluginInstalledWithName": "{0} - было установлено",
- "PluginUninstalledWithName": "{0} - было удалено",
- "PluginUpdatedWithName": "{0} - было обновлено",
- "ProviderValue": "Поставщик: {0}",
- "ScheduledTaskFailedWithName": "{0} - неудачна",
- "ScheduledTaskStartedWithName": "{0} - запущена",
- "ServerNameNeedsToBeRestarted": "Необходим перезапуск {0}",
- "Shows": "Передачи",
- "Songs": "Композиции",
- "StartupEmbyServerIsLoading": "Jellyfin Server загружается. Повторите попытку в ближайшее время.",
- "SubtitleDownloadFailureForItem": "Субтитры к {0} не удалось загрузить",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Субтитры к {0} загружены",
- "Sync": "Синхро",
- "System": "Система",
- "TvShows": "ТВ",
- "User": "Польз-ль",
- "UserCreatedWithName": "Пользователь {0} был создан",
- "UserDeletedWithName": "Пользователь {0} был удалён",
- "UserDownloadingItemWithValues": "{0} загружает {1}",
- "UserLockedOutWithName": "Пользователь {0} был заблокирован",
- "UserOfflineFromDevice": "{0} - подкл. с {1} разъ-но",
- "UserOnlineFromDevice": "{0} - подкл. с {1} уст-но",
- "UserPasswordChangedWithName": "Пароль польз-ля {0} был изменён",
- "UserPolicyUpdatedWithName": "Польз-ие политики {0} были обновлены",
- "UserStartedPlayingItemWithValues": "{0} - воспр. «{1}» на {2}",
- "UserStoppedPlayingItemWithValues": "{0} - воспр. «{1}» ост-но на {2}",
- "ValueHasBeenAddedToLibrary": "{0} (добавлено в медиатеку)",
- "ValueSpecialEpisodeName": "Спецэпизод - {0}",
- "VersionNumber": "Версия {0}"
+ "Albums": "Альбомы",
+ "AppDeviceValues": "Прил.: {0}, Устр.: {1}",
+ "Application": "Приложение",
+ "Artists": "Исполнители",
+ "AuthenticationSucceededWithUserName": "{0} - авторизация успешна",
+ "Books": "Литература",
+ "CameraImageUploadedFrom": "Новое фото было выложено с {0}",
+ "Channels": "Каналы",
+ "ChapterNameValue": "Сцена {0}",
+ "Collections": "Коллекции",
+ "DeviceOfflineWithName": "{0} - подкл. разъ-но",
+ "DeviceOnlineWithName": "{0} - подкл. уст-но",
+ "FailedLoginAttemptWithUserName": "{0} - попытка входа неудачна",
+ "Favorites": "Избранное",
+ "Folders": "Папки",
+ "Games": "Игры",
+ "Genres": "Жанры",
+ "HeaderAlbumArtists": "Исп-ли альбома",
+ "HeaderCameraUploads": "Камеры",
+ "HeaderContinueWatching": "Продолжение просмотра",
+ "HeaderFavoriteAlbums": "Избранные альбомы",
+ "HeaderFavoriteArtists": "Избранные исполнители",
+ "HeaderFavoriteEpisodes": "Избранные эпизоды",
+ "HeaderFavoriteShows": "Избранные передачи",
+ "HeaderFavoriteSongs": "Избранные композиции",
+ "HeaderLiveTV": "Эфир",
+ "HeaderNextUp": "Очередное",
+ "HeaderRecordingGroups": "Группы записей",
+ "HomeVideos": "Дом. видео",
+ "Inherit": "Наследуемое",
+ "ItemAddedWithName": "{0} - добавлено в медиатеку",
+ "ItemRemovedWithName": "{0} - изъято из медиатеки",
+ "LabelIpAddressValue": "IP-адрес: {0}",
+ "LabelRunningTimeValue": "Время выполнения: {0}",
+ "Latest": "Новейшее",
+ "MessageApplicationUpdated": "Jellyfin Server был обновлён",
+ "MessageApplicationUpdatedTo": "Jellyfin Server был обновлён до {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Конфиг-ия сервера (раздел {0}) была обновлена",
+ "MessageServerConfigurationUpdated": "Конфиг-ия сервера была обновлена",
+ "MixedContent": "Смешанное содержание",
+ "Movies": "Кино",
+ "Music": "Музыка",
+ "MusicVideos": "Муз. видео",
+ "NameInstallFailed": "Установка {0} неудачна",
+ "NameSeasonNumber": "Сезон {0}",
+ "NameSeasonUnknown": "Сезон неопознан",
+ "NewVersionIsAvailable": "Имеется новая версия Jellyfin Server",
+ "NotificationOptionApplicationUpdateAvailable": "Имеется обновление приложения",
+ "NotificationOptionApplicationUpdateInstalled": "Обновление приложения установлено",
+ "NotificationOptionAudioPlayback": "Воспр-ие аудио зап-но",
+ "NotificationOptionAudioPlaybackStopped": "Восп-ие аудио ост-но",
+ "NotificationOptionCameraImageUploaded": "Произведена выкладка отснятого с камеры",
+ "NotificationOptionGamePlayback": "Воспр-ие игры зап-но",
+ "NotificationOptionGamePlaybackStopped": "Восп-ие игры ост-но",
+ "NotificationOptionInstallationFailed": "Сбой установки",
+ "NotificationOptionNewLibraryContent": "Новое содержание добавлено",
+ "NotificationOptionPluginError": "Сбой плагина",
+ "NotificationOptionPluginInstalled": "Плагин установлен",
+ "NotificationOptionPluginUninstalled": "Плагин удалён",
+ "NotificationOptionPluginUpdateInstalled": "Обновление плагина установлено",
+ "NotificationOptionServerRestartRequired": "Требуется перезапуск сервера",
+ "NotificationOptionTaskFailed": "Сбой назначенной задачи",
+ "NotificationOptionUserLockedOut": "Пользователь заблокирован",
+ "NotificationOptionVideoPlayback": "Воспр-ие видео зап-но",
+ "NotificationOptionVideoPlaybackStopped": "Восп-ие видео ост-но",
+ "Photos": "Фото",
+ "Playlists": "Плей-листы",
+ "Plugin": "Плагин",
+ "PluginInstalledWithName": "{0} - было установлено",
+ "PluginUninstalledWithName": "{0} - было удалено",
+ "PluginUpdatedWithName": "{0} - было обновлено",
+ "ProviderValue": "Поставщик: {0}",
+ "ScheduledTaskFailedWithName": "{0} - неудачна",
+ "ScheduledTaskStartedWithName": "{0} - запущена",
+ "ServerNameNeedsToBeRestarted": "Необходим перезапуск {0}",
+ "Shows": "Передачи",
+ "Songs": "Композиции",
+ "StartupEmbyServerIsLoading": "Jellyfin Server загружается. Повторите попытку в ближайшее время.",
+ "SubtitleDownloadFailureForItem": "Субтитры к {0} не удалось загрузить",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Субтитры к {0} загружены",
+ "Sync": "Синхро",
+ "System": "Система",
+ "TvShows": "ТВ",
+ "User": "Польз-ль",
+ "UserCreatedWithName": "Пользователь {0} был создан",
+ "UserDeletedWithName": "Пользователь {0} был удалён",
+ "UserDownloadingItemWithValues": "{0} загружает {1}",
+ "UserLockedOutWithName": "Пользователь {0} был заблокирован",
+ "UserOfflineFromDevice": "{0} - подкл. с {1} разъ-но",
+ "UserOnlineFromDevice": "{0} - подкл. с {1} уст-но",
+ "UserPasswordChangedWithName": "Пароль польз-ля {0} был изменён",
+ "UserPolicyUpdatedWithName": "Польз-ие политики {0} были обновлены",
+ "UserStartedPlayingItemWithValues": "{0} - воспр. «{1}» на {2}",
+ "UserStoppedPlayingItemWithValues": "{0} - воспр. «{1}» ост-но на {2}",
+ "ValueHasBeenAddedToLibrary": "{0} (добавлено в медиатеку)",
+ "ValueSpecialEpisodeName": "Спецэпизод - {0}",
+ "VersionNumber": "Версия {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/sk.json b/Emby.Server.Implementations/Localization/Core/sk.json
index ddf690a55..ed0c68952 100644
--- a/Emby.Server.Implementations/Localization/Core/sk.json
+++ b/Emby.Server.Implementations/Localization/Core/sk.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albumy",
- "AppDeviceValues": "Aplikácia: {0}, Zariadenie: {1}",
- "Application": "Aplikácia",
- "Artists": "Umelci",
- "AuthenticationSucceededWithUserName": "{0} úspešne overený",
- "Books": "Knihy",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanály",
- "ChapterNameValue": "Kapitola {0}",
- "Collections": "Zbierky",
- "DeviceOfflineWithName": "{0} je odpojený",
- "DeviceOnlineWithName": "{0} je pripojený",
- "FailedLoginAttemptWithUserName": "Neúspešný pokus o prihlásenie z {0}",
- "Favorites": "Obľúbené",
- "Folders": "Priečinky",
- "Games": "Hry",
- "Genres": "Žánre",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Pokračujte v pozeraní",
- "HeaderFavoriteAlbums": "Obľúbené albumy",
- "HeaderFavoriteArtists": "Obľúbení umelci",
- "HeaderFavoriteEpisodes": "Obľúbené epizódy",
- "HeaderFavoriteShows": "Obľúbené seriály",
- "HeaderFavoriteSongs": "Obľúbené pesničky",
- "HeaderLiveTV": "Živá TV",
- "HeaderNextUp": "Nasleduje",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Domáce videá",
- "Inherit": "Zdediť",
- "ItemAddedWithName": "{0} bol pridaný do knižnice",
- "ItemRemovedWithName": "{0} bol odstránený z knižnice",
- "LabelIpAddressValue": "IP adresa: {0}",
- "LabelRunningTimeValue": "Dĺžka: {0}",
- "Latest": "Najnovšie",
- "MessageApplicationUpdated": "Jellyfin Server bol aktualizovaný",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Sekcia {0} konfigurácie servera bola aktualizovaná",
- "MessageServerConfigurationUpdated": "Konfigurácia servera aktualizovaná",
- "MixedContent": "Zmiešaný obsah",
- "Movies": "Filmy",
- "Music": "Hudba",
- "MusicVideos": "Hudobné videá",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Sezóna {0}",
- "NameSeasonUnknown": "Neznáma sezóna",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Je dostupná aktualizácia aplikácie",
- "NotificationOptionApplicationUpdateInstalled": "Aktualizácia aplikácie nainštalovaná",
- "NotificationOptionAudioPlayback": "Spustené prehrávanie audia",
- "NotificationOptionAudioPlaybackStopped": "Zastavené prehrávanie audia",
- "NotificationOptionCameraImageUploaded": "Nahraný obrázok z fotoaparátu",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Hra ukončená",
- "NotificationOptionInstallationFailed": "Chyba inštalácie",
- "NotificationOptionNewLibraryContent": "Pridaný nový obsah",
- "NotificationOptionPluginError": "Chyba rozšírenia",
- "NotificationOptionPluginInstalled": "Rozšírenie nainštalované",
- "NotificationOptionPluginUninstalled": "Rozšírenie odinštalované",
- "NotificationOptionPluginUpdateInstalled": "Aktualizácia rozšírenia nainštalovaná",
- "NotificationOptionServerRestartRequired": "Vyžaduje sa reštart servera",
- "NotificationOptionTaskFailed": "Naplánovaná úloha zlyhala",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Spustené prehrávanie videa",
- "NotificationOptionVideoPlaybackStopped": "Zastavené prehrávanie videa",
- "Photos": "Fotky",
- "Playlists": "Zoznamy skladieb",
- "Plugin": "Rozšírenie",
- "PluginInstalledWithName": "{0} bol nainštalovaný",
- "PluginUninstalledWithName": "{0} bol odinštalovaný",
- "PluginUpdatedWithName": "{0} bol aktualizovaný",
- "ProviderValue": "Poskytovateľ: {0}",
- "ScheduledTaskFailedWithName": "{0} zlyhalo",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Series",
- "Songs": "Skladby",
- "StartupEmbyServerIsLoading": "Jellyfin Server sa spúšťa. Skúste to prosím o chvíľu znova.",
- "SubtitleDownloadFailureForItem": "Sťahovanie titulkov pre {0} zlyhalo",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Titulky pre {0} stiahnuté",
- "Sync": "Sync",
- "System": "Systém",
- "TvShows": "TV Shows",
- "User": "Používateľ",
- "UserCreatedWithName": "Používateľ {0} bol vytvorený",
- "UserDeletedWithName": "Používateľ {0} bol vymazaný",
- "UserDownloadingItemWithValues": "{0} sťahuje {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} sa odpojil od {1}",
- "UserOnlineFromDevice": "{0} je online z {1}",
- "UserPasswordChangedWithName": "Heslo používateľa {0} zmenené",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} spustil prehrávanie {1}",
- "UserStoppedPlayingItemWithValues": "{0} zastavil prehrávanie {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Špeciál - {0}",
- "VersionNumber": "Verzia {0}"
+ "Albums": "Albumy",
+ "AppDeviceValues": "Aplikácia: {0}, Zariadenie: {1}",
+ "Application": "Aplikácia",
+ "Artists": "Umelci",
+ "AuthenticationSucceededWithUserName": "{0} úspešne overený",
+ "Books": "Knihy",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanály",
+ "ChapterNameValue": "Kapitola {0}",
+ "Collections": "Zbierky",
+ "DeviceOfflineWithName": "{0} je odpojený",
+ "DeviceOnlineWithName": "{0} je pripojený",
+ "FailedLoginAttemptWithUserName": "Neúspešný pokus o prihlásenie z {0}",
+ "Favorites": "Obľúbené",
+ "Folders": "Priečinky",
+ "Games": "Hry",
+ "Genres": "Žánre",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Pokračujte v pozeraní",
+ "HeaderFavoriteAlbums": "Obľúbené albumy",
+ "HeaderFavoriteArtists": "Obľúbení umelci",
+ "HeaderFavoriteEpisodes": "Obľúbené epizódy",
+ "HeaderFavoriteShows": "Obľúbené seriály",
+ "HeaderFavoriteSongs": "Obľúbené pesničky",
+ "HeaderLiveTV": "Živá TV",
+ "HeaderNextUp": "Nasleduje",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Domáce videá",
+ "Inherit": "Zdediť",
+ "ItemAddedWithName": "{0} bol pridaný do knižnice",
+ "ItemRemovedWithName": "{0} bol odstránený z knižnice",
+ "LabelIpAddressValue": "IP adresa: {0}",
+ "LabelRunningTimeValue": "Dĺžka: {0}",
+ "Latest": "Najnovšie",
+ "MessageApplicationUpdated": "Jellyfin Server bol aktualizovaný",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Sekcia {0} konfigurácie servera bola aktualizovaná",
+ "MessageServerConfigurationUpdated": "Konfigurácia servera aktualizovaná",
+ "MixedContent": "Zmiešaný obsah",
+ "Movies": "Filmy",
+ "Music": "Hudba",
+ "MusicVideos": "Hudobné videá",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Sezóna {0}",
+ "NameSeasonUnknown": "Neznáma sezóna",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Je dostupná aktualizácia aplikácie",
+ "NotificationOptionApplicationUpdateInstalled": "Aktualizácia aplikácie nainštalovaná",
+ "NotificationOptionAudioPlayback": "Spustené prehrávanie audia",
+ "NotificationOptionAudioPlaybackStopped": "Zastavené prehrávanie audia",
+ "NotificationOptionCameraImageUploaded": "Nahraný obrázok z fotoaparátu",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Hra ukončená",
+ "NotificationOptionInstallationFailed": "Chyba inštalácie",
+ "NotificationOptionNewLibraryContent": "Pridaný nový obsah",
+ "NotificationOptionPluginError": "Chyba rozšírenia",
+ "NotificationOptionPluginInstalled": "Rozšírenie nainštalované",
+ "NotificationOptionPluginUninstalled": "Rozšírenie odinštalované",
+ "NotificationOptionPluginUpdateInstalled": "Aktualizácia rozšírenia nainštalovaná",
+ "NotificationOptionServerRestartRequired": "Vyžaduje sa reštart servera",
+ "NotificationOptionTaskFailed": "Naplánovaná úloha zlyhala",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Spustené prehrávanie videa",
+ "NotificationOptionVideoPlaybackStopped": "Zastavené prehrávanie videa",
+ "Photos": "Fotky",
+ "Playlists": "Zoznamy skladieb",
+ "Plugin": "Rozšírenie",
+ "PluginInstalledWithName": "{0} bol nainštalovaný",
+ "PluginUninstalledWithName": "{0} bol odinštalovaný",
+ "PluginUpdatedWithName": "{0} bol aktualizovaný",
+ "ProviderValue": "Poskytovateľ: {0}",
+ "ScheduledTaskFailedWithName": "{0} zlyhalo",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Series",
+ "Songs": "Skladby",
+ "StartupEmbyServerIsLoading": "Jellyfin Server sa spúšťa. Skúste to prosím o chvíľu znova.",
+ "SubtitleDownloadFailureForItem": "Sťahovanie titulkov pre {0} zlyhalo",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Titulky pre {0} stiahnuté",
+ "Sync": "Sync",
+ "System": "Systém",
+ "TvShows": "TV Shows",
+ "User": "Používateľ",
+ "UserCreatedWithName": "Používateľ {0} bol vytvorený",
+ "UserDeletedWithName": "Používateľ {0} bol vymazaný",
+ "UserDownloadingItemWithValues": "{0} sťahuje {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} sa odpojil od {1}",
+ "UserOnlineFromDevice": "{0} je online z {1}",
+ "UserPasswordChangedWithName": "Heslo používateľa {0} zmenené",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} spustil prehrávanie {1}",
+ "UserStoppedPlayingItemWithValues": "{0} zastavil prehrávanie {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Špeciál - {0}",
+ "VersionNumber": "Verzia {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/sl-SI.json b/Emby.Server.Implementations/Localization/Core/sl-SI.json
index cd2076c64..8fe279836 100644
--- a/Emby.Server.Implementations/Localization/Core/sl-SI.json
+++ b/Emby.Server.Implementations/Localization/Core/sl-SI.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Serije",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Serije",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/sv.json b/Emby.Server.Implementations/Localization/Core/sv.json
index f5f52f658..517d648bb 100644
--- a/Emby.Server.Implementations/Localization/Core/sv.json
+++ b/Emby.Server.Implementations/Localization/Core/sv.json
@@ -1,100 +1,100 @@
{
- "Albums": "Album",
- "AppDeviceValues": "App: {0}, Enhet: {1}",
- "Application": "App",
- "Artists": "Artister",
- "AuthenticationSucceededWithUserName": "{0} har autentiserats",
- "Books": "Böcker",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Kanaler",
- "ChapterNameValue": "Kapitel {0}",
- "Collections": "Samlingar",
- "DeviceOfflineWithName": "{0} har tappat anslutningen",
- "DeviceOnlineWithName": "{0} är ansluten",
- "FailedLoginAttemptWithUserName": "Misslyckat inloggningsförsök från {0}",
- "Favorites": "Favoriter",
- "Folders": "Mappar",
- "Games": "Spel",
- "Genres": "Genrer",
- "HeaderAlbumArtists": "Albumartister",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Fortsätt kolla på",
- "HeaderFavoriteAlbums": "Favoritalbum",
- "HeaderFavoriteArtists": "Favoritartister",
- "HeaderFavoriteEpisodes": "Favoritavsnitt",
- "HeaderFavoriteShows": "Favoritserier",
- "HeaderFavoriteSongs": "Favoritlåtar",
- "HeaderLiveTV": "Live-TV",
- "HeaderNextUp": "Nästa på tur",
- "HeaderRecordingGroups": "Inspelningsgrupper",
- "HomeVideos": "Hemvideor",
- "Inherit": "Ärv",
- "ItemAddedWithName": "{0} lades till i biblioteket",
- "ItemRemovedWithName": "{0} togs bort från biblioteket",
- "LabelIpAddressValue": "IP-adress: {0}",
- "LabelRunningTimeValue": "Speltid: {0}",
- "Latest": "Senaste",
- "MessageApplicationUpdated": "Jellyfin Server har uppdaterats",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Serverinställningarna {0} har uppdaterats",
- "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats",
- "MixedContent": "Blandat innehåll",
- "Movies": "Filmer",
- "Music": "Musik",
- "MusicVideos": "Musikvideos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Säsong {0}",
- "NameSeasonUnknown": "Okänd säsong",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillgänglig",
- "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad",
- "NotificationOptionAudioPlayback": "Ljuduppspelning har påbörjats",
- "NotificationOptionAudioPlaybackStopped": "Ljuduppspelning stoppad",
- "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp",
- "NotificationOptionGamePlayback": "Spel har startats",
- "NotificationOptionGamePlaybackStopped": "Spel stoppat",
- "NotificationOptionInstallationFailed": "Fel vid installation",
- "NotificationOptionNewLibraryContent": "Nytt innehåll har lagts till",
- "NotificationOptionPluginError": "Fel uppstod med tillägget",
- "NotificationOptionPluginInstalled": "Tillägg har installerats",
- "NotificationOptionPluginUninstalled": "Tillägg har avinstallerats",
- "NotificationOptionPluginUpdateInstalled": "Tillägg har uppdaterats",
- "NotificationOptionServerRestartRequired": "Servern måste startas om",
- "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats",
- "NotificationOptionUserLockedOut": "Användare har låsts ut",
- "NotificationOptionVideoPlayback": "Videouppspelning har påbörjats",
- "NotificationOptionVideoPlaybackStopped": "Videouppspelning stoppad",
- "Photos": "Bilder",
- "Playlists": "Spellistor",
- "Plugin": "Tillägg",
- "PluginInstalledWithName": "{0} installerades",
- "PluginUninstalledWithName": "{0} avinstallerades",
- "PluginUpdatedWithName": "{0} uppdaterades",
- "ProviderValue": "Källa: {0}",
- "ScheduledTaskFailedWithName": "{0} misslyckades",
- "ScheduledTaskStartedWithName": "{0} startad",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Serier",
- "Songs": "Låtar",
- "StartupEmbyServerIsLoading": "Jellyfin server arbetar. Pröva igen inom kort.",
- "SubtitleDownloadFailureForItem": "Nerladdning av undertexter för {0} misslyckades",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Undertexter har laddats ner till {0}",
- "Sync": "Synk",
- "System": "System",
- "TvShows": "TV-serier",
- "User": "Användare",
- "UserCreatedWithName": "Användaren {0} har skapats",
- "UserDeletedWithName": "Användaren {0} har tagits bort",
- "UserDownloadingItemWithValues": "{0} laddar ner {1}",
- "UserLockedOutWithName": "Användare {0} har låsts ute",
- "UserOfflineFromDevice": "{0} har avbrutit anslutningen från {1}",
- "UserOnlineFromDevice": "{0} är uppkopplad från {1}",
- "UserPasswordChangedWithName": "Lösenordet för {0} har ändrats",
- "UserPolicyUpdatedWithName": "Användarpolicyn har uppdaterats för {0}",
- "UserStartedPlayingItemWithValues": "{0} har börjat spela upp {1}",
- "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Specialavsnitt - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Album",
+ "AppDeviceValues": "App: {0}, Enhet: {1}",
+ "Application": "App",
+ "Artists": "Artister",
+ "AuthenticationSucceededWithUserName": "{0} har autentiserats",
+ "Books": "Böcker",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Kanaler",
+ "ChapterNameValue": "Kapitel {0}",
+ "Collections": "Samlingar",
+ "DeviceOfflineWithName": "{0} har tappat anslutningen",
+ "DeviceOnlineWithName": "{0} är ansluten",
+ "FailedLoginAttemptWithUserName": "Misslyckat inloggningsförsök från {0}",
+ "Favorites": "Favoriter",
+ "Folders": "Mappar",
+ "Games": "Spel",
+ "Genres": "Genrer",
+ "HeaderAlbumArtists": "Albumartister",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Fortsätt kolla på",
+ "HeaderFavoriteAlbums": "Favoritalbum",
+ "HeaderFavoriteArtists": "Favoritartister",
+ "HeaderFavoriteEpisodes": "Favoritavsnitt",
+ "HeaderFavoriteShows": "Favoritserier",
+ "HeaderFavoriteSongs": "Favoritlåtar",
+ "HeaderLiveTV": "Live-TV",
+ "HeaderNextUp": "Nästa på tur",
+ "HeaderRecordingGroups": "Inspelningsgrupper",
+ "HomeVideos": "Hemvideor",
+ "Inherit": "Ärv",
+ "ItemAddedWithName": "{0} lades till i biblioteket",
+ "ItemRemovedWithName": "{0} togs bort från biblioteket",
+ "LabelIpAddressValue": "IP-adress: {0}",
+ "LabelRunningTimeValue": "Speltid: {0}",
+ "Latest": "Senaste",
+ "MessageApplicationUpdated": "Jellyfin Server har uppdaterats",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Serverinställningarna {0} har uppdaterats",
+ "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats",
+ "MixedContent": "Blandat innehåll",
+ "Movies": "Filmer",
+ "Music": "Musik",
+ "MusicVideos": "Musikvideos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Säsong {0}",
+ "NameSeasonUnknown": "Okänd säsong",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillgänglig",
+ "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad",
+ "NotificationOptionAudioPlayback": "Ljuduppspelning har påbörjats",
+ "NotificationOptionAudioPlaybackStopped": "Ljuduppspelning stoppad",
+ "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp",
+ "NotificationOptionGamePlayback": "Spel har startats",
+ "NotificationOptionGamePlaybackStopped": "Spel stoppat",
+ "NotificationOptionInstallationFailed": "Fel vid installation",
+ "NotificationOptionNewLibraryContent": "Nytt innehåll har lagts till",
+ "NotificationOptionPluginError": "Fel uppstod med tillägget",
+ "NotificationOptionPluginInstalled": "Tillägg har installerats",
+ "NotificationOptionPluginUninstalled": "Tillägg har avinstallerats",
+ "NotificationOptionPluginUpdateInstalled": "Tillägg har uppdaterats",
+ "NotificationOptionServerRestartRequired": "Servern måste startas om",
+ "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats",
+ "NotificationOptionUserLockedOut": "Användare har låsts ut",
+ "NotificationOptionVideoPlayback": "Videouppspelning har påbörjats",
+ "NotificationOptionVideoPlaybackStopped": "Videouppspelning stoppad",
+ "Photos": "Bilder",
+ "Playlists": "Spellistor",
+ "Plugin": "Tillägg",
+ "PluginInstalledWithName": "{0} installerades",
+ "PluginUninstalledWithName": "{0} avinstallerades",
+ "PluginUpdatedWithName": "{0} uppdaterades",
+ "ProviderValue": "Källa: {0}",
+ "ScheduledTaskFailedWithName": "{0} misslyckades",
+ "ScheduledTaskStartedWithName": "{0} startad",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Serier",
+ "Songs": "Låtar",
+ "StartupEmbyServerIsLoading": "Jellyfin server arbetar. Pröva igen inom kort.",
+ "SubtitleDownloadFailureForItem": "Nerladdning av undertexter för {0} misslyckades",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Undertexter har laddats ner till {0}",
+ "Sync": "Synk",
+ "System": "System",
+ "TvShows": "TV-serier",
+ "User": "Användare",
+ "UserCreatedWithName": "Användaren {0} har skapats",
+ "UserDeletedWithName": "Användaren {0} har tagits bort",
+ "UserDownloadingItemWithValues": "{0} laddar ner {1}",
+ "UserLockedOutWithName": "Användare {0} har låsts ute",
+ "UserOfflineFromDevice": "{0} har avbrutit anslutningen från {1}",
+ "UserOnlineFromDevice": "{0} är uppkopplad från {1}",
+ "UserPasswordChangedWithName": "Lösenordet för {0} har ändrats",
+ "UserPolicyUpdatedWithName": "Användarpolicyn har uppdaterats för {0}",
+ "UserStartedPlayingItemWithValues": "{0} har börjat spela upp {1}",
+ "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Specialavsnitt - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/tr.json b/Emby.Server.Implementations/Localization/Core/tr.json
index b04d61c65..9e86e2125 100644
--- a/Emby.Server.Implementations/Localization/Core/tr.json
+++ b/Emby.Server.Implementations/Localization/Core/tr.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favori Showlar",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "Version {0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favori Showlar",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "Version {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/zh-CN.json b/Emby.Server.Implementations/Localization/Core/zh-CN.json
index fcf260e28..6d877ec17 100644
--- a/Emby.Server.Implementations/Localization/Core/zh-CN.json
+++ b/Emby.Server.Implementations/Localization/Core/zh-CN.json
@@ -1,100 +1,100 @@
{
- "Albums": "专辑",
- "AppDeviceValues": "应用: {0}, 设备: {1}",
- "Application": "应用程序",
- "Artists": "艺术家",
- "AuthenticationSucceededWithUserName": "{0} 成功验证",
- "Books": "书籍",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "频道",
- "ChapterNameValue": "章节 {0}",
- "Collections": "合集",
- "DeviceOfflineWithName": "{0} 已断开",
- "DeviceOnlineWithName": "{0} 已连接",
- "FailedLoginAttemptWithUserName": "来自 {0} 的失败登入",
- "Favorites": "最爱",
- "Folders": "文件夹",
- "Games": "游戏",
- "Genres": "风格",
- "HeaderAlbumArtists": "专辑作家",
- "HeaderCameraUploads": "相机上传",
- "HeaderContinueWatching": "继续观看",
- "HeaderFavoriteAlbums": "最爱的专辑",
- "HeaderFavoriteArtists": "最爱作家",
- "HeaderFavoriteEpisodes": "最爱的集",
- "HeaderFavoriteShows": "最爱的节目",
- "HeaderFavoriteSongs": "最爱的歌曲",
- "HeaderLiveTV": "电视直播",
- "HeaderNextUp": "接下来",
- "HeaderRecordingGroups": "录制组",
- "HomeVideos": "家庭视频",
- "Inherit": "继承",
- "ItemAddedWithName": "{0} 已添加到媒体库",
- "ItemRemovedWithName": "{0} 已从媒体库中移除",
- "LabelIpAddressValue": "Ip 地址:{0}",
- "LabelRunningTimeValue": "运行时间:{0}",
- "Latest": "最新",
- "MessageApplicationUpdated": "Jellyfin 服务器已更新",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "服务器配置 {0} 部分已更新",
- "MessageServerConfigurationUpdated": "服务器配置已更新",
- "MixedContent": "混合内容",
- "Movies": "电影",
- "Music": "音乐",
- "MusicVideos": "音乐视频",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "季 {0}",
- "NameSeasonUnknown": "未知季",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "有可用的应用程序更新",
- "NotificationOptionApplicationUpdateInstalled": "应用程序更新已安装",
- "NotificationOptionAudioPlayback": "音频开始播放",
- "NotificationOptionAudioPlaybackStopped": "音频播放已停止",
- "NotificationOptionCameraImageUploaded": "相机图片已上传",
- "NotificationOptionGamePlayback": "游戏开始",
- "NotificationOptionGamePlaybackStopped": "游戏停止",
- "NotificationOptionInstallationFailed": "安装失败",
- "NotificationOptionNewLibraryContent": "已添加新内容",
- "NotificationOptionPluginError": "插件失败",
- "NotificationOptionPluginInstalled": "插件已安装",
- "NotificationOptionPluginUninstalled": "插件已卸载",
- "NotificationOptionPluginUpdateInstalled": "插件更新已安装",
- "NotificationOptionServerRestartRequired": "服务器需要重启",
- "NotificationOptionTaskFailed": "计划任务失败",
- "NotificationOptionUserLockedOut": "用户已锁定",
- "NotificationOptionVideoPlayback": "视频开始播放",
- "NotificationOptionVideoPlaybackStopped": "视频播放已停止",
- "Photos": "照片",
- "Playlists": "播放列表",
- "Plugin": "插件",
- "PluginInstalledWithName": "{0} 已安装",
- "PluginUninstalledWithName": "{0} 已卸载",
- "PluginUpdatedWithName": "{0} 已更新",
- "ProviderValue": "提供商:{0}",
- "ScheduledTaskFailedWithName": "{0} 已失败",
- "ScheduledTaskStartedWithName": "{0} 已开始",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "节目",
- "Songs": "歌曲",
- "StartupEmbyServerIsLoading": "Jellyfin 服务器加载中。请稍后再试。",
- "SubtitleDownloadFailureForItem": "为 {0} 下载字幕失败",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "已为 {0} 下载了字幕",
- "Sync": "同步",
- "System": "系统",
- "TvShows": "电视节目",
- "User": "用户",
- "UserCreatedWithName": "用户 {0} 已创建",
- "UserDeletedWithName": "用户 {0} 已删除",
- "UserDownloadingItemWithValues": "{0} 正在下载 {1}",
- "UserLockedOutWithName": "用户 {0} 已被锁定",
- "UserOfflineFromDevice": "{0} 已从 {1} 断开",
- "UserOnlineFromDevice": "{0} 在线,来自 {1}",
- "UserPasswordChangedWithName": "已为用户 {0} 更改密码",
- "UserPolicyUpdatedWithName": "用户协议已经被更新为 {0}",
- "UserStartedPlayingItemWithValues": "{0} 已开始播放 {1}",
- "UserStoppedPlayingItemWithValues": "{0} 已停止播放 {1}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "特典 - {0}",
- "VersionNumber": "版本 {0}"
+ "Albums": "专辑",
+ "AppDeviceValues": "应用: {0}, 设备: {1}",
+ "Application": "应用程序",
+ "Artists": "艺术家",
+ "AuthenticationSucceededWithUserName": "{0} 成功验证",
+ "Books": "书籍",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "频道",
+ "ChapterNameValue": "章节 {0}",
+ "Collections": "合集",
+ "DeviceOfflineWithName": "{0} 已断开",
+ "DeviceOnlineWithName": "{0} 已连接",
+ "FailedLoginAttemptWithUserName": "来自 {0} 的失败登入",
+ "Favorites": "最爱",
+ "Folders": "文件夹",
+ "Games": "游戏",
+ "Genres": "风格",
+ "HeaderAlbumArtists": "专辑作家",
+ "HeaderCameraUploads": "相机上传",
+ "HeaderContinueWatching": "继续观看",
+ "HeaderFavoriteAlbums": "最爱的专辑",
+ "HeaderFavoriteArtists": "最爱作家",
+ "HeaderFavoriteEpisodes": "最爱的集",
+ "HeaderFavoriteShows": "最爱的节目",
+ "HeaderFavoriteSongs": "最爱的歌曲",
+ "HeaderLiveTV": "电视直播",
+ "HeaderNextUp": "接下来",
+ "HeaderRecordingGroups": "录制组",
+ "HomeVideos": "家庭视频",
+ "Inherit": "继承",
+ "ItemAddedWithName": "{0} 已添加到媒体库",
+ "ItemRemovedWithName": "{0} 已从媒体库中移除",
+ "LabelIpAddressValue": "Ip 地址:{0}",
+ "LabelRunningTimeValue": "运行时间:{0}",
+ "Latest": "最新",
+ "MessageApplicationUpdated": "Jellyfin 服务器已更新",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "服务器配置 {0} 部分已更新",
+ "MessageServerConfigurationUpdated": "服务器配置已更新",
+ "MixedContent": "混合内容",
+ "Movies": "电影",
+ "Music": "音乐",
+ "MusicVideos": "音乐视频",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "季 {0}",
+ "NameSeasonUnknown": "未知季",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "有可用的应用程序更新",
+ "NotificationOptionApplicationUpdateInstalled": "应用程序更新已安装",
+ "NotificationOptionAudioPlayback": "音频开始播放",
+ "NotificationOptionAudioPlaybackStopped": "音频播放已停止",
+ "NotificationOptionCameraImageUploaded": "相机图片已上传",
+ "NotificationOptionGamePlayback": "游戏开始",
+ "NotificationOptionGamePlaybackStopped": "游戏停止",
+ "NotificationOptionInstallationFailed": "安装失败",
+ "NotificationOptionNewLibraryContent": "已添加新内容",
+ "NotificationOptionPluginError": "插件失败",
+ "NotificationOptionPluginInstalled": "插件已安装",
+ "NotificationOptionPluginUninstalled": "插件已卸载",
+ "NotificationOptionPluginUpdateInstalled": "插件更新已安装",
+ "NotificationOptionServerRestartRequired": "服务器需要重启",
+ "NotificationOptionTaskFailed": "计划任务失败",
+ "NotificationOptionUserLockedOut": "用户已锁定",
+ "NotificationOptionVideoPlayback": "视频开始播放",
+ "NotificationOptionVideoPlaybackStopped": "视频播放已停止",
+ "Photos": "照片",
+ "Playlists": "播放列表",
+ "Plugin": "插件",
+ "PluginInstalledWithName": "{0} 已安装",
+ "PluginUninstalledWithName": "{0} 已卸载",
+ "PluginUpdatedWithName": "{0} 已更新",
+ "ProviderValue": "提供商:{0}",
+ "ScheduledTaskFailedWithName": "{0} 已失败",
+ "ScheduledTaskStartedWithName": "{0} 已开始",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "节目",
+ "Songs": "歌曲",
+ "StartupEmbyServerIsLoading": "Jellyfin 服务器加载中。请稍后再试。",
+ "SubtitleDownloadFailureForItem": "为 {0} 下载字幕失败",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "已为 {0} 下载了字幕",
+ "Sync": "同步",
+ "System": "系统",
+ "TvShows": "电视节目",
+ "User": "用户",
+ "UserCreatedWithName": "用户 {0} 已创建",
+ "UserDeletedWithName": "用户 {0} 已删除",
+ "UserDownloadingItemWithValues": "{0} 正在下载 {1}",
+ "UserLockedOutWithName": "用户 {0} 已被锁定",
+ "UserOfflineFromDevice": "{0} 已从 {1} 断开",
+ "UserOnlineFromDevice": "{0} 在线,来自 {1}",
+ "UserPasswordChangedWithName": "已为用户 {0} 更改密码",
+ "UserPolicyUpdatedWithName": "用户协议已经被更新为 {0}",
+ "UserStartedPlayingItemWithValues": "{0} 已开始播放 {1}",
+ "UserStoppedPlayingItemWithValues": "{0} 已停止播放 {1}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "特典 - {0}",
+ "VersionNumber": "版本 {0}"
}
diff --git a/Emby.Server.Implementations/Localization/Core/zh-HK.json b/Emby.Server.Implementations/Localization/Core/zh-HK.json
index dc6332b03..cad5700fd 100644
--- a/Emby.Server.Implementations/Localization/Core/zh-HK.json
+++ b/Emby.Server.Implementations/Localization/Core/zh-HK.json
@@ -1,100 +1,100 @@
{
- "Albums": "Albums",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "Application": "Application",
- "Artists": "Artists",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "Books": "Books",
- "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
- "Channels": "Channels",
- "ChapterNameValue": "Chapter {0}",
- "Collections": "Collections",
- "DeviceOfflineWithName": "{0} has disconnected",
- "DeviceOnlineWithName": "{0} is connected",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "Favorites": "Favorites",
- "Folders": "Folders",
- "Games": "Games",
- "Genres": "Genres",
- "HeaderAlbumArtists": "Album Artists",
- "HeaderCameraUploads": "Camera Uploads",
- "HeaderContinueWatching": "Continue Watching",
- "HeaderFavoriteAlbums": "Favorite Albums",
- "HeaderFavoriteArtists": "Favorite Artists",
- "HeaderFavoriteEpisodes": "Favorite Episodes",
- "HeaderFavoriteShows": "Favorite Shows",
- "HeaderFavoriteSongs": "Favorite Songs",
- "HeaderLiveTV": "Live TV",
- "HeaderNextUp": "Next Up",
- "HeaderRecordingGroups": "Recording Groups",
- "HomeVideos": "Home videos",
- "Inherit": "Inherit",
- "ItemAddedWithName": "{0} was added to the library",
- "ItemRemovedWithName": "{0} was removed from the library",
- "LabelIpAddressValue": "Ip address: {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "Latest": "Latest",
- "MessageApplicationUpdated": "Jellyfin Server has been updated",
- "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MixedContent": "Mixed content",
- "Movies": "Movies",
- "Music": "Music",
- "MusicVideos": "Music videos",
- "NameInstallFailed": "{0} installation failed",
- "NameSeasonNumber": "Season {0}",
- "NameSeasonUnknown": "Season Unknown",
- "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
- "NotificationOptionApplicationUpdateAvailable": "Application update available",
- "NotificationOptionApplicationUpdateInstalled": "Application update installed",
- "NotificationOptionAudioPlayback": "Audio playback started",
- "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
- "NotificationOptionCameraImageUploaded": "Camera image uploaded",
- "NotificationOptionGamePlayback": "Game playback started",
- "NotificationOptionGamePlaybackStopped": "Game playback stopped",
- "NotificationOptionInstallationFailed": "Installation failure",
- "NotificationOptionNewLibraryContent": "New content added",
- "NotificationOptionPluginError": "Plugin failure",
- "NotificationOptionPluginInstalled": "Plugin installed",
- "NotificationOptionPluginUninstalled": "Plugin uninstalled",
- "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
- "NotificationOptionServerRestartRequired": "Server restart required",
- "NotificationOptionTaskFailed": "Scheduled task failure",
- "NotificationOptionUserLockedOut": "User locked out",
- "NotificationOptionVideoPlayback": "Video playback started",
- "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
- "Photos": "Photos",
- "Playlists": "Playlists",
- "Plugin": "Plugin",
- "PluginInstalledWithName": "{0} was installed",
- "PluginUninstalledWithName": "{0} was uninstalled",
- "PluginUpdatedWithName": "{0} was updated",
- "ProviderValue": "Provider: {0}",
- "ScheduledTaskFailedWithName": "{0} failed",
- "ScheduledTaskStartedWithName": "{0} started",
- "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
- "Shows": "Shows",
- "Songs": "Songs",
- "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "Sync": "Sync",
- "System": "System",
- "TvShows": "TV Shows",
- "User": "User",
- "UserCreatedWithName": "User {0} has been created",
- "UserDeletedWithName": "User {0} has been deleted",
- "UserDownloadingItemWithValues": "{0} is downloading {1}",
- "UserLockedOutWithName": "User {0} has been locked out",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
- "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
- "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
- "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
- "ValueSpecialEpisodeName": "Special - {0}",
- "VersionNumber": "版本{0}"
+ "Albums": "Albums",
+ "AppDeviceValues": "App: {0}, Device: {1}",
+ "Application": "Application",
+ "Artists": "Artists",
+ "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
+ "Books": "Books",
+ "CameraImageUploadedFrom": "A new camera image has been uploaded from {0}",
+ "Channels": "Channels",
+ "ChapterNameValue": "Chapter {0}",
+ "Collections": "Collections",
+ "DeviceOfflineWithName": "{0} has disconnected",
+ "DeviceOnlineWithName": "{0} is connected",
+ "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
+ "Favorites": "Favorites",
+ "Folders": "Folders",
+ "Games": "Games",
+ "Genres": "Genres",
+ "HeaderAlbumArtists": "Album Artists",
+ "HeaderCameraUploads": "Camera Uploads",
+ "HeaderContinueWatching": "Continue Watching",
+ "HeaderFavoriteAlbums": "Favorite Albums",
+ "HeaderFavoriteArtists": "Favorite Artists",
+ "HeaderFavoriteEpisodes": "Favorite Episodes",
+ "HeaderFavoriteShows": "Favorite Shows",
+ "HeaderFavoriteSongs": "Favorite Songs",
+ "HeaderLiveTV": "Live TV",
+ "HeaderNextUp": "Next Up",
+ "HeaderRecordingGroups": "Recording Groups",
+ "HomeVideos": "Home videos",
+ "Inherit": "Inherit",
+ "ItemAddedWithName": "{0} was added to the library",
+ "ItemRemovedWithName": "{0} was removed from the library",
+ "LabelIpAddressValue": "Ip address: {0}",
+ "LabelRunningTimeValue": "Running time: {0}",
+ "Latest": "Latest",
+ "MessageApplicationUpdated": "Jellyfin Server has been updated",
+ "MessageApplicationUpdatedTo": "Jellyfin Server has been updated to {0}",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
+ "MessageServerConfigurationUpdated": "Server configuration has been updated",
+ "MixedContent": "Mixed content",
+ "Movies": "Movies",
+ "Music": "Music",
+ "MusicVideos": "Music videos",
+ "NameInstallFailed": "{0} installation failed",
+ "NameSeasonNumber": "Season {0}",
+ "NameSeasonUnknown": "Season Unknown",
+ "NewVersionIsAvailable": "A new version of Jellyfin Server is available for download.",
+ "NotificationOptionApplicationUpdateAvailable": "Application update available",
+ "NotificationOptionApplicationUpdateInstalled": "Application update installed",
+ "NotificationOptionAudioPlayback": "Audio playback started",
+ "NotificationOptionAudioPlaybackStopped": "Audio playback stopped",
+ "NotificationOptionCameraImageUploaded": "Camera image uploaded",
+ "NotificationOptionGamePlayback": "Game playback started",
+ "NotificationOptionGamePlaybackStopped": "Game playback stopped",
+ "NotificationOptionInstallationFailed": "Installation failure",
+ "NotificationOptionNewLibraryContent": "New content added",
+ "NotificationOptionPluginError": "Plugin failure",
+ "NotificationOptionPluginInstalled": "Plugin installed",
+ "NotificationOptionPluginUninstalled": "Plugin uninstalled",
+ "NotificationOptionPluginUpdateInstalled": "Plugin update installed",
+ "NotificationOptionServerRestartRequired": "Server restart required",
+ "NotificationOptionTaskFailed": "Scheduled task failure",
+ "NotificationOptionUserLockedOut": "User locked out",
+ "NotificationOptionVideoPlayback": "Video playback started",
+ "NotificationOptionVideoPlaybackStopped": "Video playback stopped",
+ "Photos": "Photos",
+ "Playlists": "Playlists",
+ "Plugin": "Plugin",
+ "PluginInstalledWithName": "{0} was installed",
+ "PluginUninstalledWithName": "{0} was uninstalled",
+ "PluginUpdatedWithName": "{0} was updated",
+ "ProviderValue": "Provider: {0}",
+ "ScheduledTaskFailedWithName": "{0} failed",
+ "ScheduledTaskStartedWithName": "{0} started",
+ "ServerNameNeedsToBeRestarted": "{0} needs to be restarted",
+ "Shows": "Shows",
+ "Songs": "Songs",
+ "StartupEmbyServerIsLoading": "Jellyfin Server is loading. Please try again shortly.",
+ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
+ "SubtitleDownloadFailureFromForItem": "Subtitles failed to download from {0} for {1}",
+ "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
+ "Sync": "Sync",
+ "System": "System",
+ "TvShows": "TV Shows",
+ "User": "User",
+ "UserCreatedWithName": "User {0} has been created",
+ "UserDeletedWithName": "User {0} has been deleted",
+ "UserDownloadingItemWithValues": "{0} is downloading {1}",
+ "UserLockedOutWithName": "User {0} has been locked out",
+ "UserOfflineFromDevice": "{0} has disconnected from {1}",
+ "UserOnlineFromDevice": "{0} is online from {1}",
+ "UserPasswordChangedWithName": "Password has been changed for user {0}",
+ "UserPolicyUpdatedWithName": "User policy has been updated for {0}",
+ "UserStartedPlayingItemWithValues": "{0} is playing {1} on {2}",
+ "UserStoppedPlayingItemWithValues": "{0} has finished playing {1} on {2}",
+ "ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
+ "ValueSpecialEpisodeName": "Special - {0}",
+ "VersionNumber": "版本{0}"
}
diff --git a/Emby.Server.Implementations/Localization/LocalizationManager.cs b/Emby.Server.Implementations/Localization/LocalizationManager.cs
index a2c47cd79..5d3c39af4 100644
--- a/Emby.Server.Implementations/Localization/LocalizationManager.cs
+++ b/Emby.Server.Implementations/Localization/LocalizationManager.cs
@@ -1,17 +1,17 @@
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Reflection;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Localization
{
@@ -138,7 +138,7 @@ namespace Emby.Server.Implementations.Localization
new ParentalRating("FSK-18", 9)
});
- LoadRatings("ru", new [] {
+ LoadRatings("ru", new[] {
new ParentalRating("RU-0+", 1),
new ParentalRating("RU-6+", 3),
@@ -298,9 +298,7 @@ namespace Emby.Server.Implementations.Localization
/// <param name="countryCode">The country code.</param>
private Dictionary<string, ParentalRating> GetRatings(string countryCode)
{
- Dictionary<string, ParentalRating> value;
-
- _allParentalRatings.TryGetValue(countryCode, out value);
+ _allParentalRatings.TryGetValue(countryCode, out var value);
return value;
}
@@ -320,9 +318,7 @@ namespace Emby.Server.Implementations.Localization
if (parts.Length == 2)
{
- int value;
-
- if (int.TryParse(parts[1], NumberStyles.Integer, UsCulture, out value))
+ if (int.TryParse(parts[1], NumberStyles.Integer, UsCulture, out var value))
{
return new ParentalRating { Name = parts[0], Value = value };
}
@@ -364,9 +360,7 @@ namespace Emby.Server.Implementations.Localization
var ratingsDictionary = GetParentalRatingsDictionary();
- ParentalRating value;
-
- if (ratingsDictionary.TryGetValue(rating, out value))
+ if (ratingsDictionary.TryGetValue(rating, out ParentalRating value))
{
return value.Value;
}
@@ -427,9 +421,7 @@ namespace Emby.Server.Implementations.Localization
var dictionary = GetLocalizationDictionary(culture);
- string value;
-
- if (dictionary.TryGetValue(phrase, out value))
+ if (dictionary.TryGetValue(phrase, out var value))
{
return value;
}
diff --git a/Emby.Server.Implementations/Localization/Ratings/br.txt b/Emby.Server.Implementations/Localization/Ratings/br.txt
index 62f00fb87..e5edaf62c 100644
--- a/Emby.Server.Implementations/Localization/Ratings/br.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/br.txt
@@ -3,4 +3,4 @@ BR-10,5
BR-12,7
BR-14,8
BR-16,8
-BR-18,9 \ No newline at end of file
+BR-18,9
diff --git a/Emby.Server.Implementations/Localization/Ratings/ca.txt b/Emby.Server.Implementations/Localization/Ratings/ca.txt
index 5a110648c..5aef0580f 100644
--- a/Emby.Server.Implementations/Localization/Ratings/ca.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/ca.txt
@@ -1,6 +1,6 @@
-CA-G,1
+CA-G,1
CA-PG,5
CA-14A,7
CA-A,8
CA-18A,9
-CA-R,10 \ No newline at end of file
+CA-R,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/co.txt b/Emby.Server.Implementations/Localization/Ratings/co.txt
index a694a0be6..9684fa052 100644
--- a/Emby.Server.Implementations/Localization/Ratings/co.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/co.txt
@@ -5,4 +5,4 @@ CO-15,8
CO-18,10
CO-X,100
CO-BANNED,15
-CO-E,15 \ No newline at end of file
+CO-E,15
diff --git a/Emby.Server.Implementations/Localization/Ratings/dk.txt b/Emby.Server.Implementations/Localization/Ratings/dk.txt
index b9a085e01..5364ae1f2 100644
--- a/Emby.Server.Implementations/Localization/Ratings/dk.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/dk.txt
@@ -1,4 +1,4 @@
DA-A,1
DA-7,5
DA-11,6
-DA-15,8 \ No newline at end of file
+DA-15,8
diff --git a/Emby.Server.Implementations/Localization/Ratings/es.txt b/Emby.Server.Implementations/Localization/Ratings/es.txt
index 32a1e6438..887d91ba6 100644
--- a/Emby.Server.Implementations/Localization/Ratings/es.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/es.txt
@@ -3,4 +3,4 @@ ES-APTA,1
ES-7,3
ES-12,6
ES-16,8
-ES-18,11 \ No newline at end of file
+ES-18,11
diff --git a/Emby.Server.Implementations/Localization/Ratings/fr.txt b/Emby.Server.Implementations/Localization/Ratings/fr.txt
index 2bb205b0d..f586a3fa9 100644
--- a/Emby.Server.Implementations/Localization/Ratings/fr.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/fr.txt
@@ -2,4 +2,4 @@ FR-U,1
FR-10,5
FR-12,7
FR-16,9
-FR-18,10 \ No newline at end of file
+FR-18,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/ie.txt b/Emby.Server.Implementations/Localization/Ratings/ie.txt
index 283f07767..e42be5cd4 100644
--- a/Emby.Server.Implementations/Localization/Ratings/ie.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/ie.txt
@@ -3,4 +3,4 @@ IE-PG,5
IE-12A,7
IE-15A,8
IE-16,9
-IE-18,10 \ No newline at end of file
+IE-18,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/jp.txt b/Emby.Server.Implementations/Localization/Ratings/jp.txt
index 2e1da30d8..a8fc2d143 100644
--- a/Emby.Server.Implementations/Localization/Ratings/jp.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/jp.txt
@@ -1,4 +1,4 @@
JP-G,1
JP-PG12,7
JP-15+,8
-JP-18+,10 \ No newline at end of file
+JP-18+,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/kz.txt b/Emby.Server.Implementations/Localization/Ratings/kz.txt
index b31e12d96..4441c5650 100644
--- a/Emby.Server.Implementations/Localization/Ratings/kz.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/kz.txt
@@ -3,4 +3,4 @@ KZ-БА,6
KZ-Б14,7
KZ-Е16,8
KZ-Е18,10
-KZ-НА,15 \ No newline at end of file
+KZ-НА,15
diff --git a/Emby.Server.Implementations/Localization/Ratings/mx.txt b/Emby.Server.Implementations/Localization/Ratings/mx.txt
index 93b609c3d..785a8ba22 100644
--- a/Emby.Server.Implementations/Localization/Ratings/mx.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/mx.txt
@@ -3,4 +3,4 @@ MX-A,5
MX-B,7
MX-B-15,8
MX-C,9
-MX-D,10 \ No newline at end of file
+MX-D,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/nl.txt b/Emby.Server.Implementations/Localization/Ratings/nl.txt
index f69cc2bcc..8c005092e 100644
--- a/Emby.Server.Implementations/Localization/Ratings/nl.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/nl.txt
@@ -3,4 +3,4 @@ NL-MG6,2
NL-6,3
NL-9,5
NL-12,6
-NL-16,8 \ No newline at end of file
+NL-16,8
diff --git a/Emby.Server.Implementations/Localization/Ratings/nz.txt b/Emby.Server.Implementations/Localization/Ratings/nz.txt
index 46e4067ba..bba99b764 100644
--- a/Emby.Server.Implementations/Localization/Ratings/nz.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/nz.txt
@@ -8,4 +8,4 @@ NZ-RP16,9
NZ-R16,9
NZ-R18,10
NZ-R,10
-NZ-MA,10 \ No newline at end of file
+NZ-MA,10
diff --git a/Emby.Server.Implementations/Localization/Ratings/ro.txt b/Emby.Server.Implementations/Localization/Ratings/ro.txt
index 3fdaed9cc..4089b282f 100644
--- a/Emby.Server.Implementations/Localization/Ratings/ro.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/ro.txt
@@ -1 +1 @@
-RO-AG,1 \ No newline at end of file
+RO-AG,1
diff --git a/Emby.Server.Implementations/Localization/Ratings/uk.txt b/Emby.Server.Implementations/Localization/Ratings/uk.txt
index 20440921f..6c8005b3f 100644
--- a/Emby.Server.Implementations/Localization/Ratings/uk.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/uk.txt
@@ -4,4 +4,4 @@ UK-12,7
UK-12A,7
UK-15,9
UK-18,10
-UK-R18,15 \ No newline at end of file
+UK-R18,15
diff --git a/Emby.Server.Implementations/Localization/Ratings/us.txt b/Emby.Server.Implementations/Localization/Ratings/us.txt
index eebd828c7..34c897fe3 100644
--- a/Emby.Server.Implementations/Localization/Ratings/us.txt
+++ b/Emby.Server.Implementations/Localization/Ratings/us.txt
@@ -20,4 +20,4 @@ RP,15
UR,15
NR,15
X,15
-XXX,100 \ No newline at end of file
+XXX,100
diff --git a/Emby.Server.Implementations/Localization/TextLocalizer.cs b/Emby.Server.Implementations/Localization/TextLocalizer.cs
index 09445d428..96591e5e6 100644
--- a/Emby.Server.Implementations/Localization/TextLocalizer.cs
+++ b/Emby.Server.Implementations/Localization/TextLocalizer.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Globalization;
using System.Linq;
using System.Text;
diff --git a/Emby.Server.Implementations/Localization/countries.json b/Emby.Server.Implementations/Localization/countries.json
index 2639aa274..581e9f835 100644
--- a/Emby.Server.Implementations/Localization/countries.json
+++ b/Emby.Server.Implementations/Localization/countries.json
@@ -1,830 +1,830 @@
[
- {
- "DisplayName": "Afghanistan",
- "Name": "AF",
- "ThreeLetterISORegionName": "AFG",
- "TwoLetterISORegionName": "AF"
- },
- {
- "DisplayName": "Albania",
- "Name": "AL",
- "ThreeLetterISORegionName": "ALB",
- "TwoLetterISORegionName": "AL"
- },
- {
- "DisplayName": "Algeria",
- "Name": "DZ",
- "ThreeLetterISORegionName": "DZA",
- "TwoLetterISORegionName": "DZ"
- },
- {
- "DisplayName": "Argentina",
- "Name": "AR",
- "ThreeLetterISORegionName": "ARG",
- "TwoLetterISORegionName": "AR"
- },
- {
- "DisplayName": "Armenia",
- "Name": "AM",
- "ThreeLetterISORegionName": "ARM",
- "TwoLetterISORegionName": "AM"
- },
- {
- "DisplayName": "Australia",
- "Name": "AU",
- "ThreeLetterISORegionName": "AUS",
- "TwoLetterISORegionName": "AU"
- },
- {
- "DisplayName": "Austria",
- "Name": "AT",
- "ThreeLetterISORegionName": "AUT",
- "TwoLetterISORegionName": "AT"
- },
- {
- "DisplayName": "Azerbaijan",
- "Name": "AZ",
- "ThreeLetterISORegionName": "AZE",
- "TwoLetterISORegionName": "AZ"
- },
- {
- "DisplayName": "Bahrain",
- "Name": "BH",
- "ThreeLetterISORegionName": "BHR",
- "TwoLetterISORegionName": "BH"
- },
- {
- "DisplayName": "Bangladesh",
- "Name": "BD",
- "ThreeLetterISORegionName": "BGD",
- "TwoLetterISORegionName": "BD"
- },
- {
- "DisplayName": "Belarus",
- "Name": "BY",
- "ThreeLetterISORegionName": "BLR",
- "TwoLetterISORegionName": "BY"
- },
- {
- "DisplayName": "Belgium",
- "Name": "BE",
- "ThreeLetterISORegionName": "BEL",
- "TwoLetterISORegionName": "BE"
- },
- {
- "DisplayName": "Belize",
- "Name": "BZ",
- "ThreeLetterISORegionName": "BLZ",
- "TwoLetterISORegionName": "BZ"
- },
- {
- "DisplayName": "Bolivarian Republic of Venezuela",
- "Name": "VE",
- "ThreeLetterISORegionName": "VEN",
- "TwoLetterISORegionName": "VE"
- },
- {
- "DisplayName": "Bolivia",
- "Name": "BO",
- "ThreeLetterISORegionName": "BOL",
- "TwoLetterISORegionName": "BO"
- },
- {
- "DisplayName": "Bosnia and Herzegovina",
- "Name": "BA",
- "ThreeLetterISORegionName": "BIH",
- "TwoLetterISORegionName": "BA"
- },
- {
- "DisplayName": "Botswana",
- "Name": "BW",
- "ThreeLetterISORegionName": "BWA",
- "TwoLetterISORegionName": "BW"
- },
- {
- "DisplayName": "Brazil",
- "Name": "BR",
- "ThreeLetterISORegionName": "BRA",
- "TwoLetterISORegionName": "BR"
- },
- {
- "DisplayName": "Brunei Darussalam",
- "Name": "BN",
- "ThreeLetterISORegionName": "BRN",
- "TwoLetterISORegionName": "BN"
- },
- {
- "DisplayName": "Bulgaria",
- "Name": "BG",
- "ThreeLetterISORegionName": "BGR",
- "TwoLetterISORegionName": "BG"
- },
- {
- "DisplayName": "Cambodia",
- "Name": "KH",
- "ThreeLetterISORegionName": "KHM",
- "TwoLetterISORegionName": "KH"
- },
- {
- "DisplayName": "Cameroon",
- "Name": "CM",
- "ThreeLetterISORegionName": "CMR",
- "TwoLetterISORegionName": "CM"
- },
- {
- "DisplayName": "Canada",
- "Name": "CA",
- "ThreeLetterISORegionName": "CAN",
- "TwoLetterISORegionName": "CA"
- },
- {
- "DisplayName": "Caribbean",
- "Name": "029",
- "ThreeLetterISORegionName": "029",
- "TwoLetterISORegionName": "029"
- },
- {
- "DisplayName": "Chile",
- "Name": "CL",
- "ThreeLetterISORegionName": "CHL",
- "TwoLetterISORegionName": "CL"
- },
- {
- "DisplayName": "Colombia",
- "Name": "CO",
- "ThreeLetterISORegionName": "COL",
- "TwoLetterISORegionName": "CO"
- },
- {
- "DisplayName": "Congo [DRC]",
- "Name": "CD",
- "ThreeLetterISORegionName": "COD",
- "TwoLetterISORegionName": "CD"
- },
- {
- "DisplayName": "Costa Rica",
- "Name": "CR",
- "ThreeLetterISORegionName": "CRI",
- "TwoLetterISORegionName": "CR"
- },
- {
- "DisplayName": "Croatia",
- "Name": "HR",
- "ThreeLetterISORegionName": "HRV",
- "TwoLetterISORegionName": "HR"
- },
- {
- "DisplayName": "Czech Republic",
- "Name": "CZ",
- "ThreeLetterISORegionName": "CZE",
- "TwoLetterISORegionName": "CZ"
- },
- {
- "DisplayName": "Denmark",
- "Name": "DK",
- "ThreeLetterISORegionName": "DNK",
- "TwoLetterISORegionName": "DK"
- },
- {
- "DisplayName": "Dominican Republic",
- "Name": "DO",
- "ThreeLetterISORegionName": "DOM",
- "TwoLetterISORegionName": "DO"
- },
- {
- "DisplayName": "Ecuador",
- "Name": "EC",
- "ThreeLetterISORegionName": "ECU",
- "TwoLetterISORegionName": "EC"
- },
- {
- "DisplayName": "Egypt",
- "Name": "EG",
- "ThreeLetterISORegionName": "EGY",
- "TwoLetterISORegionName": "EG"
- },
- {
- "DisplayName": "El Salvador",
- "Name": "SV",
- "ThreeLetterISORegionName": "SLV",
- "TwoLetterISORegionName": "SV"
- },
- {
- "DisplayName": "Eritrea",
- "Name": "ER",
- "ThreeLetterISORegionName": "ERI",
- "TwoLetterISORegionName": "ER"
- },
- {
- "DisplayName": "Estonia",
- "Name": "EE",
- "ThreeLetterISORegionName": "EST",
- "TwoLetterISORegionName": "EE"
- },
- {
- "DisplayName": "Ethiopia",
- "Name": "ET",
- "ThreeLetterISORegionName": "ETH",
- "TwoLetterISORegionName": "ET"
- },
- {
- "DisplayName": "Faroe Islands",
- "Name": "FO",
- "ThreeLetterISORegionName": "FRO",
- "TwoLetterISORegionName": "FO"
- },
- {
- "DisplayName": "Finland",
- "Name": "FI",
- "ThreeLetterISORegionName": "FIN",
- "TwoLetterISORegionName": "FI"
- },
- {
- "DisplayName": "France",
- "Name": "FR",
- "ThreeLetterISORegionName": "FRA",
- "TwoLetterISORegionName": "FR"
- },
- {
- "DisplayName": "Georgia",
- "Name": "GE",
- "ThreeLetterISORegionName": "GEO",
- "TwoLetterISORegionName": "GE"
- },
- {
- "DisplayName": "Germany",
- "Name": "DE",
- "ThreeLetterISORegionName": "DEU",
- "TwoLetterISORegionName": "DE"
- },
- {
- "DisplayName": "Greece",
- "Name": "GR",
- "ThreeLetterISORegionName": "GRC",
- "TwoLetterISORegionName": "GR"
- },
- {
- "DisplayName": "Greenland",
- "Name": "GL",
- "ThreeLetterISORegionName": "GRL",
- "TwoLetterISORegionName": "GL"
- },
- {
- "DisplayName": "Guatemala",
- "Name": "GT",
- "ThreeLetterISORegionName": "GTM",
- "TwoLetterISORegionName": "GT"
- },
- {
- "DisplayName": "Haiti",
- "Name": "HT",
- "ThreeLetterISORegionName": "HTI",
- "TwoLetterISORegionName": "HT"
- },
- {
- "DisplayName": "Honduras",
- "Name": "HN",
- "ThreeLetterISORegionName": "HND",
- "TwoLetterISORegionName": "HN"
- },
- {
- "DisplayName": "Hong Kong S.A.R.",
- "Name": "HK",
- "ThreeLetterISORegionName": "HKG",
- "TwoLetterISORegionName": "HK"
- },
- {
- "DisplayName": "Hungary",
- "Name": "HU",
- "ThreeLetterISORegionName": "HUN",
- "TwoLetterISORegionName": "HU"
- },
- {
- "DisplayName": "Iceland",
- "Name": "IS",
- "ThreeLetterISORegionName": "ISL",
- "TwoLetterISORegionName": "IS"
- },
- {
- "DisplayName": "India",
- "Name": "IN",
- "ThreeLetterISORegionName": "IND",
- "TwoLetterISORegionName": "IN"
- },
- {
- "DisplayName": "Indonesia",
- "Name": "ID",
- "ThreeLetterISORegionName": "IDN",
- "TwoLetterISORegionName": "ID"
- },
- {
- "DisplayName": "Iran",
- "Name": "IR",
- "ThreeLetterISORegionName": "IRN",
- "TwoLetterISORegionName": "IR"
- },
- {
- "DisplayName": "Iraq",
- "Name": "IQ",
- "ThreeLetterISORegionName": "IRQ",
- "TwoLetterISORegionName": "IQ"
- },
- {
- "DisplayName": "Ireland",
- "Name": "IE",
- "ThreeLetterISORegionName": "IRL",
- "TwoLetterISORegionName": "IE"
- },
- {
- "DisplayName": "Islamic Republic of Pakistan",
- "Name": "PK",
- "ThreeLetterISORegionName": "PAK",
- "TwoLetterISORegionName": "PK"
- },
- {
- "DisplayName": "Israel",
- "Name": "IL",
- "ThreeLetterISORegionName": "ISR",
- "TwoLetterISORegionName": "IL"
- },
- {
- "DisplayName": "Italy",
- "Name": "IT",
- "ThreeLetterISORegionName": "ITA",
- "TwoLetterISORegionName": "IT"
- },
- {
- "DisplayName": "Ivory Coast",
- "Name": "CI",
- "ThreeLetterISORegionName": "CIV",
- "TwoLetterISORegionName": "CI"
- },
- {
- "DisplayName": "Jamaica",
- "Name": "JM",
- "ThreeLetterISORegionName": "JAM",
- "TwoLetterISORegionName": "JM"
- },
- {
- "DisplayName": "Japan",
- "Name": "JP",
- "ThreeLetterISORegionName": "JPN",
- "TwoLetterISORegionName": "JP"
- },
- {
- "DisplayName": "Jordan",
- "Name": "JO",
- "ThreeLetterISORegionName": "JOR",
- "TwoLetterISORegionName": "JO"
- },
- {
- "DisplayName": "Kazakhstan",
- "Name": "KZ",
- "ThreeLetterISORegionName": "KAZ",
- "TwoLetterISORegionName": "KZ"
- },
- {
- "DisplayName": "Kenya",
- "Name": "KE",
- "ThreeLetterISORegionName": "KEN",
- "TwoLetterISORegionName": "KE"
- },
- {
- "DisplayName": "Korea",
- "Name": "KR",
- "ThreeLetterISORegionName": "KOR",
- "TwoLetterISORegionName": "KR"
- },
- {
- "DisplayName": "Kuwait",
- "Name": "KW",
- "ThreeLetterISORegionName": "KWT",
- "TwoLetterISORegionName": "KW"
- },
- {
- "DisplayName": "Kyrgyzstan",
- "Name": "KG",
- "ThreeLetterISORegionName": "KGZ",
- "TwoLetterISORegionName": "KG"
- },
- {
- "DisplayName": "Lao P.D.R.",
- "Name": "LA",
- "ThreeLetterISORegionName": "LAO",
- "TwoLetterISORegionName": "LA"
- },
- {
- "DisplayName": "Latin America",
- "Name": "419",
- "ThreeLetterISORegionName": "419",
- "TwoLetterISORegionName": "419"
- },
- {
- "DisplayName": "Latvia",
- "Name": "LV",
- "ThreeLetterISORegionName": "LVA",
- "TwoLetterISORegionName": "LV"
- },
- {
- "DisplayName": "Lebanon",
- "Name": "LB",
- "ThreeLetterISORegionName": "LBN",
- "TwoLetterISORegionName": "LB"
- },
- {
- "DisplayName": "Libya",
- "Name": "LY",
- "ThreeLetterISORegionName": "LBY",
- "TwoLetterISORegionName": "LY"
- },
- {
- "DisplayName": "Liechtenstein",
- "Name": "LI",
- "ThreeLetterISORegionName": "LIE",
- "TwoLetterISORegionName": "LI"
- },
- {
- "DisplayName": "Lithuania",
- "Name": "LT",
- "ThreeLetterISORegionName": "LTU",
- "TwoLetterISORegionName": "LT"
- },
- {
- "DisplayName": "Luxembourg",
- "Name": "LU",
- "ThreeLetterISORegionName": "LUX",
- "TwoLetterISORegionName": "LU"
- },
- {
- "DisplayName": "Macao S.A.R.",
- "Name": "MO",
- "ThreeLetterISORegionName": "MAC",
- "TwoLetterISORegionName": "MO"
- },
- {
- "DisplayName": "Macedonia (FYROM)",
- "Name": "MK",
- "ThreeLetterISORegionName": "MKD",
- "TwoLetterISORegionName": "MK"
- },
- {
- "DisplayName": "Malaysia",
- "Name": "MY",
- "ThreeLetterISORegionName": "MYS",
- "TwoLetterISORegionName": "MY"
- },
- {
- "DisplayName": "Maldives",
- "Name": "MV",
- "ThreeLetterISORegionName": "MDV",
- "TwoLetterISORegionName": "MV"
- },
- {
- "DisplayName": "Mali",
- "Name": "ML",
- "ThreeLetterISORegionName": "MLI",
- "TwoLetterISORegionName": "ML"
- },
- {
- "DisplayName": "Malta",
- "Name": "MT",
- "ThreeLetterISORegionName": "MLT",
- "TwoLetterISORegionName": "MT"
- },
- {
- "DisplayName": "Mexico",
- "Name": "MX",
- "ThreeLetterISORegionName": "MEX",
- "TwoLetterISORegionName": "MX"
- },
- {
- "DisplayName": "Mongolia",
- "Name": "MN",
- "ThreeLetterISORegionName": "MNG",
- "TwoLetterISORegionName": "MN"
- },
- {
- "DisplayName": "Montenegro",
- "Name": "ME",
- "ThreeLetterISORegionName": "MNE",
- "TwoLetterISORegionName": "ME"
- },
- {
- "DisplayName": "Morocco",
- "Name": "MA",
- "ThreeLetterISORegionName": "MAR",
- "TwoLetterISORegionName": "MA"
- },
- {
- "DisplayName": "Nepal",
- "Name": "NP",
- "ThreeLetterISORegionName": "NPL",
- "TwoLetterISORegionName": "NP"
- },
- {
- "DisplayName": "Netherlands",
- "Name": "NL",
- "ThreeLetterISORegionName": "NLD",
- "TwoLetterISORegionName": "NL"
- },
- {
- "DisplayName": "New Zealand",
- "Name": "NZ",
- "ThreeLetterISORegionName": "NZL",
- "TwoLetterISORegionName": "NZ"
- },
- {
- "DisplayName": "Nicaragua",
- "Name": "NI",
- "ThreeLetterISORegionName": "NIC",
- "TwoLetterISORegionName": "NI"
- },
- {
- "DisplayName": "Nigeria",
- "Name": "NG",
- "ThreeLetterISORegionName": "NGA",
- "TwoLetterISORegionName": "NG"
- },
- {
- "DisplayName": "Norway",
- "Name": "NO",
- "ThreeLetterISORegionName": "NOR",
- "TwoLetterISORegionName": "NO"
- },
- {
- "DisplayName": "Oman",
- "Name": "OM",
- "ThreeLetterISORegionName": "OMN",
- "TwoLetterISORegionName": "OM"
- },
- {
- "DisplayName": "Panama",
- "Name": "PA",
- "ThreeLetterISORegionName": "PAN",
- "TwoLetterISORegionName": "PA"
- },
- {
- "DisplayName": "Paraguay",
- "Name": "PY",
- "ThreeLetterISORegionName": "PRY",
- "TwoLetterISORegionName": "PY"
- },
- {
- "DisplayName": "People's Republic of China",
- "Name": "CN",
- "ThreeLetterISORegionName": "CHN",
- "TwoLetterISORegionName": "CN"
- },
- {
- "DisplayName": "Peru",
- "Name": "PE",
- "ThreeLetterISORegionName": "PER",
- "TwoLetterISORegionName": "PE"
- },
- {
- "DisplayName": "Philippines",
- "Name": "PH",
- "ThreeLetterISORegionName": "PHL",
- "TwoLetterISORegionName": "PH"
- },
- {
- "DisplayName": "Poland",
- "Name": "PL",
- "ThreeLetterISORegionName": "POL",
- "TwoLetterISORegionName": "PL"
- },
- {
- "DisplayName": "Portugal",
- "Name": "PT",
- "ThreeLetterISORegionName": "PRT",
- "TwoLetterISORegionName": "PT"
- },
- {
- "DisplayName": "Principality of Monaco",
- "Name": "MC",
- "ThreeLetterISORegionName": "MCO",
- "TwoLetterISORegionName": "MC"
- },
- {
- "DisplayName": "Puerto Rico",
- "Name": "PR",
- "ThreeLetterISORegionName": "PRI",
- "TwoLetterISORegionName": "PR"
- },
- {
- "DisplayName": "Qatar",
- "Name": "QA",
- "ThreeLetterISORegionName": "QAT",
- "TwoLetterISORegionName": "QA"
- },
- {
- "DisplayName": "Republica Moldova",
- "Name": "MD",
- "ThreeLetterISORegionName": "MDA",
- "TwoLetterISORegionName": "MD"
- },
- {
- "DisplayName": "Réunion",
- "Name": "RE",
- "ThreeLetterISORegionName": "REU",
- "TwoLetterISORegionName": "RE"
- },
- {
- "DisplayName": "Romania",
- "Name": "RO",
- "ThreeLetterISORegionName": "ROU",
- "TwoLetterISORegionName": "RO"
- },
- {
- "DisplayName": "Russia",
- "Name": "RU",
- "ThreeLetterISORegionName": "RUS",
- "TwoLetterISORegionName": "RU"
- },
- {
- "DisplayName": "Rwanda",
- "Name": "RW",
- "ThreeLetterISORegionName": "RWA",
- "TwoLetterISORegionName": "RW"
- },
- {
- "DisplayName": "Saudi Arabia",
- "Name": "SA",
- "ThreeLetterISORegionName": "SAU",
- "TwoLetterISORegionName": "SA"
- },
- {
- "DisplayName": "Senegal",
- "Name": "SN",
- "ThreeLetterISORegionName": "SEN",
- "TwoLetterISORegionName": "SN"
- },
- {
- "DisplayName": "Serbia",
- "Name": "RS",
- "ThreeLetterISORegionName": "SRB",
- "TwoLetterISORegionName": "RS"
- },
- {
- "DisplayName": "Serbia and Montenegro (Former)",
- "Name": "CS",
- "ThreeLetterISORegionName": "SCG",
- "TwoLetterISORegionName": "CS"
- },
- {
- "DisplayName": "Singapore",
- "Name": "SG",
- "ThreeLetterISORegionName": "SGP",
- "TwoLetterISORegionName": "SG"
- },
- {
- "DisplayName": "Slovakia",
- "Name": "SK",
- "ThreeLetterISORegionName": "SVK",
- "TwoLetterISORegionName": "SK"
- },
- {
- "DisplayName": "Slovenia",
- "Name": "SI",
- "ThreeLetterISORegionName": "SVN",
- "TwoLetterISORegionName": "SI"
- },
- {
- "DisplayName": "Soomaaliya",
- "Name": "SO",
- "ThreeLetterISORegionName": "SOM",
- "TwoLetterISORegionName": "SO"
- },
- {
- "DisplayName": "South Africa",
- "Name": "ZA",
- "ThreeLetterISORegionName": "ZAF",
- "TwoLetterISORegionName": "ZA"
- },
- {
- "DisplayName": "Spain",
- "Name": "ES",
- "ThreeLetterISORegionName": "ESP",
- "TwoLetterISORegionName": "ES"
- },
- {
- "DisplayName": "Sri Lanka",
- "Name": "LK",
- "ThreeLetterISORegionName": "LKA",
- "TwoLetterISORegionName": "LK"
- },
- {
- "DisplayName": "Sweden",
- "Name": "SE",
- "ThreeLetterISORegionName": "SWE",
- "TwoLetterISORegionName": "SE"
- },
- {
- "DisplayName": "Switzerland",
- "Name": "CH",
- "ThreeLetterISORegionName": "CHE",
- "TwoLetterISORegionName": "CH"
- },
- {
- "DisplayName": "Syria",
- "Name": "SY",
- "ThreeLetterISORegionName": "SYR",
- "TwoLetterISORegionName": "SY"
- },
- {
- "DisplayName": "Taiwan",
- "Name": "TW",
- "ThreeLetterISORegionName": "TWN",
- "TwoLetterISORegionName": "TW"
- },
- {
- "DisplayName": "Tajikistan",
- "Name": "TJ",
- "ThreeLetterISORegionName": "TAJ",
- "TwoLetterISORegionName": "TJ"
- },
- {
- "DisplayName": "Thailand",
- "Name": "TH",
- "ThreeLetterISORegionName": "THA",
- "TwoLetterISORegionName": "TH"
- },
- {
- "DisplayName": "Trinidad and Tobago",
- "Name": "TT",
- "ThreeLetterISORegionName": "TTO",
- "TwoLetterISORegionName": "TT"
- },
- {
- "DisplayName": "Tunisia",
- "Name": "TN",
- "ThreeLetterISORegionName": "TUN",
- "TwoLetterISORegionName": "TN"
- },
- {
- "DisplayName": "Turkey",
- "Name": "TR",
- "ThreeLetterISORegionName": "TUR",
- "TwoLetterISORegionName": "TR"
- },
- {
- "DisplayName": "Turkmenistan",
- "Name": "TM",
- "ThreeLetterISORegionName": "TKM",
- "TwoLetterISORegionName": "TM"
- },
- {
- "DisplayName": "U.A.E.",
- "Name": "AE",
- "ThreeLetterISORegionName": "ARE",
- "TwoLetterISORegionName": "AE"
- },
- {
- "DisplayName": "Ukraine",
- "Name": "UA",
- "ThreeLetterISORegionName": "UKR",
- "TwoLetterISORegionName": "UA"
- },
- {
- "DisplayName": "United Kingdom",
- "Name": "GB",
- "ThreeLetterISORegionName": "GBR",
- "TwoLetterISORegionName": "GB"
- },
- {
- "DisplayName": "United States",
- "Name": "US",
- "ThreeLetterISORegionName": "USA",
- "TwoLetterISORegionName": "US"
- },
- {
- "DisplayName": "Uruguay",
- "Name": "UY",
- "ThreeLetterISORegionName": "URY",
- "TwoLetterISORegionName": "UY"
- },
- {
- "DisplayName": "Uzbekistan",
- "Name": "UZ",
- "ThreeLetterISORegionName": "UZB",
- "TwoLetterISORegionName": "UZ"
- },
- {
- "DisplayName": "Vietnam",
- "Name": "VN",
- "ThreeLetterISORegionName": "VNM",
- "TwoLetterISORegionName": "VN"
- },
- {
- "DisplayName": "Yemen",
- "Name": "YE",
- "ThreeLetterISORegionName": "YEM",
- "TwoLetterISORegionName": "YE"
- },
- {
- "DisplayName": "Zimbabwe",
- "Name": "ZW",
- "ThreeLetterISORegionName": "ZWE",
- "TwoLetterISORegionName": "ZW"
- }
+ {
+ "DisplayName": "Afghanistan",
+ "Name": "AF",
+ "ThreeLetterISORegionName": "AFG",
+ "TwoLetterISORegionName": "AF"
+ },
+ {
+ "DisplayName": "Albania",
+ "Name": "AL",
+ "ThreeLetterISORegionName": "ALB",
+ "TwoLetterISORegionName": "AL"
+ },
+ {
+ "DisplayName": "Algeria",
+ "Name": "DZ",
+ "ThreeLetterISORegionName": "DZA",
+ "TwoLetterISORegionName": "DZ"
+ },
+ {
+ "DisplayName": "Argentina",
+ "Name": "AR",
+ "ThreeLetterISORegionName": "ARG",
+ "TwoLetterISORegionName": "AR"
+ },
+ {
+ "DisplayName": "Armenia",
+ "Name": "AM",
+ "ThreeLetterISORegionName": "ARM",
+ "TwoLetterISORegionName": "AM"
+ },
+ {
+ "DisplayName": "Australia",
+ "Name": "AU",
+ "ThreeLetterISORegionName": "AUS",
+ "TwoLetterISORegionName": "AU"
+ },
+ {
+ "DisplayName": "Austria",
+ "Name": "AT",
+ "ThreeLetterISORegionName": "AUT",
+ "TwoLetterISORegionName": "AT"
+ },
+ {
+ "DisplayName": "Azerbaijan",
+ "Name": "AZ",
+ "ThreeLetterISORegionName": "AZE",
+ "TwoLetterISORegionName": "AZ"
+ },
+ {
+ "DisplayName": "Bahrain",
+ "Name": "BH",
+ "ThreeLetterISORegionName": "BHR",
+ "TwoLetterISORegionName": "BH"
+ },
+ {
+ "DisplayName": "Bangladesh",
+ "Name": "BD",
+ "ThreeLetterISORegionName": "BGD",
+ "TwoLetterISORegionName": "BD"
+ },
+ {
+ "DisplayName": "Belarus",
+ "Name": "BY",
+ "ThreeLetterISORegionName": "BLR",
+ "TwoLetterISORegionName": "BY"
+ },
+ {
+ "DisplayName": "Belgium",
+ "Name": "BE",
+ "ThreeLetterISORegionName": "BEL",
+ "TwoLetterISORegionName": "BE"
+ },
+ {
+ "DisplayName": "Belize",
+ "Name": "BZ",
+ "ThreeLetterISORegionName": "BLZ",
+ "TwoLetterISORegionName": "BZ"
+ },
+ {
+ "DisplayName": "Bolivarian Republic of Venezuela",
+ "Name": "VE",
+ "ThreeLetterISORegionName": "VEN",
+ "TwoLetterISORegionName": "VE"
+ },
+ {
+ "DisplayName": "Bolivia",
+ "Name": "BO",
+ "ThreeLetterISORegionName": "BOL",
+ "TwoLetterISORegionName": "BO"
+ },
+ {
+ "DisplayName": "Bosnia and Herzegovina",
+ "Name": "BA",
+ "ThreeLetterISORegionName": "BIH",
+ "TwoLetterISORegionName": "BA"
+ },
+ {
+ "DisplayName": "Botswana",
+ "Name": "BW",
+ "ThreeLetterISORegionName": "BWA",
+ "TwoLetterISORegionName": "BW"
+ },
+ {
+ "DisplayName": "Brazil",
+ "Name": "BR",
+ "ThreeLetterISORegionName": "BRA",
+ "TwoLetterISORegionName": "BR"
+ },
+ {
+ "DisplayName": "Brunei Darussalam",
+ "Name": "BN",
+ "ThreeLetterISORegionName": "BRN",
+ "TwoLetterISORegionName": "BN"
+ },
+ {
+ "DisplayName": "Bulgaria",
+ "Name": "BG",
+ "ThreeLetterISORegionName": "BGR",
+ "TwoLetterISORegionName": "BG"
+ },
+ {
+ "DisplayName": "Cambodia",
+ "Name": "KH",
+ "ThreeLetterISORegionName": "KHM",
+ "TwoLetterISORegionName": "KH"
+ },
+ {
+ "DisplayName": "Cameroon",
+ "Name": "CM",
+ "ThreeLetterISORegionName": "CMR",
+ "TwoLetterISORegionName": "CM"
+ },
+ {
+ "DisplayName": "Canada",
+ "Name": "CA",
+ "ThreeLetterISORegionName": "CAN",
+ "TwoLetterISORegionName": "CA"
+ },
+ {
+ "DisplayName": "Caribbean",
+ "Name": "029",
+ "ThreeLetterISORegionName": "029",
+ "TwoLetterISORegionName": "029"
+ },
+ {
+ "DisplayName": "Chile",
+ "Name": "CL",
+ "ThreeLetterISORegionName": "CHL",
+ "TwoLetterISORegionName": "CL"
+ },
+ {
+ "DisplayName": "Colombia",
+ "Name": "CO",
+ "ThreeLetterISORegionName": "COL",
+ "TwoLetterISORegionName": "CO"
+ },
+ {
+ "DisplayName": "Congo [DRC]",
+ "Name": "CD",
+ "ThreeLetterISORegionName": "COD",
+ "TwoLetterISORegionName": "CD"
+ },
+ {
+ "DisplayName": "Costa Rica",
+ "Name": "CR",
+ "ThreeLetterISORegionName": "CRI",
+ "TwoLetterISORegionName": "CR"
+ },
+ {
+ "DisplayName": "Croatia",
+ "Name": "HR",
+ "ThreeLetterISORegionName": "HRV",
+ "TwoLetterISORegionName": "HR"
+ },
+ {
+ "DisplayName": "Czech Republic",
+ "Name": "CZ",
+ "ThreeLetterISORegionName": "CZE",
+ "TwoLetterISORegionName": "CZ"
+ },
+ {
+ "DisplayName": "Denmark",
+ "Name": "DK",
+ "ThreeLetterISORegionName": "DNK",
+ "TwoLetterISORegionName": "DK"
+ },
+ {
+ "DisplayName": "Dominican Republic",
+ "Name": "DO",
+ "ThreeLetterISORegionName": "DOM",
+ "TwoLetterISORegionName": "DO"
+ },
+ {
+ "DisplayName": "Ecuador",
+ "Name": "EC",
+ "ThreeLetterISORegionName": "ECU",
+ "TwoLetterISORegionName": "EC"
+ },
+ {
+ "DisplayName": "Egypt",
+ "Name": "EG",
+ "ThreeLetterISORegionName": "EGY",
+ "TwoLetterISORegionName": "EG"
+ },
+ {
+ "DisplayName": "El Salvador",
+ "Name": "SV",
+ "ThreeLetterISORegionName": "SLV",
+ "TwoLetterISORegionName": "SV"
+ },
+ {
+ "DisplayName": "Eritrea",
+ "Name": "ER",
+ "ThreeLetterISORegionName": "ERI",
+ "TwoLetterISORegionName": "ER"
+ },
+ {
+ "DisplayName": "Estonia",
+ "Name": "EE",
+ "ThreeLetterISORegionName": "EST",
+ "TwoLetterISORegionName": "EE"
+ },
+ {
+ "DisplayName": "Ethiopia",
+ "Name": "ET",
+ "ThreeLetterISORegionName": "ETH",
+ "TwoLetterISORegionName": "ET"
+ },
+ {
+ "DisplayName": "Faroe Islands",
+ "Name": "FO",
+ "ThreeLetterISORegionName": "FRO",
+ "TwoLetterISORegionName": "FO"
+ },
+ {
+ "DisplayName": "Finland",
+ "Name": "FI",
+ "ThreeLetterISORegionName": "FIN",
+ "TwoLetterISORegionName": "FI"
+ },
+ {
+ "DisplayName": "France",
+ "Name": "FR",
+ "ThreeLetterISORegionName": "FRA",
+ "TwoLetterISORegionName": "FR"
+ },
+ {
+ "DisplayName": "Georgia",
+ "Name": "GE",
+ "ThreeLetterISORegionName": "GEO",
+ "TwoLetterISORegionName": "GE"
+ },
+ {
+ "DisplayName": "Germany",
+ "Name": "DE",
+ "ThreeLetterISORegionName": "DEU",
+ "TwoLetterISORegionName": "DE"
+ },
+ {
+ "DisplayName": "Greece",
+ "Name": "GR",
+ "ThreeLetterISORegionName": "GRC",
+ "TwoLetterISORegionName": "GR"
+ },
+ {
+ "DisplayName": "Greenland",
+ "Name": "GL",
+ "ThreeLetterISORegionName": "GRL",
+ "TwoLetterISORegionName": "GL"
+ },
+ {
+ "DisplayName": "Guatemala",
+ "Name": "GT",
+ "ThreeLetterISORegionName": "GTM",
+ "TwoLetterISORegionName": "GT"
+ },
+ {
+ "DisplayName": "Haiti",
+ "Name": "HT",
+ "ThreeLetterISORegionName": "HTI",
+ "TwoLetterISORegionName": "HT"
+ },
+ {
+ "DisplayName": "Honduras",
+ "Name": "HN",
+ "ThreeLetterISORegionName": "HND",
+ "TwoLetterISORegionName": "HN"
+ },
+ {
+ "DisplayName": "Hong Kong S.A.R.",
+ "Name": "HK",
+ "ThreeLetterISORegionName": "HKG",
+ "TwoLetterISORegionName": "HK"
+ },
+ {
+ "DisplayName": "Hungary",
+ "Name": "HU",
+ "ThreeLetterISORegionName": "HUN",
+ "TwoLetterISORegionName": "HU"
+ },
+ {
+ "DisplayName": "Iceland",
+ "Name": "IS",
+ "ThreeLetterISORegionName": "ISL",
+ "TwoLetterISORegionName": "IS"
+ },
+ {
+ "DisplayName": "India",
+ "Name": "IN",
+ "ThreeLetterISORegionName": "IND",
+ "TwoLetterISORegionName": "IN"
+ },
+ {
+ "DisplayName": "Indonesia",
+ "Name": "ID",
+ "ThreeLetterISORegionName": "IDN",
+ "TwoLetterISORegionName": "ID"
+ },
+ {
+ "DisplayName": "Iran",
+ "Name": "IR",
+ "ThreeLetterISORegionName": "IRN",
+ "TwoLetterISORegionName": "IR"
+ },
+ {
+ "DisplayName": "Iraq",
+ "Name": "IQ",
+ "ThreeLetterISORegionName": "IRQ",
+ "TwoLetterISORegionName": "IQ"
+ },
+ {
+ "DisplayName": "Ireland",
+ "Name": "IE",
+ "ThreeLetterISORegionName": "IRL",
+ "TwoLetterISORegionName": "IE"
+ },
+ {
+ "DisplayName": "Islamic Republic of Pakistan",
+ "Name": "PK",
+ "ThreeLetterISORegionName": "PAK",
+ "TwoLetterISORegionName": "PK"
+ },
+ {
+ "DisplayName": "Israel",
+ "Name": "IL",
+ "ThreeLetterISORegionName": "ISR",
+ "TwoLetterISORegionName": "IL"
+ },
+ {
+ "DisplayName": "Italy",
+ "Name": "IT",
+ "ThreeLetterISORegionName": "ITA",
+ "TwoLetterISORegionName": "IT"
+ },
+ {
+ "DisplayName": "Ivory Coast",
+ "Name": "CI",
+ "ThreeLetterISORegionName": "CIV",
+ "TwoLetterISORegionName": "CI"
+ },
+ {
+ "DisplayName": "Jamaica",
+ "Name": "JM",
+ "ThreeLetterISORegionName": "JAM",
+ "TwoLetterISORegionName": "JM"
+ },
+ {
+ "DisplayName": "Japan",
+ "Name": "JP",
+ "ThreeLetterISORegionName": "JPN",
+ "TwoLetterISORegionName": "JP"
+ },
+ {
+ "DisplayName": "Jordan",
+ "Name": "JO",
+ "ThreeLetterISORegionName": "JOR",
+ "TwoLetterISORegionName": "JO"
+ },
+ {
+ "DisplayName": "Kazakhstan",
+ "Name": "KZ",
+ "ThreeLetterISORegionName": "KAZ",
+ "TwoLetterISORegionName": "KZ"
+ },
+ {
+ "DisplayName": "Kenya",
+ "Name": "KE",
+ "ThreeLetterISORegionName": "KEN",
+ "TwoLetterISORegionName": "KE"
+ },
+ {
+ "DisplayName": "Korea",
+ "Name": "KR",
+ "ThreeLetterISORegionName": "KOR",
+ "TwoLetterISORegionName": "KR"
+ },
+ {
+ "DisplayName": "Kuwait",
+ "Name": "KW",
+ "ThreeLetterISORegionName": "KWT",
+ "TwoLetterISORegionName": "KW"
+ },
+ {
+ "DisplayName": "Kyrgyzstan",
+ "Name": "KG",
+ "ThreeLetterISORegionName": "KGZ",
+ "TwoLetterISORegionName": "KG"
+ },
+ {
+ "DisplayName": "Lao P.D.R.",
+ "Name": "LA",
+ "ThreeLetterISORegionName": "LAO",
+ "TwoLetterISORegionName": "LA"
+ },
+ {
+ "DisplayName": "Latin America",
+ "Name": "419",
+ "ThreeLetterISORegionName": "419",
+ "TwoLetterISORegionName": "419"
+ },
+ {
+ "DisplayName": "Latvia",
+ "Name": "LV",
+ "ThreeLetterISORegionName": "LVA",
+ "TwoLetterISORegionName": "LV"
+ },
+ {
+ "DisplayName": "Lebanon",
+ "Name": "LB",
+ "ThreeLetterISORegionName": "LBN",
+ "TwoLetterISORegionName": "LB"
+ },
+ {
+ "DisplayName": "Libya",
+ "Name": "LY",
+ "ThreeLetterISORegionName": "LBY",
+ "TwoLetterISORegionName": "LY"
+ },
+ {
+ "DisplayName": "Liechtenstein",
+ "Name": "LI",
+ "ThreeLetterISORegionName": "LIE",
+ "TwoLetterISORegionName": "LI"
+ },
+ {
+ "DisplayName": "Lithuania",
+ "Name": "LT",
+ "ThreeLetterISORegionName": "LTU",
+ "TwoLetterISORegionName": "LT"
+ },
+ {
+ "DisplayName": "Luxembourg",
+ "Name": "LU",
+ "ThreeLetterISORegionName": "LUX",
+ "TwoLetterISORegionName": "LU"
+ },
+ {
+ "DisplayName": "Macao S.A.R.",
+ "Name": "MO",
+ "ThreeLetterISORegionName": "MAC",
+ "TwoLetterISORegionName": "MO"
+ },
+ {
+ "DisplayName": "Macedonia (FYROM)",
+ "Name": "MK",
+ "ThreeLetterISORegionName": "MKD",
+ "TwoLetterISORegionName": "MK"
+ },
+ {
+ "DisplayName": "Malaysia",
+ "Name": "MY",
+ "ThreeLetterISORegionName": "MYS",
+ "TwoLetterISORegionName": "MY"
+ },
+ {
+ "DisplayName": "Maldives",
+ "Name": "MV",
+ "ThreeLetterISORegionName": "MDV",
+ "TwoLetterISORegionName": "MV"
+ },
+ {
+ "DisplayName": "Mali",
+ "Name": "ML",
+ "ThreeLetterISORegionName": "MLI",
+ "TwoLetterISORegionName": "ML"
+ },
+ {
+ "DisplayName": "Malta",
+ "Name": "MT",
+ "ThreeLetterISORegionName": "MLT",
+ "TwoLetterISORegionName": "MT"
+ },
+ {
+ "DisplayName": "Mexico",
+ "Name": "MX",
+ "ThreeLetterISORegionName": "MEX",
+ "TwoLetterISORegionName": "MX"
+ },
+ {
+ "DisplayName": "Mongolia",
+ "Name": "MN",
+ "ThreeLetterISORegionName": "MNG",
+ "TwoLetterISORegionName": "MN"
+ },
+ {
+ "DisplayName": "Montenegro",
+ "Name": "ME",
+ "ThreeLetterISORegionName": "MNE",
+ "TwoLetterISORegionName": "ME"
+ },
+ {
+ "DisplayName": "Morocco",
+ "Name": "MA",
+ "ThreeLetterISORegionName": "MAR",
+ "TwoLetterISORegionName": "MA"
+ },
+ {
+ "DisplayName": "Nepal",
+ "Name": "NP",
+ "ThreeLetterISORegionName": "NPL",
+ "TwoLetterISORegionName": "NP"
+ },
+ {
+ "DisplayName": "Netherlands",
+ "Name": "NL",
+ "ThreeLetterISORegionName": "NLD",
+ "TwoLetterISORegionName": "NL"
+ },
+ {
+ "DisplayName": "New Zealand",
+ "Name": "NZ",
+ "ThreeLetterISORegionName": "NZL",
+ "TwoLetterISORegionName": "NZ"
+ },
+ {
+ "DisplayName": "Nicaragua",
+ "Name": "NI",
+ "ThreeLetterISORegionName": "NIC",
+ "TwoLetterISORegionName": "NI"
+ },
+ {
+ "DisplayName": "Nigeria",
+ "Name": "NG",
+ "ThreeLetterISORegionName": "NGA",
+ "TwoLetterISORegionName": "NG"
+ },
+ {
+ "DisplayName": "Norway",
+ "Name": "NO",
+ "ThreeLetterISORegionName": "NOR",
+ "TwoLetterISORegionName": "NO"
+ },
+ {
+ "DisplayName": "Oman",
+ "Name": "OM",
+ "ThreeLetterISORegionName": "OMN",
+ "TwoLetterISORegionName": "OM"
+ },
+ {
+ "DisplayName": "Panama",
+ "Name": "PA",
+ "ThreeLetterISORegionName": "PAN",
+ "TwoLetterISORegionName": "PA"
+ },
+ {
+ "DisplayName": "Paraguay",
+ "Name": "PY",
+ "ThreeLetterISORegionName": "PRY",
+ "TwoLetterISORegionName": "PY"
+ },
+ {
+ "DisplayName": "People's Republic of China",
+ "Name": "CN",
+ "ThreeLetterISORegionName": "CHN",
+ "TwoLetterISORegionName": "CN"
+ },
+ {
+ "DisplayName": "Peru",
+ "Name": "PE",
+ "ThreeLetterISORegionName": "PER",
+ "TwoLetterISORegionName": "PE"
+ },
+ {
+ "DisplayName": "Philippines",
+ "Name": "PH",
+ "ThreeLetterISORegionName": "PHL",
+ "TwoLetterISORegionName": "PH"
+ },
+ {
+ "DisplayName": "Poland",
+ "Name": "PL",
+ "ThreeLetterISORegionName": "POL",
+ "TwoLetterISORegionName": "PL"
+ },
+ {
+ "DisplayName": "Portugal",
+ "Name": "PT",
+ "ThreeLetterISORegionName": "PRT",
+ "TwoLetterISORegionName": "PT"
+ },
+ {
+ "DisplayName": "Principality of Monaco",
+ "Name": "MC",
+ "ThreeLetterISORegionName": "MCO",
+ "TwoLetterISORegionName": "MC"
+ },
+ {
+ "DisplayName": "Puerto Rico",
+ "Name": "PR",
+ "ThreeLetterISORegionName": "PRI",
+ "TwoLetterISORegionName": "PR"
+ },
+ {
+ "DisplayName": "Qatar",
+ "Name": "QA",
+ "ThreeLetterISORegionName": "QAT",
+ "TwoLetterISORegionName": "QA"
+ },
+ {
+ "DisplayName": "Republica Moldova",
+ "Name": "MD",
+ "ThreeLetterISORegionName": "MDA",
+ "TwoLetterISORegionName": "MD"
+ },
+ {
+ "DisplayName": "Réunion",
+ "Name": "RE",
+ "ThreeLetterISORegionName": "REU",
+ "TwoLetterISORegionName": "RE"
+ },
+ {
+ "DisplayName": "Romania",
+ "Name": "RO",
+ "ThreeLetterISORegionName": "ROU",
+ "TwoLetterISORegionName": "RO"
+ },
+ {
+ "DisplayName": "Russia",
+ "Name": "RU",
+ "ThreeLetterISORegionName": "RUS",
+ "TwoLetterISORegionName": "RU"
+ },
+ {
+ "DisplayName": "Rwanda",
+ "Name": "RW",
+ "ThreeLetterISORegionName": "RWA",
+ "TwoLetterISORegionName": "RW"
+ },
+ {
+ "DisplayName": "Saudi Arabia",
+ "Name": "SA",
+ "ThreeLetterISORegionName": "SAU",
+ "TwoLetterISORegionName": "SA"
+ },
+ {
+ "DisplayName": "Senegal",
+ "Name": "SN",
+ "ThreeLetterISORegionName": "SEN",
+ "TwoLetterISORegionName": "SN"
+ },
+ {
+ "DisplayName": "Serbia",
+ "Name": "RS",
+ "ThreeLetterISORegionName": "SRB",
+ "TwoLetterISORegionName": "RS"
+ },
+ {
+ "DisplayName": "Serbia and Montenegro (Former)",
+ "Name": "CS",
+ "ThreeLetterISORegionName": "SCG",
+ "TwoLetterISORegionName": "CS"
+ },
+ {
+ "DisplayName": "Singapore",
+ "Name": "SG",
+ "ThreeLetterISORegionName": "SGP",
+ "TwoLetterISORegionName": "SG"
+ },
+ {
+ "DisplayName": "Slovakia",
+ "Name": "SK",
+ "ThreeLetterISORegionName": "SVK",
+ "TwoLetterISORegionName": "SK"
+ },
+ {
+ "DisplayName": "Slovenia",
+ "Name": "SI",
+ "ThreeLetterISORegionName": "SVN",
+ "TwoLetterISORegionName": "SI"
+ },
+ {
+ "DisplayName": "Soomaaliya",
+ "Name": "SO",
+ "ThreeLetterISORegionName": "SOM",
+ "TwoLetterISORegionName": "SO"
+ },
+ {
+ "DisplayName": "South Africa",
+ "Name": "ZA",
+ "ThreeLetterISORegionName": "ZAF",
+ "TwoLetterISORegionName": "ZA"
+ },
+ {
+ "DisplayName": "Spain",
+ "Name": "ES",
+ "ThreeLetterISORegionName": "ESP",
+ "TwoLetterISORegionName": "ES"
+ },
+ {
+ "DisplayName": "Sri Lanka",
+ "Name": "LK",
+ "ThreeLetterISORegionName": "LKA",
+ "TwoLetterISORegionName": "LK"
+ },
+ {
+ "DisplayName": "Sweden",
+ "Name": "SE",
+ "ThreeLetterISORegionName": "SWE",
+ "TwoLetterISORegionName": "SE"
+ },
+ {
+ "DisplayName": "Switzerland",
+ "Name": "CH",
+ "ThreeLetterISORegionName": "CHE",
+ "TwoLetterISORegionName": "CH"
+ },
+ {
+ "DisplayName": "Syria",
+ "Name": "SY",
+ "ThreeLetterISORegionName": "SYR",
+ "TwoLetterISORegionName": "SY"
+ },
+ {
+ "DisplayName": "Taiwan",
+ "Name": "TW",
+ "ThreeLetterISORegionName": "TWN",
+ "TwoLetterISORegionName": "TW"
+ },
+ {
+ "DisplayName": "Tajikistan",
+ "Name": "TJ",
+ "ThreeLetterISORegionName": "TAJ",
+ "TwoLetterISORegionName": "TJ"
+ },
+ {
+ "DisplayName": "Thailand",
+ "Name": "TH",
+ "ThreeLetterISORegionName": "THA",
+ "TwoLetterISORegionName": "TH"
+ },
+ {
+ "DisplayName": "Trinidad and Tobago",
+ "Name": "TT",
+ "ThreeLetterISORegionName": "TTO",
+ "TwoLetterISORegionName": "TT"
+ },
+ {
+ "DisplayName": "Tunisia",
+ "Name": "TN",
+ "ThreeLetterISORegionName": "TUN",
+ "TwoLetterISORegionName": "TN"
+ },
+ {
+ "DisplayName": "Turkey",
+ "Name": "TR",
+ "ThreeLetterISORegionName": "TUR",
+ "TwoLetterISORegionName": "TR"
+ },
+ {
+ "DisplayName": "Turkmenistan",
+ "Name": "TM",
+ "ThreeLetterISORegionName": "TKM",
+ "TwoLetterISORegionName": "TM"
+ },
+ {
+ "DisplayName": "U.A.E.",
+ "Name": "AE",
+ "ThreeLetterISORegionName": "ARE",
+ "TwoLetterISORegionName": "AE"
+ },
+ {
+ "DisplayName": "Ukraine",
+ "Name": "UA",
+ "ThreeLetterISORegionName": "UKR",
+ "TwoLetterISORegionName": "UA"
+ },
+ {
+ "DisplayName": "United Kingdom",
+ "Name": "GB",
+ "ThreeLetterISORegionName": "GBR",
+ "TwoLetterISORegionName": "GB"
+ },
+ {
+ "DisplayName": "United States",
+ "Name": "US",
+ "ThreeLetterISORegionName": "USA",
+ "TwoLetterISORegionName": "US"
+ },
+ {
+ "DisplayName": "Uruguay",
+ "Name": "UY",
+ "ThreeLetterISORegionName": "URY",
+ "TwoLetterISORegionName": "UY"
+ },
+ {
+ "DisplayName": "Uzbekistan",
+ "Name": "UZ",
+ "ThreeLetterISORegionName": "UZB",
+ "TwoLetterISORegionName": "UZ"
+ },
+ {
+ "DisplayName": "Vietnam",
+ "Name": "VN",
+ "ThreeLetterISORegionName": "VNM",
+ "TwoLetterISORegionName": "VN"
+ },
+ {
+ "DisplayName": "Yemen",
+ "Name": "YE",
+ "ThreeLetterISORegionName": "YEM",
+ "TwoLetterISORegionName": "YE"
+ },
+ {
+ "DisplayName": "Zimbabwe",
+ "Name": "ZW",
+ "ThreeLetterISORegionName": "ZWE",
+ "TwoLetterISORegionName": "ZW"
+ }
]
diff --git a/Emby.Server.Implementations/Localization/iso6392.txt b/Emby.Server.Implementations/Localization/iso6392.txt
index a7e7cfc20..f2cea78b6 100644
--- a/Emby.Server.Implementations/Localization/iso6392.txt
+++ b/Emby.Server.Implementations/Localization/iso6392.txt
@@ -1,4 +1,4 @@
-aar||aa|Afar|afar
+aar||aa|Afar|afar
abk||ab|Abkhazian|abkhaze
ace|||Achinese|aceh
ach|||Acoli|acoli
@@ -485,4 +485,4 @@ znd|||Zande languages|zandé, langues
zul||zu|Zulu|zoulou
zun|||Zuni|zuni
zxx|||No linguistic content; Not applicable|pas de contenu linguistique; non applicable
-zza|||Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki|zaza; dimili; dimli; kirdki; kirmanjki; zazaki \ No newline at end of file
+zza|||Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki|zaza; dimili; dimli; kirdki; kirmanjki; zazaki
diff --git a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
index 2db7b01db..316c2c2a3 100644
--- a/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
+++ b/Emby.Server.Implementations/MediaEncoder/EncodingManager.cs
@@ -1,11 +1,3 @@
-using MediaBrowser.Controller.Chapters;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.MediaEncoding;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -13,11 +5,15 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Controller.Chapters;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
+using MediaBrowser.Model.MediaInfo;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.MediaEncoder
{
diff --git a/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
index 9d880b0c9..304b44565 100644
--- a/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
+++ b/Emby.Server.Implementations/Net/DisposableManagedObjectBase.cs
@@ -19,10 +19,10 @@ namespace Emby.Server.Implementations.Net
//TODO Remove and reimplement using the IsDisposed property directly.
/// <summary>
- /// Throws an <see cref="System.ObjectDisposedException"/> if the <see cref="IsDisposed"/> property is true.
+ /// Throws an <see cref="ObjectDisposedException"/> if the <see cref="IsDisposed"/> property is true.
/// </summary>
/// <seealso cref="IsDisposed"/>
- /// <exception cref="System.ObjectDisposedException">Thrown if the <see cref="IsDisposed"/> property is true.</exception>
+ /// <exception cref="ObjectDisposedException">Thrown if the <see cref="IsDisposed"/> property is true.</exception>
/// <seealso cref="Dispose()"/>
protected virtual void ThrowIfDisposed()
{
diff --git a/Emby.Server.Implementations/Net/IWebSocket.cs b/Emby.Server.Implementations/Net/IWebSocket.cs
index f79199a07..4671de07c 100644
--- a/Emby.Server.Implementations/Net/IWebSocket.cs
+++ b/Emby.Server.Implementations/Net/IWebSocket.cs
@@ -1,7 +1,7 @@
-using System;
+using System;
+using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-using System.Net.WebSockets;
namespace Emby.Server.Implementations.Net
{
diff --git a/Emby.Server.Implementations/Net/SocketFactory.cs b/Emby.Server.Implementations/Net/SocketFactory.cs
index 51d08bd6f..2e22fbbb8 100644
--- a/Emby.Server.Implementations/Net/SocketFactory.cs
+++ b/Emby.Server.Implementations/Net/SocketFactory.cs
@@ -1,10 +1,10 @@
-using System;
+using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using Emby.Server.Implementations.Networking;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Net;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Net
{
diff --git a/Emby.Server.Implementations/Net/UdpSocket.cs b/Emby.Server.Implementations/Net/UdpSocket.cs
index 39f25e024..d48855486 100644
--- a/Emby.Server.Implementations/Net/UdpSocket.cs
+++ b/Emby.Server.Implementations/Net/UdpSocket.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
@@ -133,8 +133,8 @@ namespace Emby.Server.Implementations.Net
{
ThrowIfDisposed();
- IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
- EndPoint remoteEndPoint = (EndPoint)sender;
+ var sender = new IPEndPoint(IPAddress.Any, 0);
+ var remoteEndPoint = (EndPoint)sender;
var receivedBytes = _Socket.EndReceiveFrom(result, ref remoteEndPoint);
diff --git a/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs b/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs
index 7b7f12d50..3ab8e854a 100644
--- a/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs
+++ b/Emby.Server.Implementations/Net/WebSocketConnectEventArgs.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+using System;
using MediaBrowser.Model.Services;
namespace Emby.Server.Implementations.Net
diff --git a/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs b/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs
index 4da9c08d0..447cbf403 100644
--- a/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs
+++ b/Emby.Server.Implementations/Networking/IPNetwork/BigIntegerExt.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace System.Net
{
@@ -7,7 +7,7 @@ namespace System.Net
using System.Text;
/// <summary>
- /// Extension methods to convert <see cref="System.Numerics.BigInteger"/>
+ /// Extension methods to convert <see cref="BigInteger"/>
/// instances to hexadecimal, octal, and binary strings.
/// </summary>
public static class BigIntegerExtensions
@@ -17,7 +17,7 @@ namespace System.Net
/// </summary>
/// <param name="bigint">A <see cref="BigInteger"/>.</param>
/// <returns>
- /// A <see cref="System.String"/> containing a binary
+ /// A <see cref="string"/> containing a binary
/// representation of the supplied <see cref="BigInteger"/>.
/// </returns>
public static string ToBinaryString(this BigInteger bigint)
@@ -54,7 +54,7 @@ namespace System.Net
/// </summary>
/// <param name="bigint">A <see cref="BigInteger"/>.</param>
/// <returns>
- /// A <see cref="System.String"/> containing a hexadecimal
+ /// A <see cref="string"/> containing a hexadecimal
/// representation of the supplied <see cref="BigInteger"/>.
/// </returns>
public static string ToHexadecimalString(this BigInteger bigint)
@@ -67,7 +67,7 @@ namespace System.Net
/// </summary>
/// <param name="bigint">A <see cref="BigInteger"/>.</param>
/// <returns>
- /// A <see cref="System.String"/> containing an octal
+ /// A <see cref="string"/> containing an octal
/// representation of the supplied <see cref="BigInteger"/>.
/// </returns>
public static string ToOctalString(this BigInteger bigint)
@@ -165,4 +165,4 @@ namespace System.Net
}
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs
index 7fe6a8d3d..c5853135c 100644
--- a/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs
+++ b/Emby.Server.Implementations/Networking/IPNetwork/IPAddressCollection.cs
@@ -1,4 +1,4 @@
-using System.Collections;
+using System.Collections;
using System.Collections.Generic;
using System.Numerics;
@@ -30,7 +30,7 @@ namespace System.Net
throw new ArgumentOutOfRangeException(nameof(i));
}
byte width = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetwork ? (byte)32 : (byte)128;
- IPNetworkCollection ipn = this._ipnetwork.Subnet(width);
+ var ipn = this._ipnetwork.Subnet(width);
return ipn[i].Network;
}
}
@@ -89,4 +89,4 @@ namespace System.Net
#endregion
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs
index 9a0020de7..16f39daf7 100644
--- a/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs
+++ b/Emby.Server.Implementations/Networking/IPNetwork/IPNetwork.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.IO;
using System.Net.Sockets;
using System.Numerics;
@@ -33,7 +33,7 @@ namespace System.Net
{
get
{
- BigInteger uintNetwork = this._ipaddress & this._netmask;
+ var uintNetwork = this._ipaddress & this._netmask;
return uintNetwork;
}
}
@@ -61,7 +61,7 @@ namespace System.Net
{
int width = this._family == Sockets.AddressFamily.InterNetwork ? 4 : 16;
- BigInteger uintBroadcast = this._network + this._netmask.PositiveReverse(width);
+ var uintBroadcast = this._network + this._netmask.PositiveReverse(width);
return uintBroadcast;
}
}
@@ -88,7 +88,7 @@ namespace System.Net
{
get
{
- BigInteger fisrt = this._family == Sockets.AddressFamily.InterNetworkV6
+ var fisrt = this._family == Sockets.AddressFamily.InterNetworkV6
? this._network
: (this.Usable <= 0) ? this._network : this._network + 1;
return IPNetwork.ToIPAddress(fisrt, this._family);
@@ -102,7 +102,7 @@ namespace System.Net
{
get
{
- BigInteger last = this._family == Sockets.AddressFamily.InterNetworkV6
+ var last = this._family == Sockets.AddressFamily.InterNetworkV6
? this._broadcast
: (this.Usable <= 0) ? this._network : this._broadcast - 1;
return IPNetwork.ToIPAddress(last, this._family);
@@ -122,8 +122,8 @@ namespace System.Net
return this.Total;
}
byte[] mask = new byte[] { 0xff, 0xff, 0xff, 0xff, 0x00 };
- BigInteger bmask = new BigInteger(mask);
- BigInteger usableIps = (_cidr > 30) ? 0 : ((bmask >> _cidr) - 1);
+ var bmask = new BigInteger(mask);
+ var usableIps = (_cidr > 30) ? 0 : ((bmask >> _cidr) - 1);
return usableIps;
}
}
@@ -137,7 +137,7 @@ namespace System.Net
{
int max = this._family == Sockets.AddressFamily.InterNetwork ? 32 : 128;
- BigInteger count = BigInteger.Pow(2, (max - _cidr));
+ var count = BigInteger.Pow(2, (max - _cidr));
return count;
}
}
@@ -523,9 +523,8 @@ namespace System.Net
return;
}
- BigInteger uintIpAddress = IPNetwork.ToBigInteger(ipaddress);
- byte? cidr2 = null;
- bool parsed = IPNetwork.TryToCidr(netmask, out cidr2);
+ var uintIpAddress = IPNetwork.ToBigInteger(ipaddress);
+ bool parsed = IPNetwork.TryToCidr(netmask, out var cidr2);
if (parsed == false)
{
if (tryParse == false)
@@ -537,7 +536,7 @@ namespace System.Net
}
byte cidr = (byte)cidr2;
- IPNetwork ipnet = new IPNetwork(uintIpAddress, ipaddress.AddressFamily, cidr);
+ var ipnet = new IPNetwork(uintIpAddress, ipaddress.AddressFamily, cidr);
ipnetwork = ipnet;
return;
@@ -615,8 +614,7 @@ namespace System.Net
/// <returns></returns>
public static BigInteger ToBigInteger(IPAddress ipaddress)
{
- BigInteger? uintIpAddress = null;
- IPNetwork.InternalToBigInteger(false, ipaddress, out uintIpAddress);
+ IPNetwork.InternalToBigInteger(false, ipaddress, out var uintIpAddress);
return (BigInteger)uintIpAddress;
}
@@ -630,8 +628,7 @@ namespace System.Net
/// <returns></returns>
public static bool TryToBigInteger(IPAddress ipaddress, out BigInteger? uintIpAddress)
{
- BigInteger? uintIpAddress2 = null;
- IPNetwork.InternalToBigInteger(true, ipaddress, out uintIpAddress2);
+ IPNetwork.InternalToBigInteger(true, ipaddress, out var uintIpAddress2);
bool parsed = (uintIpAddress2 != null);
uintIpAddress = uintIpAddress2;
return parsed;
@@ -681,9 +678,7 @@ namespace System.Net
/// <returns></returns>
public static BigInteger ToUint(byte cidr, AddressFamily family)
{
-
- BigInteger? uintNetmask = null;
- IPNetwork.InternalToBigInteger(false, cidr, family, out uintNetmask);
+ IPNetwork.InternalToBigInteger(false, cidr, family, out var uintNetmask);
return (BigInteger)uintNetmask;
}
@@ -695,9 +690,7 @@ namespace System.Net
/// <returns></returns>
public static bool TryToUint(byte cidr, AddressFamily family, out BigInteger? uintNetmask)
{
-
- BigInteger? uintNetmask2 = null;
- IPNetwork.InternalToBigInteger(true, cidr, family, out uintNetmask2);
+ IPNetwork.InternalToBigInteger(true, cidr, family, out var uintNetmask2);
bool parsed = (uintNetmask2 != null);
uintNetmask = uintNetmask2;
return parsed;
@@ -754,7 +747,7 @@ namespace System.Net
return;
}
- BigInteger mask = new BigInteger(new byte[] {
+ var mask = new BigInteger(new byte[] {
0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff,
@@ -762,7 +755,7 @@ namespace System.Net
0x00
});
- BigInteger masked = cidr == 0 ? 0 : mask << (128 - cidr);
+ var masked = cidr == 0 ? 0 : mask << (128 - cidr);
byte[] m = masked.ToByteArray();
byte[] bmask = new byte[17];
int copy = m.Length > 16 ? 16 : m.Length;
@@ -812,8 +805,7 @@ namespace System.Net
/// <returns></returns>
public static byte ToCidr(IPAddress netmask)
{
- byte? cidr = null;
- IPNetwork.InternalToCidr(false, netmask, out cidr);
+ IPNetwork.InternalToCidr(false, netmask, out var cidr);
return (byte)cidr;
}
@@ -827,8 +819,7 @@ namespace System.Net
/// <returns></returns>
public static bool TryToCidr(IPAddress netmask, out byte? cidr)
{
- byte? cidr2 = null;
- IPNetwork.InternalToCidr(true, netmask, out cidr2);
+ IPNetwork.InternalToCidr(true, netmask, out var cidr2);
bool parsed = (cidr2 != null);
cidr = cidr2;
return parsed;
@@ -846,8 +837,8 @@ namespace System.Net
cidr = null;
return;
}
- BigInteger? uintNetmask2 = null;
- bool parsed = IPNetwork.TryToBigInteger(netmask, out uintNetmask2);
+
+ bool parsed = IPNetwork.TryToBigInteger(netmask, out var uintNetmask2);
/// 20180217 lduchosal
/// impossible to reach code.
@@ -858,10 +849,9 @@ namespace System.Net
/// cidr = null;
/// return;
/// }
- BigInteger uintNetmask = (BigInteger)uintNetmask2;
+ var uintNetmask = (BigInteger)uintNetmask2;
- byte? cidr2 = null;
- IPNetwork.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out cidr2);
+ IPNetwork.InternalToCidr(tryParse, uintNetmask, netmask.AddressFamily, out var cidr2);
cidr = cidr2;
return;
@@ -951,8 +941,8 @@ namespace System.Net
return;
}
- BigInteger mask = IPNetwork.ToUint(cidr, family);
- IPAddress netmask2 = IPNetwork.ToIPAddress(mask, family);
+ var mask = IPNetwork.ToUint(cidr, family);
+ var netmask2 = IPNetwork.ToIPAddress(mask, family);
netmask = netmask2;
return;
@@ -990,7 +980,7 @@ namespace System.Net
/// <returns></returns>
public static uint BitsSet(IPAddress netmask)
{
- BigInteger uintNetmask = IPNetwork.ToBigInteger(netmask);
+ var uintNetmask = IPNetwork.ToBigInteger(netmask);
uint bits = IPNetwork.BitsSet(uintNetmask, netmask.AddressFamily);
return bits;
}
@@ -1013,7 +1003,7 @@ namespace System.Net
{
throw new ArgumentNullException(nameof(netmask));
}
- BigInteger uintNetmask = IPNetwork.ToBigInteger(netmask);
+ var uintNetmask = IPNetwork.ToBigInteger(netmask);
bool valid = IPNetwork.InternalValidNetmask(uintNetmask, netmask.AddressFamily);
return valid;
}
@@ -1042,7 +1032,7 @@ namespace System.Net
0x00
});
- BigInteger neg = ((~netmask) & (mask));
+ var neg = ((~netmask) & (mask));
bool isNetmask = ((neg + 1) & neg) == 0;
return isNetmask;
@@ -1068,7 +1058,7 @@ namespace System.Net
Array.Reverse(bytes2);
byte[] sized = Resize(bytes2, family);
- IPAddress ip = new IPAddress(sized);
+ var ip = new IPAddress(sized);
return ip;
}
@@ -1122,9 +1112,9 @@ namespace System.Net
return false;
}
- BigInteger uintNetwork = _network;
- BigInteger uintBroadcast = _broadcast;
- BigInteger uintAddress = IPNetwork.ToBigInteger(ipaddress);
+ var uintNetwork = _network;
+ var uintBroadcast = _broadcast;
+ var uintAddress = IPNetwork.ToBigInteger(ipaddress);
bool contains = (uintAddress >= uintNetwork
&& uintAddress <= uintBroadcast);
@@ -1146,11 +1136,11 @@ namespace System.Net
throw new ArgumentNullException(nameof(network2));
}
- BigInteger uintNetwork = _network;
- BigInteger uintBroadcast = _broadcast;
+ var uintNetwork = _network;
+ var uintBroadcast = _broadcast;
- BigInteger uintFirst = network2._network;
- BigInteger uintLast = network2._broadcast;
+ var uintFirst = network2._network;
+ var uintLast = network2._broadcast;
bool contains = (uintFirst >= uintNetwork
&& uintLast <= uintBroadcast);
@@ -1175,11 +1165,11 @@ namespace System.Net
throw new ArgumentNullException(nameof(network2));
}
- BigInteger uintNetwork = _network;
- BigInteger uintBroadcast = _broadcast;
+ var uintNetwork = _network;
+ var uintBroadcast = _broadcast;
- BigInteger uintFirst = network2._network;
- BigInteger uintLast = network2._broadcast;
+ var uintFirst = network2._network;
+ var uintLast = network2._broadcast;
bool overlap =
(uintFirst >= uintNetwork && uintFirst <= uintBroadcast)
@@ -1428,8 +1418,8 @@ namespace System.Net
return;
}
- IPNetwork first = (network1._network < network2._network) ? network1 : network2;
- IPNetwork last = (network1._network > network2._network) ? network1 : network2;
+ var first = (network1._network < network2._network) ? network1 : network2;
+ var last = (network1._network > network2._network) ? network1 : network2;
/// Starting from here :
/// network1 and network2 have the same cidr,
@@ -1449,10 +1439,10 @@ namespace System.Net
return;
}
- BigInteger uintSupernet = first._network;
+ var uintSupernet = first._network;
byte cidrSupernet = (byte)(first._cidr - 1);
- IPNetwork networkSupernet = new IPNetwork(uintSupernet, first._family, cidrSupernet);
+ var networkSupernet = new IPNetwork(uintSupernet, first._family, cidrSupernet);
if (networkSupernet._network != first._network)
{
if (trySupernet == false)
@@ -1491,8 +1481,7 @@ namespace System.Net
/// <returns></returns>
public static IPNetwork[] Supernet(IPNetwork[] ipnetworks)
{
- IPNetwork[] supernet;
- InternalSupernet(false, ipnetworks, out supernet);
+ InternalSupernet(false, ipnetworks, out var supernet);
return supernet;
}
@@ -1535,9 +1524,9 @@ namespace System.Net
return true;
}
- List<IPNetwork> supernetted = new List<IPNetwork>();
- List<IPNetwork> ipns = IPNetwork.Array2List(ipnetworks);
- Stack<IPNetwork> current = IPNetwork.List2Stack(ipns);
+ var supernetted = new List<IPNetwork>();
+ var ipns = IPNetwork.Array2List(ipnetworks);
+ var current = IPNetwork.List2Stack(ipns);
int previousCount = 0;
int currentCount = current.Count;
@@ -1547,8 +1536,8 @@ namespace System.Net
supernetted.Clear();
while (current.Count > 1)
{
- IPNetwork ipn1 = current.Pop();
- IPNetwork ipn2 = current.Peek();
+ var ipn1 = current.Pop();
+ var ipn2 = current.Peek();
IPNetwork outNetwork = null;
bool success = ipn1.TrySupernet(ipn2, out outNetwork);
@@ -1578,7 +1567,7 @@ namespace System.Net
private static Stack<IPNetwork> List2Stack(List<IPNetwork> list)
{
- Stack<IPNetwork> stack = new Stack<IPNetwork>();
+ var stack = new Stack<IPNetwork>();
list.ForEach(new Action<IPNetwork>(
delegate (IPNetwork ipn)
{
@@ -1590,7 +1579,7 @@ namespace System.Net
private static List<IPNetwork> Array2List(IPNetwork[] array)
{
- List<IPNetwork> ipns = new List<IPNetwork>();
+ var ipns = new List<IPNetwork>();
ipns.AddRange(array);
IPNetwork.RemoveNull(ipns);
ipns.Sort(new Comparison<IPNetwork>(
@@ -1642,14 +1631,12 @@ namespace System.Net
throw new ArgumentNullException(nameof(end));
}
- IPAddress startIP;
- if (!IPAddress.TryParse(start, out startIP))
+ if (!IPAddress.TryParse(start, out var startIP))
{
throw new ArgumentException("start");
}
- IPAddress endIP;
- if (!IPAddress.TryParse(end, out endIP))
+ if (!IPAddress.TryParse(end, out var endIP))
{
throw new ArgumentException("end");
}
@@ -1659,10 +1646,10 @@ namespace System.Net
throw new NotSupportedException("MixedAddressFamily");
}
- IPNetwork ipnetwork = new IPNetwork(0, startIP.AddressFamily, 0);
+ var ipnetwork = new IPNetwork(0, startIP.AddressFamily, 0);
for (byte cidr = 32; cidr >= 0; cidr--)
{
- IPNetwork wideSubnet = IPNetwork.Parse(start, cidr);
+ var wideSubnet = IPNetwork.Parse(start, cidr);
if (wideSubnet.Contains(endIP))
{
ipnetwork = wideSubnet;
@@ -1707,8 +1694,9 @@ namespace System.Net
}
- IPNetwork[] nnin = Array.FindAll<IPNetwork>(ipnetworks, new Predicate<IPNetwork>(
- delegate (IPNetwork ipnet) {
+ IPNetwork[] nnin = Array.FindAll(ipnetworks, new Predicate<IPNetwork>(
+ delegate (IPNetwork ipnet)
+ {
return ipnet != null;
}
));
@@ -1725,19 +1713,19 @@ namespace System.Net
if (nnin.Length == 1)
{
- IPNetwork ipn0 = nnin[0];
+ var ipn0 = nnin[0];
ipnetwork = ipn0;
return;
}
- Array.Sort<IPNetwork>(nnin);
- IPNetwork nnin0 = nnin[0];
- BigInteger uintNnin0 = nnin0._ipaddress;
+ Array.Sort(nnin);
+ var nnin0 = nnin[0];
+ var uintNnin0 = nnin0._ipaddress;
- IPNetwork nninX = nnin[nnin.Length - 1];
- IPAddress ipaddressX = nninX.Broadcast;
+ var nninX = nnin[nnin.Length - 1];
+ var ipaddressX = nninX.Broadcast;
- AddressFamily family = ipnetworks[0]._family;
+ var family = ipnetworks[0]._family;
foreach (var ipnx in ipnetworks)
{
if (ipnx._family != family)
@@ -1746,10 +1734,10 @@ namespace System.Net
}
}
- IPNetwork ipn = new IPNetwork(0, family, 0);
+ var ipn = new IPNetwork(0, family, 0);
for (byte cidr = nnin0._cidr; cidr >= 0; cidr--)
{
- IPNetwork wideSubnet = new IPNetwork(uintNnin0, family, cidr);
+ var wideSubnet = new IPNetwork(uintNnin0, family, cidr);
if (wideSubnet.Contains(ipaddressX))
{
ipn = wideSubnet;
@@ -1772,7 +1760,7 @@ namespace System.Net
public string Print()
{
- StringWriter sw = new StringWriter();
+ var sw = new StringWriter();
sw.WriteLine("IPNetwork : {0}", ToString());
sw.WriteLine("Network : {0}", Network);
@@ -1818,7 +1806,7 @@ namespace System.Net
cidr = 64;
return true;
}
- BigInteger uintIPAddress = IPNetwork.ToBigInteger(ipaddress);
+ var uintIPAddress = IPNetwork.ToBigInteger(ipaddress);
uintIPAddress = uintIPAddress >> 29;
if (uintIPAddress <= 3)
{
diff --git a/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs b/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs
index 48d404124..7d3106624 100644
--- a/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs
+++ b/Emby.Server.Implementations/Networking/IPNetwork/IPNetworkCollection.cs
@@ -1,4 +1,4 @@
-using System.Collections;
+using System.Collections;
using System.Collections.Generic;
using System.Numerics;
@@ -47,7 +47,7 @@ namespace System.Net
{
get
{
- BigInteger count = BigInteger.Pow(2, this._cidrSubnet - this._cidr);
+ var count = BigInteger.Pow(2, this._cidrSubnet - this._cidr);
return count;
}
}
@@ -61,11 +61,11 @@ namespace System.Net
throw new ArgumentOutOfRangeException(nameof(i));
}
- BigInteger last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6
+ var last = this._ipnetwork.AddressFamily == Sockets.AddressFamily.InterNetworkV6
? this._lastUsable : this._broadcast;
- BigInteger increment = (last - this._network) / this.Count;
- BigInteger uintNetwork = this._network + ((increment + 1) * i);
- IPNetwork ipn = new IPNetwork(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet);
+ var increment = (last - this._network) / this.Count;
+ var uintNetwork = this._network + ((increment + 1) * i);
+ var ipn = new IPNetwork(uintNetwork, this._ipnetwork.AddressFamily, this._cidrSubnet);
return ipn;
}
}
@@ -125,4 +125,4 @@ namespace System.Net
#endregion
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs
index dbf89d7e1..b486c0ef7 100644
--- a/Emby.Server.Implementations/Networking/NetworkManager.cs
+++ b/Emby.Server.Implementations/Networking/NetworkManager.cs
@@ -9,10 +9,9 @@ using System.Threading.Tasks;
using MediaBrowser.Common.Net;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.System;
-using System.Numerics;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Networking
{
@@ -204,20 +203,18 @@ namespace Emby.Server.Implementations.Networking
private Dictionary<string, List<string>> _subnetLookup = new Dictionary<string, List<string>>(StringComparer.Ordinal);
private List<string> GetSubnets(string endpointFirstPart)
{
- List<string> subnets;
-
lock (_subnetLookup)
{
- if (_subnetLookup.TryGetValue(endpointFirstPart, out subnets))
+ if (_subnetLookup.TryGetValue(endpointFirstPart, out var subnets))
{
return subnets;
}
subnets = new List<string>();
- foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces())
+ foreach (var adapter in NetworkInterface.GetAllNetworkInterfaces())
{
- foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses)
+ foreach (var unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses)
{
if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0])
{
@@ -299,8 +296,7 @@ namespace Emby.Server.Implementations.Networking
throw new ArgumentNullException(nameof(endpoint));
}
- IPAddress address;
- if (IPAddress.TryParse(endpoint, out address))
+ if (IPAddress.TryParse(endpoint, out var address))
{
var addressString = address.ToString();
@@ -349,8 +345,7 @@ namespace Emby.Server.Implementations.Networking
}
else if (resolveHost)
{
- Uri uri;
- if (Uri.TryCreate(endpoint, UriKind.RelativeOrAbsolute, out uri))
+ if (Uri.TryCreate(endpoint, UriKind.RelativeOrAbsolute, out var uri))
{
try
{
@@ -462,7 +457,7 @@ namespace Emby.Server.Implementations.Networking
public int GetRandomUnusedUdpPort()
{
- IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 0);
+ var localEndPoint = new IPEndPoint(IPAddress.Any, 0);
using (var udpClient = new UdpClient(localEndPoint))
{
var port = ((IPEndPoint)(udpClient.Client.LocalEndPoint)).Port;
@@ -523,8 +518,8 @@ namespace Emby.Server.Implementations.Networking
/// <param name="endpointstring">The endpointstring.</param>
/// <param name="defaultport">The defaultport.</param>
/// <returns>IPEndPoint.</returns>
- /// <exception cref="System.ArgumentException">Endpoint descriptor may not be empty.</exception>
- /// <exception cref="System.FormatException"></exception>
+ /// <exception cref="ArgumentException">Endpoint descriptor may not be empty.</exception>
+ /// <exception cref="FormatException"></exception>
private static async Task<IPEndPoint> Parse(string endpointstring, int defaultport)
{
if (string.IsNullOrEmpty(endpointstring)
@@ -586,12 +581,10 @@ namespace Emby.Server.Implementations.Networking
/// </summary>
/// <param name="p">The p.</param>
/// <returns>System.Int32.</returns>
- /// <exception cref="System.FormatException"></exception>
+ /// <exception cref="FormatException"></exception>
private static int GetPort(string p)
{
- int port;
-
- if (!int.TryParse(p, out port)
+ if (!int.TryParse(p, out var port)
|| port < IPEndPoint.MinPort
|| port > IPEndPoint.MaxPort)
{
@@ -606,7 +599,7 @@ namespace Emby.Server.Implementations.Networking
/// </summary>
/// <param name="p">The p.</param>
/// <returns>IPAddress.</returns>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentException"></exception>
private static async Task<IPAddress> GetIPfromHost(string p)
{
var hosts = await Dns.GetHostAddressesAsync(p).ConfigureAwait(false);
@@ -619,8 +612,7 @@ namespace Emby.Server.Implementations.Networking
public IpAddressInfo ParseIpAddress(string ipAddress)
{
- IpAddressInfo info;
- if (TryParseIpAddress(ipAddress, out info))
+ if (TryParseIpAddress(ipAddress, out var info))
{
return info;
}
@@ -630,8 +622,7 @@ namespace Emby.Server.Implementations.Networking
public bool TryParseIpAddress(string ipAddress, out IpAddressInfo ipAddressInfo)
{
- IPAddress address;
- if (IPAddress.TryParse(ipAddress, out address))
+ if (IPAddress.TryParse(ipAddress, out var address))
{
ipAddressInfo = ToIpAddressInfo(address);
return true;
diff --git a/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
index f2bc4c07d..f4decc856 100644
--- a/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
+++ b/Emby.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Playlists;
diff --git a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs
index e69b4a34e..223153164 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistImageProvider.cs
@@ -1,23 +1,20 @@
-using System;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Emby.Server.Implementations.Images;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Images;
-
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.Playlists
diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
index 38fbac030..c39897b53 100644
--- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs
@@ -1,11 +1,3 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Playlists;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Playlists;
using System;
using System.Collections.Generic;
using System.IO;
@@ -13,12 +5,17 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Playlists;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Extensions;
-using PlaylistsNET;
+using MediaBrowser.Model.Playlists;
+using Microsoft.Extensions.Logging;
using PlaylistsNET.Content;
using PlaylistsNET.Models;
-using PlaylistsNET.Utils;
namespace Emby.Server.Implementations.Playlists
{
@@ -472,12 +469,12 @@ namespace Emby.Server.Implementations.Playlists
folderPath = folderPath + Path.DirectorySeparatorChar;
}
- Uri folderUri = new Uri(folderPath);
- Uri fileAbsoluteUri = new Uri(fileAbsolutePath);
+ var folderUri = new Uri(folderPath);
+ var fileAbsoluteUri = new Uri(fileAbsolutePath);
if (folderUri.Scheme != fileAbsoluteUri.Scheme) { return fileAbsolutePath; } // path can't be made relative.
- Uri relativeUri = folderUri.MakeRelativeUri(fileAbsoluteUri);
+ var relativeUri = folderUri.MakeRelativeUri(fileAbsoluteUri);
string relativePath = Uri.UnescapeDataString(relativeUri.ToString());
if (fileAbsoluteUri.Scheme.Equals("file", StringComparison.CurrentCultureIgnoreCase))
diff --git a/Emby.Server.Implementations/Reflection/AssemblyInfo.cs b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs
index c3ce97d40..9d16fe43f 100644
--- a/Emby.Server.Implementations/Reflection/AssemblyInfo.cs
+++ b/Emby.Server.Implementations/Reflection/AssemblyInfo.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using System.Reflection;
using MediaBrowser.Model.Reflection;
diff --git a/Emby.Server.Implementations/ResourceFileManager.cs b/Emby.Server.Implementations/ResourceFileManager.cs
index 04cf0632c..f54e3205a 100644
--- a/Emby.Server.Implementations/ResourceFileManager.cs
+++ b/Emby.Server.Implementations/ResourceFileManager.cs
@@ -1,23 +1,11 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Net;
-using MediaBrowser.Controller.Plugins;
-using MediaBrowser.Model.Extensions;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Serialization;
using System;
-using System.Collections.Generic;
using System.IO;
-using System.Linq;
using System.Threading.Tasks;
-using MediaBrowser.Common.Plugins;
+using MediaBrowser.Controller;
+using MediaBrowser.Controller.Net;
using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Globalization;
-using MediaBrowser.Model.Plugins;
-using MediaBrowser.Model.Reflection;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
index 904e93c56..0ae7ae96c 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs
@@ -1,22 +1,20 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.MediaEncoding;
-using MediaBrowser.Controller.Persistence;
-using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.IO;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.MediaEncoding;
+using MediaBrowser.Controller.Persistence;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Tasks;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Providers;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
index afcee02e5..98685cebe 100644
--- a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs
@@ -1,9 +1,8 @@
-using System;
+using System;
using System.Globalization;
using System.Threading;
-using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
index 5f6a0dfe6..3a34da3af 100644
--- a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs
@@ -1,9 +1,8 @@
-using System;
+using System;
using System.Linq;
using System.Threading;
-using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs
index 366ad889c..68031170f 100644
--- a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs
@@ -1,9 +1,9 @@
-using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Tasks;
namespace Emby.Server.Implementations.ScheduledTasks
diff --git a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs
index bd49277ad..f6fa64d13 100644
--- a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs
@@ -1,10 +1,10 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Emby.Server.Implementations.Library;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Tasks;
namespace Emby.Server.Implementations.ScheduledTasks
diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
index ec54ce71a..44f6e2d7b 100644
--- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs
@@ -9,10 +9,10 @@ using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Progress;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
@@ -63,7 +63,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <param name="taskManager">The task manager.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
- /// <exception cref="System.ArgumentNullException">
+ /// <exception cref="ArgumentNullException">
/// scheduledTask
/// or
/// applicationPaths
@@ -256,7 +256,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// Gets the triggers that define when the task will run
/// </summary>
/// <value>The triggers.</value>
- /// <exception cref="System.ArgumentNullException">value</exception>
+ /// <exception cref="ArgumentNullException">value</exception>
public TaskTriggerInfo[] Triggers
{
get
@@ -365,7 +365,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// </summary>
/// <param name="options">Task options.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception>
+ /// <exception cref="InvalidOperationException">Cannot execute a Task that is already running</exception>
public async Task Execute(TaskOptions options)
{
var task = Task.Run(async () => await ExecuteInternal(options).ConfigureAwait(false));
@@ -461,7 +461,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <summary>
/// Stops the task if it is currently executing
/// </summary>
- /// <exception cref="System.InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception>
+ /// <exception cref="InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception>
public void Cancel()
{
if (State != TaskState.Running)
@@ -705,8 +705,8 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// </summary>
/// <param name="info">The info.</param>
/// <returns>BaseTaskTrigger.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- /// <exception cref="System.ArgumentException">Invalid trigger type: + info.Type</exception>
+ /// <exception cref="ArgumentNullException"></exception>
+ /// <exception cref="ArgumentException">Invalid trigger type: + info.Type</exception>
private ITaskTrigger GetTrigger(TaskTriggerInfo info)
{
var options = new TaskOptions
@@ -718,7 +718,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
if (!info.TimeOfDayTicks.HasValue)
{
- throw new ArgumentException("Info did not contain a TimeOfDayTicks.",nameof(info));
+ throw new ArgumentException("Info did not contain a TimeOfDayTicks.", nameof(info));
}
return new DailyTrigger
diff --git a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
index 35366a044..08ff4f55f 100644
--- a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs
@@ -1,8 +1,7 @@
-using System;
+using System;
using System.Threading.Tasks;
-using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
index def142f88..7a88fc2b0 100644
--- a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs
@@ -1,9 +1,8 @@
-using System;
+using System;
using System.Threading.Tasks;
-using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
index 361c31acb..09c348e24 100644
--- a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
@@ -7,10 +7,10 @@ using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
@@ -61,7 +61,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
/// <param name="applicationPaths">The application paths.</param>
/// <param name="jsonSerializer">The json serializer.</param>
/// <param name="logger">The logger.</param>
- /// <exception cref="System.ArgumentException">kernel</exception>
+ /// <exception cref="ArgumentException">kernel</exception>
public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem, ISystemEvents systemEvents)
{
ApplicationPaths = applicationPaths;
@@ -94,7 +94,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
try
{
- lines = _fileSystem.ReadAllLines(path).ToList() ;
+ lines = _fileSystem.ReadAllLines(path).ToList();
}
catch
{
@@ -364,8 +364,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
{
var list = new List<Tuple<Type, TaskOptions>>();
- Tuple<Type, TaskOptions> item;
- while (_taskQueue.TryDequeue(out item))
+ while (_taskQueue.TryDequeue(out var item))
{
if (list.All(i => i.Item1 != item.Item1))
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
index 0716f8d30..2590f455c 100644
--- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -6,8 +6,8 @@ using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
{
diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
index fea18d9f0..a57fe4945 100644
--- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
@@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
foreach (var file in filesToDelete)
{
- double percent = index / (double) filesToDelete.Count;
+ double percent = index / (double)filesToDelete.Count;
progress.Report(100 * percent);
diff --git a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
index e694e0855..2a6a7b13c 100644
--- a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
+++ b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs
@@ -1,8 +1,7 @@
-using System;
+using System;
using System.Threading;
-using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.ScheduledTasks
{
diff --git a/Emby.Server.Implementations/Security/AuthenticationRepository.cs b/Emby.Server.Implementations/Security/AuthenticationRepository.cs
index 2a6406f25..e0f174f9d 100644
--- a/Emby.Server.Implementations/Security/AuthenticationRepository.cs
+++ b/Emby.Server.Implementations/Security/AuthenticationRepository.cs
@@ -3,16 +3,13 @@ using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
-using System.Threading;
using Emby.Server.Implementations.Data;
-using MediaBrowser.Controller;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Security;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.Devices;
using MediaBrowser.Model.Querying;
+using Microsoft.Extensions.Logging;
using SQLitePCL.pretty;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Model.Devices;
namespace Emby.Server.Implementations.Security
{
diff --git a/Emby.Server.Implementations/Security/EncryptionManager.cs b/Emby.Server.Implementations/Security/EncryptionManager.cs
index b99e00a67..fa8872ccc 100644
--- a/Emby.Server.Implementations/Security/EncryptionManager.cs
+++ b/Emby.Server.Implementations/Security/EncryptionManager.cs
@@ -1,6 +1,6 @@
-using MediaBrowser.Controller.Security;
using System;
using System.Text;
+using MediaBrowser.Controller.Security;
namespace Emby.Server.Implementations.Security
{
@@ -11,7 +11,7 @@ namespace Emby.Server.Implementations.Security
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">value</exception>
+ /// <exception cref="ArgumentNullException">value</exception>
public string EncryptString(string value)
{
if (value == null)
@@ -27,7 +27,7 @@ namespace Emby.Server.Implementations.Security
/// </summary>
/// <param name="value">The value.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">value</exception>
+ /// <exception cref="ArgumentNullException">value</exception>
public string DecryptString(string value)
{
if (value == null)
diff --git a/Emby.Server.Implementations/Serialization/JsonSerializer.cs b/Emby.Server.Implementations/Serialization/JsonSerializer.cs
index d4b6b2f43..60bf2d5a9 100644
--- a/Emby.Server.Implementations/Serialization/JsonSerializer.cs
+++ b/Emby.Server.Implementations/Serialization/JsonSerializer.cs
@@ -1,9 +1,9 @@
using System;
using System.IO;
+using System.Threading.Tasks;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
-using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
namespace Emby.Common.Implementations.Serialization
{
@@ -27,7 +27,7 @@ namespace Emby.Common.Implementations.Serialization
/// </summary>
/// <param name="obj">The obj.</param>
/// <param name="stream">The stream.</param>
- /// <exception cref="System.ArgumentNullException">obj</exception>
+ /// <exception cref="ArgumentNullException">obj</exception>
public void SerializeToStream(object obj, Stream stream)
{
if (obj == null)
@@ -48,7 +48,7 @@ namespace Emby.Common.Implementations.Serialization
/// </summary>
/// <param name="obj">The obj.</param>
/// <param name="file">The file.</param>
- /// <exception cref="System.ArgumentNullException">obj</exception>
+ /// <exception cref="ArgumentNullException">obj</exception>
public void SerializeToFile(object obj, string file)
{
if (obj == null)
@@ -61,7 +61,7 @@ namespace Emby.Common.Implementations.Serialization
throw new ArgumentNullException(nameof(file));
}
- using (Stream stream = _fileSystem.GetFileStream(file, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
+ using (var stream = _fileSystem.GetFileStream(file, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
{
SerializeToStream(obj, stream);
}
@@ -79,7 +79,7 @@ namespace Emby.Common.Implementations.Serialization
/// <param name="type">The type.</param>
/// <param name="file">The file.</param>
/// <returns>System.Object.</returns>
- /// <exception cref="System.ArgumentNullException">type</exception>
+ /// <exception cref="ArgumentNullException">type</exception>
public object DeserializeFromFile(Type type, string file)
{
if (type == null)
@@ -92,7 +92,7 @@ namespace Emby.Common.Implementations.Serialization
throw new ArgumentNullException(nameof(file));
}
- using (Stream stream = OpenFile(file))
+ using (var stream = OpenFile(file))
{
return DeserializeFromStream(stream, type);
}
@@ -104,7 +104,7 @@ namespace Emby.Common.Implementations.Serialization
/// <typeparam name="T"></typeparam>
/// <param name="file">The file.</param>
/// <returns>``0.</returns>
- /// <exception cref="System.ArgumentNullException">file</exception>
+ /// <exception cref="ArgumentNullException">file</exception>
public T DeserializeFromFile<T>(string file)
where T : class
{
@@ -113,7 +113,7 @@ namespace Emby.Common.Implementations.Serialization
throw new ArgumentNullException(nameof(file));
}
- using (Stream stream = OpenFile(file))
+ using (var stream = OpenFile(file))
{
return DeserializeFromStream<T>(stream);
}
@@ -125,7 +125,7 @@ namespace Emby.Common.Implementations.Serialization
/// <typeparam name="T"></typeparam>
/// <param name="stream">The stream.</param>
/// <returns>``0.</returns>
- /// <exception cref="System.ArgumentNullException">stream</exception>
+ /// <exception cref="ArgumentNullException">stream</exception>
public T DeserializeFromStream<T>(Stream stream)
{
if (stream == null)
@@ -153,7 +153,7 @@ namespace Emby.Common.Implementations.Serialization
/// <typeparam name="T"></typeparam>
/// <param name="text">The text.</param>
/// <returns>``0.</returns>
- /// <exception cref="System.ArgumentNullException">text</exception>
+ /// <exception cref="ArgumentNullException">text</exception>
public T DeserializeFromString<T>(string text)
{
if (string.IsNullOrEmpty(text))
@@ -170,7 +170,7 @@ namespace Emby.Common.Implementations.Serialization
/// <param name="stream">The stream.</param>
/// <param name="type">The type.</param>
/// <returns>System.Object.</returns>
- /// <exception cref="System.ArgumentNullException">stream</exception>
+ /// <exception cref="ArgumentNullException">stream</exception>
public object DeserializeFromStream(Stream stream, Type type)
{
if (stream == null)
@@ -236,7 +236,7 @@ namespace Emby.Common.Implementations.Serialization
/// <param name="json">The json.</param>
/// <param name="type">The type.</param>
/// <returns>System.Object.</returns>
- /// <exception cref="System.ArgumentNullException">json</exception>
+ /// <exception cref="ArgumentNullException">json</exception>
public object DeserializeFromString(string json, Type type)
{
if (string.IsNullOrEmpty(json))
@@ -257,7 +257,7 @@ namespace Emby.Common.Implementations.Serialization
/// </summary>
/// <param name="obj">The obj.</param>
/// <returns>System.String.</returns>
- /// <exception cref="System.ArgumentNullException">obj</exception>
+ /// <exception cref="ArgumentNullException">obj</exception>
public string SerializeToString(object obj)
{
if (obj == null)
diff --git a/Emby.Server.Implementations/Serialization/XmlSerializer.cs b/Emby.Server.Implementations/Serialization/XmlSerializer.cs
index dfc324919..22d6712ec 100644
--- a/Emby.Server.Implementations/Serialization/XmlSerializer.cs
+++ b/Emby.Server.Implementations/Serialization/XmlSerializer.cs
@@ -1,11 +1,11 @@
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Serialization
{
@@ -33,8 +33,7 @@ namespace Emby.Server.Implementations.Serialization
var key = type.FullName;
lock (_serializers)
{
- XmlSerializer serializer;
- if (!_serializers.TryGetValue(key, out serializer))
+ if (!_serializers.TryGetValue(key, out var serializer))
{
serializer = new XmlSerializer(type);
_serializers[key] = serializer;
diff --git a/Emby.Server.Implementations/ServerApplicationPaths.cs b/Emby.Server.Implementations/ServerApplicationPaths.cs
index 933b67291..edea10a07 100644
--- a/Emby.Server.Implementations/ServerApplicationPaths.cs
+++ b/Emby.Server.Implementations/ServerApplicationPaths.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.IO;
using Emby.Server.Implementations.AppBase;
using MediaBrowser.Controller;
diff --git a/Emby.Server.Implementations/Services/RequestHelper.cs b/Emby.Server.Implementations/Services/RequestHelper.cs
index 7d2fbc3e0..24e9cbfa4 100644
--- a/Emby.Server.Implementations/Services/RequestHelper.cs
+++ b/Emby.Server.Implementations/Services/RequestHelper.cs
@@ -1,7 +1,7 @@
using System;
using System.IO;
-using Emby.Server.Implementations.HttpServer;
using System.Threading.Tasks;
+using Emby.Server.Implementations.HttpServer;
namespace Emby.Server.Implementations.Services
{
diff --git a/Emby.Server.Implementations/Services/ServiceController.cs b/Emby.Server.Implementations/Services/ServiceController.cs
index 46af83128..5796956d8 100644
--- a/Emby.Server.Implementations/Services/ServiceController.cs
+++ b/Emby.Server.Implementations/Services/ServiceController.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Reflection;
using System.Threading.Tasks;
using Emby.Server.Implementations.HttpServer;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Services;
namespace Emby.Server.Implementations.Services
@@ -73,7 +72,7 @@ namespace Emby.Server.Implementations.Services
public void RegisterRestPaths(HttpListenerHost appHost, Type requestType, Type serviceType)
{
var attrs = appHost.GetRouteAttributes(requestType);
- foreach (RouteAttribute attr in attrs)
+ foreach (var attr in attrs)
{
var restPath = new RestPath(appHost.CreateInstance, appHost.GetParseFn, requestType, serviceType, attr.Path, attr.Verbs, attr.IsHidden, attr.Summary, attr.Description);
@@ -90,8 +89,7 @@ namespace Emby.Server.Implementations.Services
if (restPath.Path.IndexOfAny(InvalidRouteChars) != -1)
throw new ArgumentException(string.Format("Route '{0}' on '{1}' contains invalid chars. ", restPath.Path, restPath.RequestType.GetMethodName()));
- List<RestPath> pathsAtFirstMatch;
- if (!RestPathMap.TryGetValue(restPath.FirstMatchHashKey, out pathsAtFirstMatch))
+ if (!RestPathMap.TryGetValue(restPath.FirstMatchHashKey, out List<RestPath> pathsAtFirstMatch))
{
pathsAtFirstMatch = new List<RestPath>();
RestPathMap[restPath.FirstMatchHashKey] = pathsAtFirstMatch;
diff --git a/Emby.Server.Implementations/Services/ServiceExec.cs b/Emby.Server.Implementations/Services/ServiceExec.cs
index 9516c1e38..45c918fa1 100644
--- a/Emby.Server.Implementations/Services/ServiceExec.cs
+++ b/Emby.Server.Implementations/Services/ServiceExec.cs
@@ -5,7 +5,6 @@ using System.Linq.Expressions;
using System.Reflection;
using System.Threading.Tasks;
using MediaBrowser.Model.Services;
-using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Services
{
@@ -74,8 +73,7 @@ namespace Emby.Server.Implementations.Services
{
var actionName = request.Verb ?? "POST";
- ServiceMethod actionContext;
- if (ServiceExecGeneral.execMap.TryGetValue(ServiceMethod.Key(serviceType, actionName, requestName), out actionContext))
+ if (execMap.TryGetValue(ServiceMethod.Key(serviceType, actionName, requestName), out ServiceMethod actionContext))
{
if (actionContext.RequestFilters != null)
{
diff --git a/Emby.Server.Implementations/Services/ServiceHandler.cs b/Emby.Server.Implementations/Services/ServiceHandler.cs
index 5590c51b6..7e836e22c 100644
--- a/Emby.Server.Implementations/Services/ServiceHandler.cs
+++ b/Emby.Server.Implementations/Services/ServiceHandler.cs
@@ -4,8 +4,8 @@ using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Emby.Server.Implementations.HttpServer;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Services
{
@@ -62,8 +62,7 @@ namespace Emby.Server.Implementations.Services
{
if (this.RestPath == null)
{
- string contentType;
- this.RestPath = FindMatchingRestPath(httpMethod, pathInfo, out contentType);
+ this.RestPath = FindMatchingRestPath(httpMethod, pathInfo, out string contentType);
if (contentType != null)
ResponseContentType = contentType;
@@ -137,9 +136,8 @@ namespace Emby.Server.Implementations.Services
public static object CreateRequest(IRequest httpReq, RestPath restPath, Dictionary<string, string> requestParams, object requestDto)
{
- string contentType;
var pathInfo = !restPath.IsWildCardPath
- ? GetSanitizedPathInfo(httpReq.PathInfo, out contentType)
+ ? GetSanitizedPathInfo(httpReq.PathInfo, out string contentType)
: httpReq.PathInfo;
return restPath.CreateRequest(pathInfo, requestParams, requestDto);
@@ -239,8 +237,7 @@ namespace Emby.Server.Implementations.Services
private static RestPath GetRoute(IRequest req)
{
- object route;
- req.Items.TryGetValue("__route", out route);
+ req.Items.TryGetValue("__route", out var route);
return route as RestPath;
}
}
diff --git a/Emby.Server.Implementations/Services/ServiceMethod.cs b/Emby.Server.Implementations/Services/ServiceMethod.cs
index fa2dd43d0..7add72815 100644
--- a/Emby.Server.Implementations/Services/ServiceMethod.cs
+++ b/Emby.Server.Implementations/Services/ServiceMethod.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Emby.Server.Implementations.Services
{
@@ -14,4 +14,4 @@ namespace Emby.Server.Implementations.Services
return serviceType.FullName + " " + method.ToUpper() + " " + requestDtoName;
}
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Services/ServicePath.cs b/Emby.Server.Implementations/Services/ServicePath.cs
index 0222b3782..7e1993b71 100644
--- a/Emby.Server.Implementations/Services/ServicePath.cs
+++ b/Emby.Server.Implementations/Services/ServicePath.cs
@@ -4,8 +4,6 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Extensions;
namespace Emby.Server.Implementations.Services
{
@@ -308,8 +306,7 @@ namespace Emby.Server.Implementations.Services
public int MatchScore(string httpMethod, string[] withPathInfoParts)
{
- int wildcardMatchCount;
- var isMatch = IsMatch(httpMethod, withPathInfoParts, out wildcardMatchCount);
+ var isMatch = IsMatch(httpMethod, withPathInfoParts, out var wildcardMatchCount);
if (!isMatch)
{
return -1;
@@ -486,8 +483,7 @@ namespace Emby.Server.Implementations.Services
continue;
}
- string propertyNameOnRequest;
- if (!this.propertyNamesMap.TryGetValue(variableName.ToLower(), out propertyNameOnRequest))
+ if (!this.propertyNamesMap.TryGetValue(variableName.ToLower(), out var propertyNameOnRequest))
{
if (string.Equals("ignore", variableName, StringComparison.OrdinalIgnoreCase))
{
diff --git a/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs b/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs
index 2233bf918..d13935fba 100644
--- a/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs
+++ b/Emby.Server.Implementations/Services/StringMapTypeDeserializer.cs
@@ -11,14 +11,14 @@ namespace Emby.Server.Implementations.Services
{
internal class PropertySerializerEntry
{
- public PropertySerializerEntry(Action<object,object> propertySetFn, Func<string, object> propertyParseStringFn)
+ public PropertySerializerEntry(Action<object, object> propertySetFn, Func<string, object> propertyParseStringFn)
{
PropertySetFn = propertySetFn;
PropertyParseStringFn = propertyParseStringFn;
}
public Action<object, object> PropertySetFn;
- public Func<string,object> PropertyParseStringFn;
+ public Func<string, object> PropertyParseStringFn;
public Type PropertyType;
}
diff --git a/Emby.Server.Implementations/Services/SwaggerService.cs b/Emby.Server.Implementations/Services/SwaggerService.cs
new file mode 100644
index 000000000..9bceeabec
--- /dev/null
+++ b/Emby.Server.Implementations/Services/SwaggerService.cs
@@ -0,0 +1,259 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using MediaBrowser.Model.Services;
+
+namespace Emby.Server.Implementations.Services
+{
+ [Route("/swagger", "GET", Summary = "Gets the swagger specifications")]
+ [Route("/swagger.json", "GET", Summary = "Gets the swagger specifications")]
+ public class GetSwaggerSpec : IReturn<SwaggerSpec>
+ {
+ }
+
+ public class SwaggerSpec
+ {
+ public string swagger { get; set; }
+ public string[] schemes { get; set; }
+ public SwaggerInfo info { get; set; }
+ public string host { get; set; }
+ public string basePath { get; set; }
+ public SwaggerTag[] tags { get; set; }
+ public IDictionary<string, Dictionary<string, SwaggerMethod>> paths { get; set; }
+ public Dictionary<string, SwaggerDefinition> definitions { get; set; }
+ public SwaggerComponents components { get; set; }
+ }
+
+ public class SwaggerComponents
+ {
+ public Dictionary<string, SwaggerSecurityScheme> securitySchemes { get; set; }
+ }
+
+ public class SwaggerSecurityScheme
+ {
+ public string name { get; set; }
+ public string type { get; set; }
+ public string @in { get; set; }
+ }
+
+ public class SwaggerInfo
+ {
+ public string description { get; set; }
+ public string version { get; set; }
+ public string title { get; set; }
+ public string termsOfService { get; set; }
+
+ public SwaggerConcactInfo contact { get; set; }
+ }
+
+ public class SwaggerConcactInfo
+ {
+ public string email { get; set; }
+ public string name { get; set; }
+ public string url { get; set; }
+ }
+
+ public class SwaggerTag
+ {
+ public string description { get; set; }
+ public string name { get; set; }
+ }
+
+ public class SwaggerMethod
+ {
+ public string summary { get; set; }
+ public string description { get; set; }
+ public string[] tags { get; set; }
+ public string operationId { get; set; }
+ public string[] consumes { get; set; }
+ public string[] produces { get; set; }
+ public SwaggerParam[] parameters { get; set; }
+ public Dictionary<string, SwaggerResponse> responses { get; set; }
+ public Dictionary<string, string[]>[] security { get; set; }
+ }
+
+ public class SwaggerParam
+ {
+ public string @in { get; set; }
+ public string name { get; set; }
+ public string description { get; set; }
+ public bool required { get; set; }
+ public string type { get; set; }
+ public string collectionFormat { get; set; }
+ }
+
+ public class SwaggerResponse
+ {
+ public string description { get; set; }
+
+ // ex. "$ref":"#/definitions/Pet"
+ public Dictionary<string, string> schema { get; set; }
+ }
+
+ public class SwaggerDefinition
+ {
+ public string type { get; set; }
+ public Dictionary<string, SwaggerProperty> properties { get; set; }
+ }
+
+ public class SwaggerProperty
+ {
+ public string type { get; set; }
+ public string format { get; set; }
+ public string description { get; set; }
+ public string[] @enum { get; set; }
+ public string @default { get; set; }
+ }
+
+ public class SwaggerService : IService, IRequiresRequest
+ {
+ private SwaggerSpec _spec;
+
+ public IRequest Request { get; set; }
+
+ public object Get(GetSwaggerSpec request)
+ {
+ return _spec ?? (_spec = GetSpec());
+ }
+
+ private SwaggerSpec GetSpec()
+ {
+ string host = null;
+ Uri uri;
+ if (Uri.TryCreate(Request.RawUrl, UriKind.Absolute, out uri))
+ {
+ host = uri.Host;
+ }
+
+ var securitySchemes = new Dictionary<string, SwaggerSecurityScheme>();
+
+ securitySchemes["api_key"] = new SwaggerSecurityScheme
+ {
+ name = "api_key",
+ type = "apiKey",
+ @in = "query"
+ };
+
+ var spec = new SwaggerSpec
+ {
+ schemes = new[] { "http" },
+ tags = GetTags(),
+ swagger = "2.0",
+ info = new SwaggerInfo
+ {
+ title = "Jellyfin Server API",
+ version = "1.0.0",
+ description = "Explore the Jellyfin Server API",
+ contact = new SwaggerConcactInfo
+ {
+ name = "Jellyfin Community",
+ url = "https://jellyfin.readthedocs.io/en/latest/user-docs/getting-help/"
+ }
+ },
+ paths = GetPaths(),
+ definitions = GetDefinitions(),
+ basePath = "/jellyfin",
+ host = host,
+
+ components = new SwaggerComponents
+ {
+ securitySchemes = securitySchemes
+ }
+ };
+
+ return spec;
+ }
+
+
+ private SwaggerTag[] GetTags()
+ {
+ return new SwaggerTag[] { };
+ }
+
+ private Dictionary<string, SwaggerDefinition> GetDefinitions()
+ {
+ return new Dictionary<string, SwaggerDefinition>();
+ }
+
+ private IDictionary<string, Dictionary<string, SwaggerMethod>> GetPaths()
+ {
+ var paths = new SortedDictionary<string, Dictionary<string, SwaggerMethod>>();
+
+ var all = ServiceController.Instance.RestPathMap.OrderBy(i => i.Key, StringComparer.OrdinalIgnoreCase).ToList();
+
+ foreach (var current in all)
+ {
+ foreach (var info in current.Value)
+ {
+ if (info.IsHidden)
+ {
+ continue;
+ }
+
+ if (info.Path.StartsWith("/mediabrowser", StringComparison.OrdinalIgnoreCase))
+ {
+ continue;
+ }
+ if (info.Path.StartsWith("/jellyfin", StringComparison.OrdinalIgnoreCase))
+ {
+ continue;
+ }
+
+ paths[info.Path] = GetPathInfo(info);
+ }
+ }
+
+ return paths;
+ }
+
+ private Dictionary<string, SwaggerMethod> GetPathInfo(RestPath info)
+ {
+ var result = new Dictionary<string, SwaggerMethod>();
+
+ foreach (var verb in info.Verbs)
+ {
+ var responses = new Dictionary<string, SwaggerResponse>
+ {
+ };
+
+ responses["200"] = new SwaggerResponse
+ {
+ description = "OK"
+ };
+
+ var security = new List<Dictionary<string, string[]>>();
+
+ var apiKeySecurity = new Dictionary<string, string[]>();
+ apiKeySecurity["api_key"] = Array.Empty<string>();
+
+ security.Add(apiKeySecurity);
+
+ result[verb.ToLower()] = new SwaggerMethod
+ {
+ summary = info.Summary,
+ description = info.Description,
+ produces = new[]
+ {
+ "application/json"
+ },
+ consumes = new[]
+ {
+ "application/json"
+ },
+ operationId = info.RequestType.Name,
+ tags = Array.Empty<string>(),
+
+ parameters = new SwaggerParam[] { },
+
+ responses = responses,
+
+ security = security.ToArray()
+ };
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/Emby.Server.Implementations/Services/UrlExtensions.cs b/Emby.Server.Implementations/Services/UrlExtensions.cs
index 898dcac3e..8899fbfa3 100644
--- a/Emby.Server.Implementations/Services/UrlExtensions.cs
+++ b/Emby.Server.Implementations/Services/UrlExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
namespace Emby.Server.Implementations.Services
{
@@ -30,4 +30,4 @@ namespace Emby.Server.Implementations.Services
: strVal.Substring(0, pos);
}
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Session/HttpSessionController.cs b/Emby.Server.Implementations/Session/HttpSessionController.cs
index c61e2aff4..9281f82b3 100644
--- a/Emby.Server.Implementations/Session/HttpSessionController.cs
+++ b/Emby.Server.Implementations/Session/HttpSessionController.cs
@@ -1,9 +1,3 @@
-using MediaBrowser.Common.Net;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.Session;
-using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -11,6 +5,10 @@ using System.Linq;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Common.Net;
+using MediaBrowser.Controller.Session;
+using MediaBrowser.Model.Serialization;
+using MediaBrowser.Model.Session;
namespace Emby.Server.Implementations.Session
{
@@ -107,7 +105,7 @@ namespace Emby.Server.Implementations.Session
return SendMessage(command.Command.ToString(), messageId, args, cancellationToken);
}
- private string[] _supportedMessages = new string[] { };
+ private string[] _supportedMessages = new string[] { };
public Task SendMessage<T>(string name, string messageId, T data, ISessionController[] allControllers, CancellationToken cancellationToken)
{
if (!IsSessionActive)
diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs
index 4e444ac01..e60593198 100644
--- a/Emby.Server.Implementations/Session/SessionManager.cs
+++ b/Emby.Server.Implementations/Session/SessionManager.cs
@@ -1,13 +1,22 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
using MediaBrowser.Common.Events;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
+using MediaBrowser.Controller.Authentication;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Security;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Devices;
@@ -15,21 +24,11 @@ using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Library;
-using Microsoft.Extensions.Logging;
+using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Session;
-using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using MediaBrowser.Controller.Net;
-using MediaBrowser.Model.Querying;
using MediaBrowser.Model.Threading;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Controller.Authentication;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Session
{
@@ -202,8 +201,8 @@ namespace Emby.Server.Implementations.Session
/// <param name="remoteEndPoint">The remote end point.</param>
/// <param name="user">The user.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">user</exception>
- /// <exception cref="System.UnauthorizedAccessException"></exception>
+ /// <exception cref="ArgumentNullException">user</exception>
+ /// <exception cref="UnauthorizedAccessException"></exception>
public SessionInfo LogSessionActivity(string appName,
string appVersion,
string deviceId,
@@ -266,8 +265,7 @@ namespace Emby.Server.Implementations.Session
{
var key = GetSessionKey(session.Client, session.DeviceId);
- SessionInfo removed;
- _activeConnections.TryRemove(key, out removed);
+ _activeConnections.TryRemove(key, out var removed);
OnSessionEnded(session);
}
@@ -282,8 +280,7 @@ namespace Emby.Server.Implementations.Session
{
var key = GetSessionKey(session.Client, session.DeviceId);
- SessionInfo removed;
- _activeConnections.TryRemove(key, out removed);
+ _activeConnections.TryRemove(key, out var removed);
OnSessionEnded(session);
}
@@ -366,7 +363,7 @@ namespace Emby.Server.Implementations.Session
/// Removes the now playing item id.
/// </summary>
/// <param name="session">The session.</param>
- /// <exception cref="System.ArgumentNullException">item</exception>
+ /// <exception cref="ArgumentNullException">item</exception>
private void RemoveNowPlayingItem(SessionInfo session)
{
session.NowPlayingItem = null;
@@ -405,7 +402,7 @@ namespace Emby.Server.Implementations.Session
CheckDisposed();
- SessionInfo sessionInfo = _activeConnections.GetOrAdd(key, k =>
+ var sessionInfo = _activeConnections.GetOrAdd(key, k =>
{
return CreateSession(k, appName, appVersion, deviceId, deviceName, remoteEndPoint, user);
});
@@ -572,7 +569,7 @@ namespace Emby.Server.Implementations.Session
/// </summary>
/// <param name="info">The info.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">info</exception>
+ /// <exception cref="ArgumentNullException">info</exception>
public async Task OnPlaybackStart(PlaybackStartInfo info)
{
CheckDisposed();
@@ -785,8 +782,8 @@ namespace Emby.Server.Implementations.Session
/// </summary>
/// <param name="info">The info.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">info</exception>
- /// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception>
+ /// <exception cref="ArgumentNullException">info</exception>
+ /// <exception cref="ArgumentOutOfRangeException">positionTicks</exception>
public async Task OnPlaybackStopped(PlaybackStopInfo info)
{
CheckDisposed();
@@ -798,7 +795,7 @@ namespace Emby.Server.Implementations.Session
if (info.PositionTicks.HasValue && info.PositionTicks.Value < 0)
{
- throw new ArgumentOutOfRangeException(nameof(info),"The PlaybackStopInfo's PositionTicks was negative.");
+ throw new ArgumentOutOfRangeException(nameof(info), "The PlaybackStopInfo's PositionTicks was negative.");
}
var session = GetSession(info.SessionId);
@@ -1285,8 +1282,8 @@ namespace Emby.Server.Implementations.Session
/// </summary>
/// <param name="sessionId">The session identifier.</param>
/// <param name="userId">The user identifier.</param>
- /// <exception cref="System.UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception>
- /// <exception cref="System.ArgumentException">The requested user is already the primary user of the session.</exception>
+ /// <exception cref="UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception>
+ /// <exception cref="ArgumentException">The requested user is already the primary user of the session.</exception>
public void AddAdditionalUser(string sessionId, Guid userId)
{
CheckDisposed();
@@ -1319,8 +1316,8 @@ namespace Emby.Server.Implementations.Session
/// </summary>
/// <param name="sessionId">The session identifier.</param>
/// <param name="userId">The user identifier.</param>
- /// <exception cref="System.UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception>
- /// <exception cref="System.ArgumentException">The requested user is already the primary user of the session.</exception>
+ /// <exception cref="UnauthorizedAccessException">Cannot modify additional users without authenticating first.</exception>
+ /// <exception cref="ArgumentException">The requested user is already the primary user of the session.</exception>
public void RemoveAdditionalUser(string sessionId, Guid userId)
{
CheckDisposed();
diff --git a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
index 116e455cf..24903f5e8 100644
--- a/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
+++ b/Emby.Server.Implementations/Session/SessionWebSocketListener.cs
@@ -1,15 +1,11 @@
+using System;
+using System.Threading.Tasks;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Events;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
-using MediaBrowser.Model.Session;
-using System;
-using System.Collections.Specialized;
-using System.Globalization;
-using System.Linq;
-using System.Threading.Tasks;
using MediaBrowser.Model.Services;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Session
{
diff --git a/Emby.Server.Implementations/Session/WebSocketController.cs b/Emby.Server.Implementations/Session/WebSocketController.cs
index ed34f8721..0d483c55f 100644
--- a/Emby.Server.Implementations/Session/WebSocketController.cs
+++ b/Emby.Server.Implementations/Session/WebSocketController.cs
@@ -1,16 +1,13 @@
-using MediaBrowser.Controller.Net;
-using MediaBrowser.Controller.Session;
-using MediaBrowser.Model.Entities;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Session;
-using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
-using System.Net.WebSockets;
+using MediaBrowser.Controller.Net;
+using MediaBrowser.Controller.Session;
+using MediaBrowser.Model.Net;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Session
{
diff --git a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
index 1b2974c27..271188314 100644
--- a/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
+++ b/Emby.Server.Implementations/Sorting/AiredEpisodeOrderComparer.cs
@@ -1,8 +1,8 @@
+using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs b/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs
index df64d816f..535f123f9 100644
--- a/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs
+++ b/Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs
@@ -1,9 +1,9 @@
+using System;
using System.Linq;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/AlbumComparer.cs b/Emby.Server.Implementations/Sorting/AlbumComparer.cs
index dda1c5478..3831a0d2d 100644
--- a/Emby.Server.Implementations/Sorting/AlbumComparer.cs
+++ b/Emby.Server.Implementations/Sorting/AlbumComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/AlphanumComparator.cs b/Emby.Server.Implementations/Sorting/AlphanumComparator.cs
index 4bfcda1ac..2e00c24d7 100644
--- a/Emby.Server.Implementations/Sorting/AlphanumComparator.cs
+++ b/Emby.Server.Implementations/Sorting/AlphanumComparator.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Text;
using MediaBrowser.Controller.Sorting;
@@ -29,8 +29,8 @@ namespace Emby.Server.Implementations.Sorting
char thisCh = s1[thisMarker];
char thatCh = s2[thatMarker];
- StringBuilder thisChunk = new StringBuilder();
- StringBuilder thatChunk = new StringBuilder();
+ var thisChunk = new StringBuilder();
+ var thatChunk = new StringBuilder();
while ((thisMarker < s1.Length) && (thisChunk.Length == 0 || SortHelper.InChunk(thisCh, thisChunk[0])))
{
diff --git a/Emby.Server.Implementations/Sorting/ArtistComparer.cs b/Emby.Server.Implementations/Sorting/ArtistComparer.cs
index b0f0549e3..9d5befc9a 100644
--- a/Emby.Server.Implementations/Sorting/ArtistComparer.cs
+++ b/Emby.Server.Implementations/Sorting/ArtistComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs b/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs
index 994759171..87d3ae2d6 100644
--- a/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs
+++ b/Emby.Server.Implementations/Sorting/CommunityRatingComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs b/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs
index 5c4aeaf86..adb78dec5 100644
--- a/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs
+++ b/Emby.Server.Implementations/Sorting/CriticRatingComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs b/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs
index 1c5149517..8501bd9ee 100644
--- a/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/DateCreatedComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs b/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs
index ffe7fbaec..623675157 100644
--- a/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs
@@ -1,8 +1,8 @@
+using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
index c11c1986c..73f59f8cd 100644
--- a/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/DatePlayedComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/GameSystemComparer.cs b/Emby.Server.Implementations/Sorting/GameSystemComparer.cs
index 0b534b3cb..2a04bae3c 100644
--- a/Emby.Server.Implementations/Sorting/GameSystemComparer.cs
+++ b/Emby.Server.Implementations/Sorting/GameSystemComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs b/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs
index 48e3172ce..66de05a6a 100644
--- a/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs
+++ b/Emby.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
@@ -52,4 +52,4 @@ namespace Emby.Server.Implementations.Sorting
/// <value>The user manager.</value>
public IUserManager UserManager { get; set; }
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Sorting/IsFolderComparer.cs b/Emby.Server.Implementations/Sorting/IsFolderComparer.cs
index 8b6cbb2db..dfaa144cd 100644
--- a/Emby.Server.Implementations/Sorting/IsFolderComparer.cs
+++ b/Emby.Server.Implementations/Sorting/IsFolderComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs b/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs
index 9f4fc2c06..da3f3dd25 100644
--- a/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/IsPlayedComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
@@ -52,4 +52,4 @@ namespace Emby.Server.Implementations.Sorting
/// <value>The user manager.</value>
public IUserManager UserManager { get; set; }
}
-} \ No newline at end of file
+}
diff --git a/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs b/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs
index d145aa8dd..d99d0eff2 100644
--- a/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs
+++ b/Emby.Server.Implementations/Sorting/IsUnplayedComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/NameComparer.cs b/Emby.Server.Implementations/Sorting/NameComparer.cs
index cfd810a6b..10fa4359a 100644
--- a/Emby.Server.Implementations/Sorting/NameComparer.cs
+++ b/Emby.Server.Implementations/Sorting/NameComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs b/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs
index cd48e3048..e8fa8edc8 100644
--- a/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs
+++ b/Emby.Server.Implementations/Sorting/OfficialRatingComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
index b7165ab8c..eb74ce1bd 100644
--- a/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
+++ b/Emby.Server.Implementations/Sorting/PlayCountComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/PlayersComparer.cs b/Emby.Server.Implementations/Sorting/PlayersComparer.cs
index 5b50ea48a..e3652f36b 100644
--- a/Emby.Server.Implementations/Sorting/PlayersComparer.cs
+++ b/Emby.Server.Implementations/Sorting/PlayersComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
index 26c6badaa..0c944a7a0 100644
--- a/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
+++ b/Emby.Server.Implementations/Sorting/PremiereDateComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
index 0aa5e833b..472a07eb3 100644
--- a/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
+++ b/Emby.Server.Implementations/Sorting/ProductionYearComparer.cs
@@ -1,4 +1,4 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
diff --git a/Emby.Server.Implementations/Sorting/RandomComparer.cs b/Emby.Server.Implementations/Sorting/RandomComparer.cs
index c69ebe41a..bde8b4534 100644
--- a/Emby.Server.Implementations/Sorting/RandomComparer.cs
+++ b/Emby.Server.Implementations/Sorting/RandomComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/RuntimeComparer.cs b/Emby.Server.Implementations/Sorting/RuntimeComparer.cs
index 77851d702..1d2bdde26 100644
--- a/Emby.Server.Implementations/Sorting/RuntimeComparer.cs
+++ b/Emby.Server.Implementations/Sorting/RuntimeComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs b/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs
index 1bbe30b95..942e84704 100644
--- a/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs
+++ b/Emby.Server.Implementations/Sorting/SeriesSortNameComparer.cs
@@ -1,7 +1,7 @@
+using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/SortNameComparer.cs b/Emby.Server.Implementations/Sorting/SortNameComparer.cs
index 6c42ed988..cc0571c78 100644
--- a/Emby.Server.Implementations/Sorting/SortNameComparer.cs
+++ b/Emby.Server.Implementations/Sorting/SortNameComparer.cs
@@ -1,7 +1,7 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/StartDateComparer.cs b/Emby.Server.Implementations/Sorting/StartDateComparer.cs
index 7ae8037d9..aa040fa15 100644
--- a/Emby.Server.Implementations/Sorting/StartDateComparer.cs
+++ b/Emby.Server.Implementations/Sorting/StartDateComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
+using System;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Querying;
-using System;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/Sorting/StudioComparer.cs b/Emby.Server.Implementations/Sorting/StudioComparer.cs
index 605d65154..617ed55d5 100644
--- a/Emby.Server.Implementations/Sorting/StudioComparer.cs
+++ b/Emby.Server.Implementations/Sorting/StudioComparer.cs
@@ -1,8 +1,8 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Sorting;
-using MediaBrowser.Model.Querying;
using System;
using System.Linq;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Sorting;
+using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.Sorting
{
diff --git a/Emby.Server.Implementations/StartupOptions.cs b/Emby.Server.Implementations/StartupOptions.cs
index 2114d85bf..221263634 100644
--- a/Emby.Server.Implementations/StartupOptions.cs
+++ b/Emby.Server.Implementations/StartupOptions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Linq;
namespace Emby.Server.Implementations
diff --git a/Emby.Server.Implementations/SystemEvents.cs b/Emby.Server.Implementations/SystemEvents.cs
index 578338aee..1297200f9 100644
--- a/Emby.Server.Implementations/SystemEvents.cs
+++ b/Emby.Server.Implementations/SystemEvents.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using MediaBrowser.Model.System;
using Microsoft.Extensions.Logging;
diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs
index 652557466..630ef4893 100644
--- a/Emby.Server.Implementations/TV/TVSeriesManager.cs
+++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs
@@ -1,14 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.TV;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Dto;
namespace Emby.Server.Implementations.TV
{
@@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.TV
OrderBy = new[] { new ValueTuple<string, SortOrder>(ItemSortBy.DatePlayed, SortOrder.Descending) },
SeriesPresentationUniqueKey = presentationUniqueKey,
Limit = limit,
- DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
+ DtoOptions = new DtoOptions
{
Fields = new ItemFields[]
{
@@ -196,7 +196,7 @@ namespace Emby.Server.Implementations.TV
IsPlayed = true,
Limit = 1,
ParentIndexNumberNotEquals = 0,
- DtoOptions = new MediaBrowser.Controller.Dto.DtoOptions
+ DtoOptions = new DtoOptions
{
Fields = new ItemFields[]
{
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs
index 507dd5e42..991ee8688 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Detector.cs
@@ -179,7 +179,7 @@ namespace NLangDetect.Core
DetectBlock();
}
- List<Language> list = SortProbability(_langprob);
+ var list = SortProbability(_langprob);
return list;
}
@@ -250,7 +250,7 @@ namespace NLangDetect.Core
_langprob = new double[_langlist.Count];
- Random rand = (_seed.HasValue ? new Random(_seed.Value) : new Random());
+ var rand = (_seed.HasValue ? new Random(_seed.Value) : new Random());
for (int t = 0; t < _trialsCount; t++)
{
@@ -305,7 +305,7 @@ namespace NLangDetect.Core
private List<string> ExtractNGrams()
{
var list = new List<string>();
- NGram ngram = new NGram();
+ var ngram = new NGram();
for (int i = 0; i < _text.Length; i++)
{
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
index 9d75b8356..08e98d62e 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/DetectorFactory.cs
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
-using System.IO;
-using System.IO.Compression;
-using NLangDetect.Core.Utils;
-using MediaBrowser.Model.Serialization;
using System.Linq;
+using MediaBrowser.Model.Serialization;
+using NLangDetect.Core.Utils;
namespace NLangDetect.Core
{
@@ -56,7 +54,7 @@ namespace NLangDetect.Core
public static Detector Create(double alpha)
{
- Detector detector = CreateDetector();
+ var detector = CreateDetector();
detector.SetAlpha(alpha);
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
index 3ffd3b2d9..87f07fc9c 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/ErrorCode.cs
@@ -1,15 +1,15 @@
-namespace NLangDetect.Core
+namespace NLangDetect.Core
{
- public enum ErrorCode
- {
- NoTextError,
- FormatError,
- FileLoadError,
- DuplicateLangError,
- NeedLoadProfileError,
- CantDetectError,
- CantOpenTrainData,
- TrainDataFormatError,
- InitParamError,
- }
+ public enum ErrorCode
+ {
+ NoTextError,
+ FormatError,
+ FileLoadError,
+ DuplicateLangError,
+ NeedLoadProfileError,
+ CantDetectError,
+ CantOpenTrainData,
+ TrainDataFormatError,
+ InitParamError,
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
index cd77a30eb..6e58a0be8 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/CharExtensions.cs
@@ -1,14 +1,14 @@
-using System;
+using System;
namespace NLangDetect.Core.Extensions
{
- public static class CharExtensions
- {
- private const int MIN_CODE_POINT = 0x000000;
- private const int MAX_CODE_POINT = 0x10ffff;
+ public static class CharExtensions
+ {
+ private const int MIN_CODE_POINT = 0x000000;
+ private const int MAX_CODE_POINT = 0x10ffff;
- private static readonly int[] _unicodeBlockStarts =
- {
+ private static readonly int[] _unicodeBlockStarts =
+ {
#region Unicode block starts
0x0000, // Basic Latin
@@ -165,8 +165,8 @@ namespace NLangDetect.Core.Extensions
#endregion
};
- private static readonly UnicodeBlock?[] _unicodeBlocks =
- {
+ private static readonly UnicodeBlock?[] _unicodeBlocks =
+ {
#region Unicode blocks
UnicodeBlock.BasicLatin,
UnicodeBlock.Latin1Supplement,
@@ -322,53 +322,53 @@ namespace NLangDetect.Core.Extensions
#endregion
};
- #region Public methods
+ #region Public methods
- /// <remarks>
- /// Taken from JDK source: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Character.java#Character.UnicodeBlock.0LATIN_EXTENDED_ADDITIONAL
- /// </remarks>
- public static UnicodeBlock? GetUnicodeBlock(this char ch)
- {
- int codePoint = ch;
+ /// <remarks>
+ /// Taken from JDK source: http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Character.java#Character.UnicodeBlock.0LATIN_EXTENDED_ADDITIONAL
+ /// </remarks>
+ public static UnicodeBlock? GetUnicodeBlock(this char ch)
+ {
+ int codePoint = ch;
- if (!IsValidCodePoint(codePoint))
- {
- throw new ArgumentException("Argument is not a valid code point.", nameof(ch));
- }
+ if (!IsValidCodePoint(codePoint))
+ {
+ throw new ArgumentException("Argument is not a valid code point.", nameof(ch));
+ }
- int top, bottom, current;
+ int top, bottom, current;
- bottom = 0;
- top = _unicodeBlockStarts.Length;
- current = top / 2;
+ bottom = 0;
+ top = _unicodeBlockStarts.Length;
+ current = top / 2;
- // invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom]
- while (top - bottom > 1)
- {
- if (codePoint >= _unicodeBlockStarts[current])
- {
- bottom = current;
- }
- else
- {
- top = current;
- }
+ // invariant: top > current >= bottom && codePoint >= unicodeBlockStarts[bottom]
+ while (top - bottom > 1)
+ {
+ if (codePoint >= _unicodeBlockStarts[current])
+ {
+ bottom = current;
+ }
+ else
+ {
+ top = current;
+ }
- current = (top + bottom) / 2;
- }
+ current = (top + bottom) / 2;
+ }
- return _unicodeBlocks[current];
- }
+ return _unicodeBlocks[current];
+ }
- #endregion
+ #endregion
- #region Private helper methods
+ #region Private helper methods
- private static bool IsValidCodePoint(int codePoint)
- {
- return codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT;
- }
+ private static bool IsValidCodePoint(int codePoint)
+ {
+ return codePoint >= MIN_CODE_POINT && codePoint <= MAX_CODE_POINT;
+ }
- #endregion
- }
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
index d55ca80df..5b2fce60b 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/RandomExtensions.cs
@@ -1,51 +1,51 @@
-using System;
+using System;
namespace NLangDetect.Core.Extensions
{
- public static class RandomExtensions
- {
- private const double _Epsilon = 2.22044604925031E-15;
-
- private static readonly object _mutex = new object();
-
- private static double _nextNextGaussian;
- private static bool _hasNextNextGaussian;
-
- /// <summary>
- /// Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.
- /// The general contract of nextGaussian is that one double value, chosen from (approximately) the usual normal distribution with mean 0.0 and standard deviation 1.0, is pseudorandomly generated and returned.
- /// </summary>
- /// <remarks>
- /// Taken from: http://download.oracle.com/javase/6/docs/api/java/util/Random.html (nextGaussian())
- /// </remarks>
- public static double NextGaussian(this Random random)
+ public static class RandomExtensions
{
- lock (_mutex)
- {
- if (_hasNextNextGaussian)
- {
- _hasNextNextGaussian = false;
+ private const double _Epsilon = 2.22044604925031E-15;
- return _nextNextGaussian;
- }
+ private static readonly object _mutex = new object();
- double v1, v2, s;
+ private static double _nextNextGaussian;
+ private static bool _hasNextNextGaussian;
- do
+ /// <summary>
+ /// Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0.0 and standard deviation 1.0 from this random number generator's sequence.
+ /// The general contract of nextGaussian is that one double value, chosen from (approximately) the usual normal distribution with mean 0.0 and standard deviation 1.0, is pseudorandomly generated and returned.
+ /// </summary>
+ /// <remarks>
+ /// Taken from: http://download.oracle.com/javase/6/docs/api/java/util/Random.html (nextGaussian())
+ /// </remarks>
+ public static double NextGaussian(this Random random)
{
- v1 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0
- v2 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0
- s = v1 * v1 + v2 * v2;
- }
- while (s >= 1.0 || Math.Abs(s - 0.0) < _Epsilon);
+ lock (_mutex)
+ {
+ if (_hasNextNextGaussian)
+ {
+ _hasNextNextGaussian = false;
+
+ return _nextNextGaussian;
+ }
- double multiplier = Math.Sqrt(-2.0 * Math.Log(s) / s);
+ double v1, v2, s;
- _nextNextGaussian = v2 * multiplier;
- _hasNextNextGaussian = true;
+ do
+ {
+ v1 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0
+ v2 = 2.0 * random.NextDouble() - 1.0; // between -1.0 and 1.0
+ s = v1 * v1 + v2 * v2;
+ }
+ while (s >= 1.0 || Math.Abs(s - 0.0) < _Epsilon);
- return v1 * multiplier;
- }
+ double multiplier = Math.Sqrt(-2.0 * Math.Log(s) / s);
+
+ _nextNextGaussian = v2 * multiplier;
+ _hasNextNextGaussian = true;
+
+ return v1 * multiplier;
+ }
+ }
}
- }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
index 71b5de75e..bcc81f968 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Extensions/UnicodeBlock.cs
@@ -1,131 +1,131 @@
-namespace NLangDetect.Core.Extensions
+namespace NLangDetect.Core.Extensions
{
- public enum UnicodeBlock
- {
- BasicLatin,
- Latin1Supplement,
- LatinExtendedA,
- LatinExtendedB,
- IpaExtensions,
- SpacingModifierLetters,
- CombiningDiacriticalMarks,
- Greek,
- Cyrillic,
- CyrillicSupplementary,
- Armenian,
- Hebrew,
- Arabic,
- Syriac,
- Thaana,
- Devanagari,
- Bengali,
- Gurmukhi,
- Gujarati,
- Oriya,
- Tamil,
- Telugu,
- Kannada,
- Malayalam,
- Sinhala,
- Thai,
- Lao,
- Tibetan,
- Myanmar,
- Georgian,
- HangulJamo,
- Ethiopic,
- Cherokee,
- UnifiedCanadianAboriginalSyllabics,
- Ogham,
- Runic,
- Tagalog,
- Hanunoo,
- Buhid,
- Tagbanwa,
- Khmer,
- Mongolian,
- Limbu,
- TaiLe,
- KhmerSymbols,
- PhoneticExtensions,
- LatinExtendedAdditional,
- GreekExtended,
- GeneralPunctuation,
- SuperscriptsAndSubscripts,
- CurrencySymbols,
- CombiningMarksForSymbols,
- LetterlikeSymbols,
- NumberForms,
- Arrows,
- MathematicalOperators,
- MiscellaneousTechnical,
- ControlPictures,
- OpticalCharacterRecognition,
- EnclosedAlphanumerics,
- BoxDrawing,
- BlockElements,
- GeometricShapes,
- MiscellaneousSymbols,
- Dingbats,
- MiscellaneousMathematicalSymbolsA,
- SupplementalArrowsA,
- BraillePatterns,
- SupplementalArrowsB,
- MiscellaneousMathematicalSymbolsB,
- SupplementalMathematicalOperators,
- MiscellaneousSymbolsAndArrows,
- CjkRadicalsSupplement,
- KangxiRadicals,
- IdeographicDescriptionCharacters,
- CjkSymbolsAndPunctuation,
- Hiragana,
- Katakana,
- Bopomofo,
- HangulCompatibilityJamo,
- Kanbun,
- BopomofoExtended,
- KatakanaPhoneticExtensions,
- EnclosedCjkLettersAndMonths,
- CjkCompatibility,
- CjkUnifiedIdeographsExtensionA,
- YijingHexagramSymbols,
- CjkUnifiedIdeographs,
- YiSyllables,
- YiRadicals,
- HangulSyllables,
- HighSurrogates,
- HighPrivateUseSurrogates,
- LowSurrogates,
- PrivateUseArea,
- CjkCompatibilityIdeographs,
- AlphabeticPresentationForms,
- ArabicPresentationFormsA,
- VariationSelectors,
- CombiningHalfMarks,
- CjkCompatibilityForms,
- SmallFormVariants,
- ArabicPresentationFormsB,
- HalfwidthAndFullwidthForms,
- Specials,
- LinearBSyllabary,
- LinearBIdeograms,
- AegeanNumbers,
- OldItalic,
- Gothic,
- Ugaritic,
- Deseret,
- Shavian,
- Osmanya,
- CypriotSyllabary,
- ByzantineMusicalSymbols,
- MusicalSymbols,
- TaiXuanJingSymbols,
- MathematicalAlphanumericSymbols,
- CjkUnifiedIdeographsExtensionB,
- CjkCompatibilityIdeographsSupplement,
- Tags,
- VariationSelectorsSupplement,
- SupplementaryPrivateUseAreaA,
- SupplementaryPrivateUseAreaB,
- }
+ public enum UnicodeBlock
+ {
+ BasicLatin,
+ Latin1Supplement,
+ LatinExtendedA,
+ LatinExtendedB,
+ IpaExtensions,
+ SpacingModifierLetters,
+ CombiningDiacriticalMarks,
+ Greek,
+ Cyrillic,
+ CyrillicSupplementary,
+ Armenian,
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Georgian,
+ HangulJamo,
+ Ethiopic,
+ Cherokee,
+ UnifiedCanadianAboriginalSyllabics,
+ Ogham,
+ Runic,
+ Tagalog,
+ Hanunoo,
+ Buhid,
+ Tagbanwa,
+ Khmer,
+ Mongolian,
+ Limbu,
+ TaiLe,
+ KhmerSymbols,
+ PhoneticExtensions,
+ LatinExtendedAdditional,
+ GreekExtended,
+ GeneralPunctuation,
+ SuperscriptsAndSubscripts,
+ CurrencySymbols,
+ CombiningMarksForSymbols,
+ LetterlikeSymbols,
+ NumberForms,
+ Arrows,
+ MathematicalOperators,
+ MiscellaneousTechnical,
+ ControlPictures,
+ OpticalCharacterRecognition,
+ EnclosedAlphanumerics,
+ BoxDrawing,
+ BlockElements,
+ GeometricShapes,
+ MiscellaneousSymbols,
+ Dingbats,
+ MiscellaneousMathematicalSymbolsA,
+ SupplementalArrowsA,
+ BraillePatterns,
+ SupplementalArrowsB,
+ MiscellaneousMathematicalSymbolsB,
+ SupplementalMathematicalOperators,
+ MiscellaneousSymbolsAndArrows,
+ CjkRadicalsSupplement,
+ KangxiRadicals,
+ IdeographicDescriptionCharacters,
+ CjkSymbolsAndPunctuation,
+ Hiragana,
+ Katakana,
+ Bopomofo,
+ HangulCompatibilityJamo,
+ Kanbun,
+ BopomofoExtended,
+ KatakanaPhoneticExtensions,
+ EnclosedCjkLettersAndMonths,
+ CjkCompatibility,
+ CjkUnifiedIdeographsExtensionA,
+ YijingHexagramSymbols,
+ CjkUnifiedIdeographs,
+ YiSyllables,
+ YiRadicals,
+ HangulSyllables,
+ HighSurrogates,
+ HighPrivateUseSurrogates,
+ LowSurrogates,
+ PrivateUseArea,
+ CjkCompatibilityIdeographs,
+ AlphabeticPresentationForms,
+ ArabicPresentationFormsA,
+ VariationSelectors,
+ CombiningHalfMarks,
+ CjkCompatibilityForms,
+ SmallFormVariants,
+ ArabicPresentationFormsB,
+ HalfwidthAndFullwidthForms,
+ Specials,
+ LinearBSyllabary,
+ LinearBIdeograms,
+ AegeanNumbers,
+ OldItalic,
+ Gothic,
+ Ugaritic,
+ Deseret,
+ Shavian,
+ Osmanya,
+ CypriotSyllabary,
+ ByzantineMusicalSymbols,
+ MusicalSymbols,
+ TaiXuanJingSymbols,
+ MathematicalAlphanumericSymbols,
+ CjkUnifiedIdeographsExtensionB,
+ CjkCompatibilityIdeographsSupplement,
+ Tags,
+ VariationSelectorsSupplement,
+ SupplementaryPrivateUseAreaA,
+ SupplementaryPrivateUseAreaB,
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs
index 5895f68ae..26157483b 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/GenProfile.cs
@@ -1,67 +1,67 @@
using System;
+using System.IO;
using System.IO.Compression;
using System.Xml;
using NLangDetect.Core.Utils;
-using System.IO;
namespace NLangDetect.Core
{
- // TODO IMM HI: xml reader not tested
- public static class GenProfile
- {
- #region Public methods
-
- public static LangProfile load(string lang, string file)
+ // TODO IMM HI: xml reader not tested
+ public static class GenProfile
{
- LangProfile profile = new LangProfile(lang);
- TagExtractor tagextractor = new TagExtractor("abstract", 100);
- Stream inputStream = null;
-
- try
- {
- inputStream = File.OpenRead(file);
-
- string extension = Path.GetExtension(file) ?? "";
+ #region Public methods
- if (extension.ToUpper() == ".GZ")
+ public static LangProfile load(string lang, string file)
{
- inputStream = new GZipStream(inputStream, CompressionMode.Decompress);
- }
+ var profile = new LangProfile(lang);
+ var tagextractor = new TagExtractor("abstract", 100);
+ Stream inputStream = null;
- using (XmlReader xmlReader = XmlReader.Create(inputStream))
- {
- while (xmlReader.Read())
- {
- switch (xmlReader.NodeType)
+ try
{
- case XmlNodeType.Element:
- tagextractor.SetTag(xmlReader.Name);
- break;
+ inputStream = File.OpenRead(file);
+
+ string extension = Path.GetExtension(file) ?? "";
+
+ if (extension.ToUpper() == ".GZ")
+ {
+ inputStream = new GZipStream(inputStream, CompressionMode.Decompress);
+ }
- case XmlNodeType.Text:
- tagextractor.Add(xmlReader.Value);
- break;
+ using (var xmlReader = XmlReader.Create(inputStream))
+ {
+ while (xmlReader.Read())
+ {
+ switch (xmlReader.NodeType)
+ {
+ case XmlNodeType.Element:
+ tagextractor.SetTag(xmlReader.Name);
+ break;
- case XmlNodeType.EndElement:
- tagextractor.CloseTag(profile);
- break;
+ case XmlNodeType.Text:
+ tagextractor.Add(xmlReader.Value);
+ break;
+
+ case XmlNodeType.EndElement:
+ tagextractor.CloseTag(profile);
+ break;
+ }
+ }
+ }
+ }
+ finally
+ {
+ if (inputStream != null)
+ {
+ inputStream.Close();
+ }
}
- }
- }
- }
- finally
- {
- if (inputStream != null)
- {
- inputStream.Close();
- }
- }
- Console.WriteLine(lang + ": " + tagextractor.Count);
+ Console.WriteLine(lang + ": " + tagextractor.Count);
- return profile;
- }
+ return profile;
+ }
- #endregion
- }
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs
index 32e50a219..6ed1efa88 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/InternalException.cs
@@ -1,22 +1,22 @@
-using System;
+using System;
namespace NLangDetect.Core
{
- [Serializable]
- public class InternalException : Exception
- {
- #region Constructor(s)
-
- public InternalException(string message, Exception innerException)
- : base(message, innerException)
+ [Serializable]
+ public class InternalException : Exception
{
- }
+ #region Constructor(s)
- public InternalException(string message)
- : this(message, null)
- {
- }
+ public InternalException(string message, Exception innerException)
+ : base(message, innerException)
+ {
+ }
+
+ public InternalException(string message)
+ : this(message, null)
+ {
+ }
- #endregion
- }
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs
index f4b4b153e..e15263c05 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Language.cs
@@ -2,44 +2,44 @@ using System.Globalization;
namespace NLangDetect.Core
{
- // TODO IMM HI: name??
- public class Language
- {
- #region Constructor(s)
-
- public Language(string name, double probability)
+ // TODO IMM HI: name??
+ public class Language
{
- Name = name;
- Probability = probability;
- }
+ #region Constructor(s)
- #endregion
+ public Language(string name, double probability)
+ {
+ Name = name;
+ Probability = probability;
+ }
- #region Object overrides
+ #endregion
- public override string ToString()
- {
- if (Name == null)
- {
- return "";
- }
-
- return
- string.Format(
- CultureInfo.InvariantCulture.NumberFormat,
- "{0}:{1:0.000000}",
- Name,
- Probability);
- }
+ #region Object overrides
- #endregion
+ public override string ToString()
+ {
+ if (Name == null)
+ {
+ return "";
+ }
- #region Properties
+ return
+ string.Format(
+ CultureInfo.InvariantCulture.NumberFormat,
+ "{0}:{1:0.000000}",
+ Name,
+ Probability);
+ }
- public string Name { get; set; }
+ #endregion
- public double Probability { get; set; }
+ #region Properties
- #endregion
- }
+ public string Name { get; set; }
+
+ public double Probability { get; set; }
+
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
index 044c7e759..a26f236a8 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/LanguageDetector.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using MediaBrowser.Model.Serialization;
namespace NLangDetect.Core
@@ -25,7 +25,7 @@ namespace NLangDetect.Core
{
if (string.IsNullOrEmpty(plainText)) { throw new ArgumentException("Argument can't be null nor empty.", nameof(plainText)); }
- Detector detector = DetectorFactory.Create(_DefaultAlpha);
+ var detector = DetectorFactory.Create(_DefaultAlpha);
detector.Append(plainText);
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
index e0d066020..800858bca 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/NLangDetectException.cs
@@ -1,23 +1,23 @@
-using System;
+using System;
namespace NLangDetect.Core
{
- public class NLangDetectException : Exception
- {
- #region Constructor(s)
-
- public NLangDetectException(string message, ErrorCode errorCode)
- : base(message)
+ public class NLangDetectException : Exception
{
- ErrorCode = errorCode;
- }
+ #region Constructor(s)
- #endregion
+ public NLangDetectException(string message, ErrorCode errorCode)
+ : base(message)
+ {
+ ErrorCode = errorCode;
+ }
- #region Properties
+ #endregion
- public ErrorCode ErrorCode { get; private set; }
+ #region Properties
- #endregion
- }
+ public ErrorCode ErrorCode { get; private set; }
+
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs
index c5a20dbf0..d7afb4113 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/ProbVector.cs
@@ -1,35 +1,33 @@
-using System;
+using System;
using System.Collections.Generic;
namespace NLangDetect.Core
{
- public class ProbVector
- {
- private readonly Dictionary<int, double> _dict = new Dictionary<int, double>();
-
- public double this[int key]
+ public class ProbVector
{
- get
- {
- double value;
-
- return _dict.TryGetValue(key, out value) ? value : 0.0;
- }
+ private readonly Dictionary<int, double> _dict = new Dictionary<int, double>();
- set
- {
- if (Math.Abs(value) < double.Epsilon)
+ public double this[int key]
{
- if (_dict.ContainsKey(key))
- {
- _dict.Remove(key);
- }
+ get
+ {
+ return _dict.TryGetValue(key, out var value) ? value : 0.0;
+ }
- return;
- }
+ set
+ {
+ if (Math.Abs(value) < double.Epsilon)
+ {
+ if (_dict.ContainsKey(key))
+ {
+ _dict.Remove(key);
+ }
- _dict[key] = value;
- }
+ return;
+ }
+
+ _dict[key] = value;
+ }
+ }
}
- }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
index 0413edfad..78b44e1fc 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/LangProfile.cs
@@ -59,8 +59,8 @@ namespace NLangDetect.Core.Utils
ICollection<string> keys = freq.Keys;
int roman = 0;
// TODO IMM HI: move up?
- Regex regex1 = new Regex("^[A-Za-z]$", RegexOptions.Compiled);
- List<string> keysToRemove = new List<string>();
+ var regex1 = new Regex("^[A-Za-z]$", RegexOptions.Compiled);
+ var keysToRemove = new List<string>();
foreach (string key in keys)
{
@@ -93,7 +93,7 @@ namespace NLangDetect.Core.Utils
ICollection<string> keys2 = freq.Keys;
// TODO IMM HI: move up?
- Regex regex2 = new Regex(".*[A-Za-z].*", RegexOptions.Compiled);
+ var regex2 = new Regex(".*[A-Za-z].*", RegexOptions.Compiled);
foreach (string key in keys2)
{
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
index 1d605cc47..879c0a09b 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/Messages.cs
@@ -1,10 +1,9 @@
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
-using System.Reflection;
-using System.Text.RegularExpressions;
using System.Linq;
-using System;
+using System.Text.RegularExpressions;
namespace NLangDetect.Core.Utils
{
@@ -19,19 +18,17 @@ namespace NLangDetect.Core.Utils
public static string getString(string key)
{
- string value;
-
return
- _messages.TryGetValue(key, out value)
+ _messages.TryGetValue(key, out var value)
? value
: string.Format("!{0}!", key);
}
private static Dictionary<string, string> LoadMessages()
{
- var manifestName = typeof(Messages).Assembly.GetManifestResourceNames().FirstOrDefault(i => i.IndexOf("messages.properties", StringComparison.Ordinal) != -1) ;
+ var manifestName = typeof(Messages).Assembly.GetManifestResourceNames().FirstOrDefault(i => i.IndexOf("messages.properties", StringComparison.Ordinal) != -1);
- Stream messagesStream =
+ var messagesStream =
typeof(Messages).Assembly
.GetManifestResourceStream(manifestName);
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
index b1738f7ca..2d29ec697 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/NGram.cs
@@ -6,14 +6,14 @@ using NLangDetect.Core.Extensions;
namespace NLangDetect.Core.Utils
{
- public class NGram
- {
- public const int GramsCount = 3;
+ public class NGram
+ {
+ public const int GramsCount = 3;
- private static readonly string Latin1Excluded = Messages.getString("NGram.LATIN1_EXCLUDE");
+ private static readonly string Latin1Excluded = Messages.getString("NGram.LATIN1_EXCLUDE");
- private static readonly string[] CjkClass =
- {
+ private static readonly string[] CjkClass =
+ {
#region CJK classes
Messages.getString("NGram.KANJI_1_0"),
@@ -146,185 +146,185 @@ namespace NLangDetect.Core.Utils
#endregion
};
- private static readonly Dictionary<char, char> _cjkMap;
+ private static readonly Dictionary<char, char> _cjkMap;
- private StringBuilder _grams;
- private bool _capitalword;
+ private StringBuilder _grams;
+ private bool _capitalword;
- #region Constructor(s)
+ #region Constructor(s)
- static NGram()
- {
- _cjkMap = new Dictionary<char, char>();
+ static NGram()
+ {
+ _cjkMap = new Dictionary<char, char>();
- foreach (string cjk_list in CjkClass)
- {
- char representative = cjk_list[0];
+ foreach (string cjk_list in CjkClass)
+ {
+ char representative = cjk_list[0];
- for (int i = 0; i < cjk_list.Length; i++)
- {
- _cjkMap.Add(cjk_list[i], representative);
+ for (int i = 0; i < cjk_list.Length; i++)
+ {
+ _cjkMap.Add(cjk_list[i], representative);
+ }
+ }
}
- }
- }
-
- public NGram()
- {
- _grams = new StringBuilder(" ");
- _capitalword = false;
- }
- #endregion
+ public NGram()
+ {
+ _grams = new StringBuilder(" ");
+ _capitalword = false;
+ }
- #region Public methods
+ #endregion
- public static char Normalize(char ch)
- {
- UnicodeBlock? unicodeBlock = ch.GetUnicodeBlock();
+ #region Public methods
- if (!unicodeBlock.HasValue)
- {
- return ch;
- }
+ public static char Normalize(char ch)
+ {
+ UnicodeBlock? unicodeBlock = ch.GetUnicodeBlock();
- switch (unicodeBlock.Value)
- {
- case UnicodeBlock.BasicLatin:
- {
- if (ch < 'A' || (ch < 'a' && ch > 'Z') || ch > 'z')
+ if (!unicodeBlock.HasValue)
{
- return ' ';
+ return ch;
}
- break;
- }
-
- case UnicodeBlock.Latin1Supplement:
- {
- if (Latin1Excluded.IndexOf(ch) >= 0)
+ switch (unicodeBlock.Value)
{
- return ' ';
+ case UnicodeBlock.BasicLatin:
+ {
+ if (ch < 'A' || (ch < 'a' && ch > 'Z') || ch > 'z')
+ {
+ return ' ';
+ }
+
+ break;
+ }
+
+ case UnicodeBlock.Latin1Supplement:
+ {
+ if (Latin1Excluded.IndexOf(ch) >= 0)
+ {
+ return ' ';
+ }
+
+ break;
+ }
+
+ case UnicodeBlock.GeneralPunctuation:
+ {
+ return ' ';
+ }
+
+ case UnicodeBlock.Arabic:
+ {
+ if (ch == '\u06cc')
+ {
+ return '\u064a';
+ }
+
+ break;
+ }
+
+ case UnicodeBlock.LatinExtendedAdditional:
+ {
+ if (ch >= '\u1ea0')
+ {
+ return '\u1ec3';
+ }
+
+ break;
+ }
+
+ case UnicodeBlock.Hiragana:
+ {
+ return '\u3042';
+ }
+
+ case UnicodeBlock.Katakana:
+ {
+ return '\u30a2';
+ }
+
+ case UnicodeBlock.Bopomofo:
+ case UnicodeBlock.BopomofoExtended:
+ {
+ return '\u3105';
+ }
+
+ case UnicodeBlock.CjkUnifiedIdeographs:
+ {
+ if (_cjkMap.ContainsKey(ch))
+ {
+ return _cjkMap[ch];
+ }
+
+ break;
+ }
+
+ case UnicodeBlock.HangulSyllables:
+ {
+ return '\uac00';
+ }
}
- break;
- }
-
- case UnicodeBlock.GeneralPunctuation:
- {
- return ' ';
- }
+ return ch;
+ }
- case UnicodeBlock.Arabic:
- {
- if (ch == '\u06cc')
+ public void AddChar(char ch)
+ {
+ ch = Normalize(ch);
+ char lastchar = _grams[_grams.Length - 1];
+ if (lastchar == ' ')
{
- return '\u064a';
+ _grams = new StringBuilder(" ");
+ _capitalword = false;
+ if (ch == ' ') return;
}
-
- break;
- }
-
- case UnicodeBlock.LatinExtendedAdditional:
- {
- if (ch >= '\u1ea0')
+ else if (_grams.Length >= GramsCount)
{
- return '\u1ec3';
+ _grams.Remove(0, 1);
}
+ _grams.Append(ch);
- break;
- }
-
- case UnicodeBlock.Hiragana:
- {
- return '\u3042';
- }
-
- case UnicodeBlock.Katakana:
- {
- return '\u30a2';
- }
-
- case UnicodeBlock.Bopomofo:
- case UnicodeBlock.BopomofoExtended:
- {
- return '\u3105';
- }
-
- case UnicodeBlock.CjkUnifiedIdeographs:
- {
- if (_cjkMap.ContainsKey(ch))
+ if (char.IsUpper(ch))
{
- return _cjkMap[ch];
+ if (char.IsUpper(lastchar)) _capitalword = true;
}
+ else
+ {
+ _capitalword = false;
+ }
+ }
- break;
- }
-
- case UnicodeBlock.HangulSyllables:
- {
- return '\uac00';
- }
- }
-
- return ch;
- }
+ public string Get(int n)
+ {
+ if (_capitalword)
+ {
+ return null;
+ }
- public void AddChar(char ch)
- {
- ch = Normalize(ch);
- char lastchar = _grams[_grams.Length - 1];
- if (lastchar == ' ')
- {
- _grams = new StringBuilder(" ");
- _capitalword = false;
- if (ch == ' ') return;
- }
- else if (_grams.Length >= GramsCount)
- {
- _grams.Remove(0, 1);
- }
- _grams.Append(ch);
-
- if (char.IsUpper(ch))
- {
- if (char.IsUpper(lastchar)) _capitalword = true;
- }
- else
- {
- _capitalword = false;
- }
- }
+ int len = _grams.Length;
- public string Get(int n)
- {
- if (_capitalword)
- {
- return null;
- }
+ if (n < 1 || n > 3 || len < n)
+ {
+ return null;
+ }
- int len = _grams.Length;
+ if (n == 1)
+ {
+ char ch = _grams[len - 1];
- if (n < 1 || n > 3 || len < n)
- {
- return null;
- }
+ if (ch == ' ')
+ {
+ return null;
+ }
- if (n == 1)
- {
- char ch = _grams[len - 1];
+ return ch.ToString();
+ }
- if (ch == ' ')
- {
- return null;
+ // TODO IMM HI: is ToString() here effective?
+ return _grams.ToString().SubSequence(len - n, len);
}
- return ch.ToString();
- }
-
- // TODO IMM HI: is ToString() here effective?
- return _grams.ToString().SubSequence(len - n, len);
+ #endregion
}
-
- #endregion
- }
}
diff --git a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
index 896fd0960..4441ecd0f 100644
--- a/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
+++ b/Emby.Server.Implementations/TextEncoding/NLangDetect/Utils/TagExtractor.cs
@@ -2,75 +2,75 @@ using System.Text;
namespace NLangDetect.Core.Utils
{
- public class TagExtractor
- {
- // TODO IMM HI: do the really need to be internal?
- internal string Target;
- internal int Threshold;
- internal StringBuilder StringBuilder;
- internal string Tag;
-
- #region Constructor(s)
-
- public TagExtractor(string tag, int threshold)
+ public class TagExtractor
{
- Target = tag;
- Threshold = threshold;
- Count = 0;
- Clear();
- }
+ // TODO IMM HI: do the really need to be internal?
+ internal string Target;
+ internal int Threshold;
+ internal StringBuilder StringBuilder;
+ internal string Tag;
- #endregion
+ #region Constructor(s)
- #region Public methods
-
- public void Clear()
- {
- StringBuilder = new StringBuilder();
- Tag = null;
- }
+ public TagExtractor(string tag, int threshold)
+ {
+ Target = tag;
+ Threshold = threshold;
+ Count = 0;
+ Clear();
+ }
- public void SetTag(string tag)
- {
- Tag = tag;
- }
+ #endregion
- public void Add(string line)
- {
- if (Tag == Target && line != null)
- {
- StringBuilder.Append(line);
- }
- }
+ #region Public methods
- public void CloseTag(LangProfile profile)
- {
- if (profile != null && Tag == Target && StringBuilder.Length > Threshold)
- {
- var gram = new NGram();
+ public void Clear()
+ {
+ StringBuilder = new StringBuilder();
+ Tag = null;
+ }
- for (int i = 0; i < StringBuilder.Length; i++)
+ public void SetTag(string tag)
{
- gram.AddChar(StringBuilder[i]);
+ Tag = tag;
+ }
- for (int n = 1; n <= NGram.GramsCount; n++)
- {
- profile.Add(gram.Get(n));
- }
+ public void Add(string line)
+ {
+ if (Tag == Target && line != null)
+ {
+ StringBuilder.Append(line);
+ }
}
- Count++;
- }
+ public void CloseTag(LangProfile profile)
+ {
+ if (profile != null && Tag == Target && StringBuilder.Length > Threshold)
+ {
+ var gram = new NGram();
+
+ for (int i = 0; i < StringBuilder.Length; i++)
+ {
+ gram.AddChar(StringBuilder[i]);
- Clear();
- }
+ for (int n = 1; n <= NGram.GramsCount; n++)
+ {
+ profile.Add(gram.Get(n));
+ }
+ }
+
+ Count++;
+ }
- #endregion
+ Clear();
+ }
+
+ #endregion
- #region Properties
+ #region Properties
- public int Count { get; private set; }
+ public int Count { get; private set; }
- #endregion
- }
+ #endregion
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/TextEncoding.cs b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs
index 8f15d5a7b..09705d381 100644
--- a/Emby.Server.Implementations/TextEncoding/TextEncoding.cs
+++ b/Emby.Server.Implementations/TextEncoding/TextEncoding.cs
@@ -1,9 +1,9 @@
using System;
using System.Text;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Text;
+using Microsoft.Extensions.Logging;
using NLangDetect.Core;
using UniversalDetector;
diff --git a/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
index 15f1ce91e..49a371efa 100644
--- a/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
+++ b/Emby.Server.Implementations/TextEncoding/TextEncodingDetect.cs
@@ -1,4 +1,4 @@
-namespace Emby.Server.Implementations.TextEncoding
+namespace Emby.Server.Implementations.TextEncoding
{
// Copyright 2015-2016 Jonathan Bennett <jon@autoitscript.com>
//
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
index 922239c54..8cd2ae658 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/CharsetDetector.cs
@@ -100,7 +100,7 @@ namespace UniversalDetector
this.confidence = 0.0f;
base.Reset();
}
-
+
public string Charset => charset;
public float Confidence => confidence;
@@ -109,9 +109,9 @@ namespace UniversalDetector
{
this.charset = charset;
this.confidence = confidence;
-// if (Finished != null) {
-// Finished(charset, confidence);
-// }
+ // if (Finished != null) {
+ // Finished(charset, confidence);
+ // }
}
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
index 19152a7ac..68c7d681b 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Big5Prober.cs
@@ -57,27 +57,34 @@ namespace UniversalDetector.Core
int codingState = 0;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
distributionAnalyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- distributionAnalyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ distributionAnalyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
if (state == ProbingState.Detecting)
if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
index 19bcdc779..8554cba66 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/BitPackage.cs
@@ -40,20 +40,20 @@ namespace UniversalDetector.Core
{
public class BitPackage
{
- public static int INDEX_SHIFT_4BITS = 3;
- public static int INDEX_SHIFT_8BITS = 2;
+ public static int INDEX_SHIFT_4BITS = 3;
+ public static int INDEX_SHIFT_8BITS = 2;
public static int INDEX_SHIFT_16BITS = 1;
- public static int SHIFT_MASK_4BITS = 7;
- public static int SHIFT_MASK_8BITS = 3;
+ public static int SHIFT_MASK_4BITS = 7;
+ public static int SHIFT_MASK_8BITS = 3;
public static int SHIFT_MASK_16BITS = 1;
- public static int BIT_SHIFT_4BITS = 2;
- public static int BIT_SHIFT_8BITS = 3;
+ public static int BIT_SHIFT_4BITS = 2;
+ public static int BIT_SHIFT_8BITS = 3;
public static int BIT_SHIFT_16BITS = 4;
- public static int UNIT_MASK_4BITS = 0x0000000F;
- public static int UNIT_MASK_8BITS = 0x000000FF;
+ public static int UNIT_MASK_4BITS = 0x0000000F;
+ public static int UNIT_MASK_8BITS = 0x000000FF;
public static int UNIT_MASK_16BITS = 0x0000FFFF;
private int indexShift;
@@ -94,5 +94,5 @@ namespace UniversalDetector.Core
return (data[i >> indexShift] >>
((i & shiftMask) << bitShift)) & unitMask;
}
- }
+ }
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
index da5995932..601b4906a 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharDistributionAnalyser.cs
@@ -83,7 +83,7 @@ namespace UniversalDetector.Core
/// convert this encoding string to a number, here called order.
/// This allow multiple encoding of a language to share one frequency table
/// </summary>
- /// <param name="buf">A <see cref="System.Byte"/></param>
+ /// <param name="buf">A <see cref="byte"/></param>
/// <param name="offset"></param>
/// <returns></returns>
public abstract int GetOrder(byte[] buf, int offset);
@@ -91,15 +91,17 @@ namespace UniversalDetector.Core
/// <summary>
/// Feed a character with known length
/// </summary>
- /// <param name="buf">A <see cref="System.Byte"/></param>
+ /// <param name="buf">A <see cref="byte"/></param>
/// <param name="offset">buf offset</param>
public void HandleOneChar(byte[] buf, int offset, int charLen)
{
//we only care about 2-bytes character in our distribution analysis
int order = (charLen == 2) ? GetOrder(buf, offset) : -1;
- if (order >= 0) {
+ if (order >= 0)
+ {
totalChars++;
- if (order < tableSize) { // order is valid
+ if (order < tableSize)
+ { // order is valid
if (512 > charToFreqOrder[order])
freqChars++;
}
@@ -124,7 +126,8 @@ namespace UniversalDetector.Core
// negative answer
if (totalChars <= 0 || freqChars <= MINIMUM_DATA_THRESHOLD)
return SURE_NO;
- if (totalChars != freqChars) {
+ if (totalChars != freqChars)
+ {
float r = freqChars / ((totalChars - freqChars) * typicalDistributionRatio);
if (r < SURE_YES)
return r;
@@ -610,8 +613,8 @@ namespace UniversalDetector.Core
/// <returns></returns>
public override int GetOrder(byte[] buf, int offset)
{
- if (buf[offset] >= 0xB0 && buf[offset+1] >= 0xA1)
- return 94 * (buf[offset] - 0xb0) + buf[offset+1] - 0xA1;
+ if (buf[offset] >= 0xB0 && buf[offset + 1] >= 0xA1)
+ return 94 * (buf[offset] - 0xb0) + buf[offset + 1] - 0xA1;
else
return -1;
}
@@ -1040,7 +1043,7 @@ namespace UniversalDetector.Core
public override int GetOrder(byte[] buf, int offset)
{
if (buf[offset] >= 0xC4)
- return 94 * (buf[offset] - 0xC4) + buf[offset+1] - 0xA1;
+ return 94 * (buf[offset] - 0xC4) + buf[offset + 1] - 0xA1;
else
return -1;
}
@@ -1048,7 +1051,7 @@ namespace UniversalDetector.Core
public class EUCKRDistributionAnalyser : CharDistributionAnalyser
{
- // Sampling from about 20M text materials include literature and computer technology
+ // Sampling from about 20M text materials include literature and computer technology
/*
* 128 --> 0.79
* 256 --> 0.92
@@ -1634,7 +1637,7 @@ namespace UniversalDetector.Core
public override int GetOrder(byte[] buf, int offset)
{
if (buf[offset] >= 0xB0)
- return 94 * (buf[offset] - 0xB0) + buf[offset+1] - 0xA1;
+ return 94 * (buf[offset] - 0xB0) + buf[offset + 1] - 0xA1;
else
return -1;
}
@@ -2559,12 +2562,15 @@ namespace UniversalDetector.Core
/// </summary>
public override int GetOrder(byte[] buf, int offset)
{
- if (buf[offset] >= 0xA4) {
- if (buf[offset+1] >= 0xA1)
- return 157 * (buf[offset] - 0xA4) + buf[offset+1] - 0xA1 + 63;
+ if (buf[offset] >= 0xA4)
+ {
+ if (buf[offset + 1] >= 0xA1)
+ return 157 * (buf[offset] - 0xA4) + buf[offset + 1] - 0xA1 + 63;
else
- return 157 * (buf[offset] - 0xA4) + buf[offset+1] - 0x40;
- } else {
+ return 157 * (buf[offset] - 0xA4) + buf[offset + 1] - 0x40;
+ }
+ else
+ {
return -1;
}
}
@@ -3140,9 +3146,9 @@ namespace UniversalDetector.Core
order = 188 * (buf[offset] - 0xE0 + 31);
else
return -1;
- order += buf[offset+1] - 0x40;
+ order += buf[offset + 1] - 0x40;
- if (buf[offset+1] > 0x7F)
+ if (buf[offset + 1] > 0x7F)
order--;
return order;
}
@@ -3162,7 +3168,7 @@ namespace UniversalDetector.Core
public override int GetOrder(byte[] buf, int offset)
{
if (buf[offset] >= 0xA0)
- return 94 * (buf[offset] - 0xA1) + buf[offset+1] - 0xA1;
+ return 94 * (buf[offset] - 0xA1) + buf[offset + 1] - 0xA1;
else
return -1;
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
index cc4539058..e61e5848d 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CharsetProber.cs
@@ -40,7 +40,8 @@ using System.IO;
namespace UniversalDetector.Core
{
- public enum ProbingState {
+ public enum ProbingState
+ {
Detecting = 0, // no sure answer yet, but caller can ask for confidence
FoundIt = 1, // positive answer
NotMe = 2 // negative answer
@@ -107,21 +108,27 @@ namespace UniversalDetector.Core
{
byte[] result = null;
- using (MemoryStream ms = new MemoryStream(buf.Length)) {
+ using (var ms = new MemoryStream(buf.Length))
+ {
bool meetMSB = false;
int max = offset + len;
int prev = offset;
int cur = offset;
- while (cur < max) {
+ while (cur < max)
+ {
byte b = buf[cur];
- if ((b & 0x80) != 0) {
+ if ((b & 0x80) != 0)
+ {
meetMSB = true;
- } else if (b < CAPITAL_A || (b > CAPITAL_Z && b < SMALL_A)
- || b > SMALL_Z) {
- if (meetMSB && cur > prev) {
+ }
+ else if (b < CAPITAL_A || (b > CAPITAL_Z && b < SMALL_A)
+ || b > SMALL_Z)
+ {
+ if (meetMSB && cur > prev)
+ {
ms.Write(buf, prev, cur - prev);
ms.WriteByte(SPACE);
meetMSB = false;
@@ -149,14 +156,16 @@ namespace UniversalDetector.Core
{
byte[] result = null;
- using (MemoryStream ms = new MemoryStream(buf.Length)) {
+ using (var ms = new MemoryStream(buf.Length))
+ {
bool inTag = false;
int max = offset + len;
int prev = offset;
int cur = offset;
- while (cur < max) {
+ while (cur < max)
+ {
byte b = buf[cur];
@@ -167,8 +176,10 @@ namespace UniversalDetector.Core
// it's ascii, but it's not a letter
if ((b & 0x80) == 0 && (b < CAPITAL_A || b > SMALL_Z
- || (b > CAPITAL_Z && b < SMALL_A))) {
- if (cur > prev && !inTag) {
+ || (b > CAPITAL_Z && b < SMALL_A)))
+ {
+ if (cur > prev && !inTag)
+ {
ms.Write(buf, prev, cur - prev);
ms.WriteByte(SPACE);
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
index 34f24161d..7ba1f2aa3 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/CodingStateMachine.cs
@@ -60,7 +60,8 @@ namespace UniversalDetector.Core
// for each byte we get its class, if it is first byte,
// we also get byte length
int byteCls = model.GetClass(b);
- if (currentState == SMModel.START) {
+ if (currentState == SMModel.START)
+ {
currentBytePos = 0;
currentCharLen = model.charLenTable[byteCls];
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
index eac67fe95..56bcf2274 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCJPProber.cs
@@ -62,29 +62,36 @@ namespace UniversalDetector.Core
int codingState;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
contextAnalyser.HandleOneChar(lastChar, 0, charLen);
distributionAnalyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- contextAnalyser.HandleOneChar(buf, i-1, charLen);
- distributionAnalyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ contextAnalyser.HandleOneChar(buf, i - 1, charLen);
+ distributionAnalyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
if (state == ProbingState.Detecting)
if (contextAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
state = ProbingState.FoundIt;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
index b1543dae1..ac9a0b559 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCKRProber.cs
@@ -60,27 +60,34 @@ namespace UniversalDetector.Core
int codingState;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
distributionAnalyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- distributionAnalyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ distributionAnalyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
if (state == ProbingState.Detecting)
if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
index 65a521760..94a14d166 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EUCTWProber.cs
@@ -56,27 +56,34 @@ namespace UniversalDetector.Core
int codingState;
int max = offset + len;
- for (int i = 0; i < max; i++) {
+ for (int i = 0; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
distributionAnalyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- distributionAnalyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ distributionAnalyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
if (state == ProbingState.Detecting)
if (distributionAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
index f457bf490..e8da73c1c 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscCharsetProber.cs
@@ -67,22 +67,30 @@ namespace UniversalDetector.Core
{
int max = offset + len;
- for (int i = offset; i < max && state == ProbingState.Detecting; i++) {
- for (int j = activeSM - 1; j >= 0; j--) {
+ for (int i = offset; i < max && state == ProbingState.Detecting; i++)
+ {
+ for (int j = activeSM - 1; j >= 0; j--)
+ {
// byte is feed to all active state machine
int codingState = codingSM[j].NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
// got negative answer for this state machine, make it inactive
activeSM--;
- if (activeSM == 0) {
+ if (activeSM == 0)
+ {
state = ProbingState.NotMe;
return state;
- } else if (j != activeSM) {
+ }
+ else if (j != activeSM)
+ {
CodingStateMachine t = codingSM[activeSM];
codingSM[activeSM] = codingSM[j];
codingSM[j] = t;
}
- } else if (codingState == SMModel.ITSME) {
+ }
+ else if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
detectedCharset = codingSM[j].ModelName;
return state;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
index 6ebfa8a4c..38471e28c 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/EscSM.cs
@@ -87,7 +87,7 @@ namespace UniversalDetector.Core
BitPackage.Pack4bits( 4, ITSME, START, START, START, START, START, START) //28-2f
};
- private readonly static int[] HZCharLenTable = {0, 0, 0, 0, 0, 0};
+ private readonly static int[] HZCharLenTable = { 0, 0, 0, 0, 0, 0 };
public HZSMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
@@ -153,7 +153,7 @@ namespace UniversalDetector.Core
BitPackage.Pack4bits(ERROR,ERROR,ERROR,ERROR,ERROR,ITSME,ERROR,START) //38-3f
};
- private readonly static int[] ISO2022CNCharLenTable = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+ private readonly static int[] ISO2022CNCharLenTable = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
public ISO2022CNSMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
@@ -220,7 +220,7 @@ namespace UniversalDetector.Core
BitPackage.Pack4bits(ERROR, ERROR, ERROR,ERROR,ITSME,ERROR,START,START) //40-47
};
- private readonly static int[] ISO2022JPCharLenTable = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ private readonly static int[] ISO2022JPCharLenTable = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
public ISO2022JPSMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
@@ -284,7 +284,7 @@ namespace UniversalDetector.Core
BitPackage.Pack4bits(ERROR,ERROR,ERROR,ITSME,START,START,START,START) //20-27
};
- private readonly static int[] ISO2022KRCharLenTable = {0, 0, 0, 0, 0, 0};
+ private readonly static int[] ISO2022KRCharLenTable = { 0, 0, 0, 0, 0, 0 };
public ISO2022KRSMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
index 0d2ebd8c7..f805524eb 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/GB18030Prober.cs
@@ -64,30 +64,38 @@ namespace UniversalDetector.Core
int codingState = SMModel.START;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
analyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- analyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ analyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
- if (state == ProbingState.Detecting) {
+ if (state == ProbingState.Detecting)
+ {
if (analyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
state = ProbingState.FoundIt;
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
index 2cbf33075..bd7490ad7 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/HebrewProber.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
/**
* General ideas of the Hebrew charset recognition
@@ -144,11 +143,11 @@ namespace UniversalDetector.Core
public class HebrewProber : CharsetProber
{
// windows-1255 / ISO-8859-8 code points of interest
- private const byte FINAL_KAF = 0xEA;
+ private const byte FINAL_KAF = 0xEA;
private const byte NORMAL_KAF = 0xEB;
- private const byte FINAL_MEM = 0xED;
+ private const byte FINAL_MEM = 0xED;
private const byte NORMAL_MEM = 0xEE;
- private const byte FINAL_NUN = 0xEF;
+ private const byte FINAL_NUN = 0xEF;
private const byte NORMAL_NUN = 0xF0;
private const byte FINAL_PE = 0xF3;
private const byte NORMAL_PE = 0xF4;
@@ -217,14 +216,17 @@ namespace UniversalDetector.Core
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
byte b = buf[i];
// a word just ended
- if (b == 0x20) {
+ if (b == 0x20)
+ {
// *(curPtr-2) was not a space so prev is not a 1 letter word
- if (beforePrev != 0x20) {
+ if (beforePrev != 0x20)
+ {
// case (1) [-2:not space][-1:final letter][cur:space]
if (IsFinal(prev))
finalCharLogicalScore++;
@@ -233,7 +235,9 @@ namespace UniversalDetector.Core
finalCharVisualScore++;
}
- } else {
+ }
+ else
+ {
// case (3) [-2:space][-1:final letter][cur:not space]
if ((beforePrev == 0x20) && (IsFinal(prev)) && (b != ' '))
++finalCharVisualScore;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
index 7d28224c5..a2bf04ba0 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/JapaneseContextAnalyser.cs
@@ -160,7 +160,7 @@ namespace UniversalDetector.Core
{
// This is just one way to calculate confidence. It works well for me.
if (totalRel > MINIMUM_DATA_THRESHOLD)
- return ((float)(totalRel - relSample[0]))/totalRel;
+ return ((float)(totalRel - relSample[0])) / totalRel;
else
return DONT_KNOW;
}
@@ -181,22 +181,28 @@ namespace UniversalDetector.Core
// to record those bytes as well and analyse the character once it
// is complete, but since a character will not make much difference,
// skipping it will simplify our logic and improve performance.
- for (int i = needToSkipCharNum+offset; i < max; ) {
+ for (int i = needToSkipCharNum + offset; i < max;)
+ {
int order = GetOrder(buf, i, out charLen);
i += charLen;
- if (i > max) {
+ if (i > max)
+ {
needToSkipCharNum = i - max;
lastCharOrder = -1;
- } else {
- if (order != -1 && lastCharOrder != -1) {
- totalRel ++;
- if (totalRel > MAX_REL_THRESHOLD) {
+ }
+ else
+ {
+ if (order != -1 && lastCharOrder != -1)
+ {
+ totalRel++;
+ if (totalRel > MAX_REL_THRESHOLD)
+ {
done = true;
break;
}
relSample[jp2CharContext[lastCharOrder, order]]++;
- }
- lastCharOrder = order;
+ }
+ lastCharOrder = order;
}
}
}
@@ -210,7 +216,8 @@ namespace UniversalDetector.Core
// Only 2-bytes characters are of our interest
int order = (charLen == 2) ? GetOrder(buf, offset) : -1;
- if (order != -1 && lastCharOrder != -1) {
+ if (order != -1 && lastCharOrder != -1)
+ {
totalRel++;
// count this sequence to its category counter
relSample[jp2CharContext[lastCharOrder, order]]++;
@@ -221,7 +228,8 @@ namespace UniversalDetector.Core
public void Reset()
{
totalRel = 0;
- for (int i = 0; i < CATEGORIES_NUM; i++) {
+ for (int i = 0; i < CATEGORIES_NUM; i++)
+ {
relSample[i] = 0;
needToSkipCharNum = 0;
lastCharOrder = -1;
@@ -254,8 +262,9 @@ namespace UniversalDetector.Core
charLen = 1;
// return its order if it is hiragana
- if (buf[offset] == HIRAGANA_FIRST_BYTE) {
- byte low = buf[offset+1];
+ if (buf[offset] == HIRAGANA_FIRST_BYTE)
+ {
+ byte low = buf[offset + 1];
if (low >= 0x9F && low <= 0xF1)
return low - 0x9F;
}
@@ -265,8 +274,9 @@ namespace UniversalDetector.Core
protected override int GetOrder(byte[] buf, int offset)
{
// We are only interested in Hiragana
- if (buf[offset] == HIRAGANA_FIRST_BYTE) {
- byte low = buf[offset+1];
+ if (buf[offset] == HIRAGANA_FIRST_BYTE)
+ {
+ byte low = buf[offset + 1];
if (low >= 0x9F && low <= 0xF1)
return low - 0x9F;
}
@@ -292,8 +302,9 @@ namespace UniversalDetector.Core
charLen = 1;
// return its order if it is hiragana
- if (high == HIRAGANA_FIRST_BYTE) {
- byte low = buf[offset+1];
+ if (high == HIRAGANA_FIRST_BYTE)
+ {
+ byte low = buf[offset + 1];
if (low >= 0xA1 && low <= 0xF3)
return low - 0xA1;
}
@@ -303,8 +314,9 @@ namespace UniversalDetector.Core
protected override int GetOrder(byte[] buf, int offset)
{
// We are only interested in Hiragana
- if (buf[offset] == HIRAGANA_FIRST_BYTE) {
- byte low = buf[offset+1];
+ if (buf[offset] == HIRAGANA_FIRST_BYTE)
+ {
+ byte low = buf[offset + 1];
if (low >= 0xA1 && low <= 0xF3)
return low - 0xA1;
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
index 5d57e30e1..11ce90c87 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/Latin1Prober.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -135,12 +134,14 @@ namespace UniversalDetector.Core
byte[] newbuf = FilterWithEnglishLetters(buf, offset, len);
byte charClass, freq;
- for (int i = 0; i < newbuf.Length; i++) {
+ for (int i = 0; i < newbuf.Length; i++)
+ {
charClass = Latin1_CharToClass[newbuf[i]];
freq = Latin1ClassModel[lastCharClass * CLASS_NUM + charClass];
- if (freq == 0) {
- state = ProbingState.NotMe;
- break;
+ if (freq == 0)
+ {
+ state = ProbingState.NotMe;
+ break;
}
freqCounter[freq]++;
lastCharClass = charClass;
@@ -155,13 +156,17 @@ namespace UniversalDetector.Core
float confidence = 0.0f;
int total = 0;
- for (int i = 0; i < FREQ_CAT_NUM; i++) {
+ for (int i = 0; i < FREQ_CAT_NUM; i++)
+ {
total += freqCounter[i];
}
- if (total <= 0) {
+ if (total <= 0)
+ {
confidence = 0.0f;
- } else {
+ }
+ else
+ {
confidence = freqCounter[3] * 1.0f / total;
confidence -= freqCounter[1] * 20.0f / total;
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
index b4f6928a4..b23e499c3 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSGroupProber.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -67,7 +66,8 @@ namespace UniversalDetector.Core
public override string GetCharsetName()
{
- if (bestGuess == -1) {
+ if (bestGuess == -1)
+ {
GetConfidence();
if (bestGuess == -1)
bestGuess = 0;
@@ -78,13 +78,17 @@ namespace UniversalDetector.Core
public override void Reset()
{
activeNum = 0;
- for (int i = 0; i < probers.Length; i++) {
- if (probers[i] != null) {
- probers[i].Reset();
- isActive[i] = true;
- ++activeNum;
- } else {
- isActive[i] = false;
+ for (int i = 0; i < probers.Length; i++)
+ {
+ if (probers[i] != null)
+ {
+ probers[i].Reset();
+ isActive[i] = true;
+ ++activeNum;
+ }
+ else
+ {
+ isActive[i] = false;
}
}
bestGuess = -1;
@@ -100,33 +104,43 @@ namespace UniversalDetector.Core
bool keepNext = true;
int max = offset + len;
- for (int i = offset; i < max; i++) {
- if ((buf[i] & 0x80) != 0) {
+ for (int i = offset; i < max; i++)
+ {
+ if ((buf[i] & 0x80) != 0)
+ {
highbyteBuf[hptr++] = buf[i];
keepNext = true;
- } else {
+ }
+ else
+ {
//if previous is highbyte, keep this even it is a ASCII
- if (keepNext) {
+ if (keepNext)
+ {
highbyteBuf[hptr++] = buf[i];
keepNext = false;
}
}
}
- ProbingState st = ProbingState.NotMe;
+ var st = ProbingState.NotMe;
- for (int i = 0; i < probers.Length; i++) {
+ for (int i = 0; i < probers.Length; i++)
+ {
if (!isActive[i])
continue;
st = probers[i].HandleData(highbyteBuf, 0, hptr);
- if (st == ProbingState.FoundIt) {
+ if (st == ProbingState.FoundIt)
+ {
bestGuess = i;
state = ProbingState.FoundIt;
break;
- } else if (st == ProbingState.NotMe) {
+ }
+ else if (st == ProbingState.NotMe)
+ {
isActive[i] = false;
activeNum--;
- if (activeNum <= 0) {
+ if (activeNum <= 0)
+ {
state = ProbingState.NotMe;
break;
}
@@ -140,16 +154,23 @@ namespace UniversalDetector.Core
float bestConf = 0.0f;
float cf = 0.0f;
- if (state == ProbingState.FoundIt) {
+ if (state == ProbingState.FoundIt)
+ {
return 0.99f;
- } else if (state == ProbingState.NotMe) {
+ }
+ else if (state == ProbingState.NotMe)
+ {
return 0.01f;
- } else {
- for (int i = 0; i < PROBERS_NUM; i++) {
+ }
+ else
+ {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
if (!isActive[i])
continue;
cf = probers[i].GetConfidence();
- if (bestConf < cf) {
+ if (bestConf < cf)
+ {
bestConf = cf;
bestGuess = i;
}
@@ -162,10 +183,14 @@ namespace UniversalDetector.Core
{
float cf;
GetConfidence();
- for (int i = 0; i < PROBERS_NUM; i++) {
- if (!isActive[i]) {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
+ if (!isActive[i])
+ {
//Console.WriteLine(" MBCS inactive: {0} (confidence is too low).", ProberName[i]);
- } else {
+ }
+ else
+ {
cf = probers[i].GetConfidence();
//Console.WriteLine(" MBCS {0}: [{1}]", cf, ProberName[i]);
}
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
index 65e04292a..b75340166 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/MBCSSM.cs
@@ -174,7 +174,7 @@ namespace UniversalDetector.Core
// it is used for frequency analysis only, and we are validating
// each code range there as well. So it is safe to set it to be
// 2 here.
- private readonly static int[] GB18030CharLenTable = {0, 1, 1, 1, 1, 1, 2};
+ private readonly static int[] GB18030CharLenTable = { 0, 1, 1, 1, 1, 1, 2 };
public GB18030SMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
@@ -235,7 +235,7 @@ namespace UniversalDetector.Core
BitPackage.Pack4bits(ERROR,START,START,START,START,START,START,START) //10-17
};
- private readonly static int[] BIG5CharLenTable = {0, 1, 1, 2, 0};
+ private readonly static int[] BIG5CharLenTable = { 0, 1, 1, 2, 0 };
public BIG5SMModel() : base(
new BitPackage(BitPackage.INDEX_SHIFT_4BITS,
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
index 640b19c4a..cdbc16891 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCSGroupProber.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -60,7 +59,7 @@ namespace UniversalDetector.Core
probers[7] = new SingleByteCharSetProber(new Win1253Model());
probers[8] = new SingleByteCharSetProber(new Latin5BulgarianModel());
probers[9] = new SingleByteCharSetProber(new Win1251BulgarianModel());
- HebrewProber hebprober = new HebrewProber();
+ var hebprober = new HebrewProber();
probers[10] = hebprober;
// Logical
probers[11] = new SingleByteCharSetProber(new Win1255Model(), false, hebprober);
@@ -76,7 +75,7 @@ namespace UniversalDetector.Core
public override ProbingState HandleData(byte[] buf, int offset, int len)
{
- ProbingState st = ProbingState.NotMe;
+ var st = ProbingState.NotMe;
//apply filter to original buffer, and we got new buffer back
//depend on what script it is, we will feed them the new buffer
@@ -88,19 +87,24 @@ namespace UniversalDetector.Core
if (newBuf.Length == 0)
return state; // Nothing to see here, move on.
- for (int i = 0; i < PROBERS_NUM; i++) {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
if (!isActive[i])
continue;
st = probers[i].HandleData(newBuf, 0, newBuf.Length);
- if (st == ProbingState.FoundIt) {
+ if (st == ProbingState.FoundIt)
+ {
bestGuess = i;
state = ProbingState.FoundIt;
break;
- } else if (st == ProbingState.NotMe) {
+ }
+ else if (st == ProbingState.NotMe)
+ {
isActive[i] = false;
activeNum--;
- if (activeNum <= 0) {
+ if (activeNum <= 0)
+ {
state = ProbingState.NotMe;
break;
}
@@ -112,24 +116,25 @@ namespace UniversalDetector.Core
public override float GetConfidence()
{
float bestConf = 0.0f, cf;
- switch (state) {
- case ProbingState.FoundIt:
- return 0.99f; //sure yes
- case ProbingState.NotMe:
- return 0.01f; //sure no
- default:
- for (int i = 0; i < PROBERS_NUM; i++)
- {
- if (!isActive[i])
- continue;
- cf = probers[i].GetConfidence();
- if (bestConf < cf)
+ switch (state)
+ {
+ case ProbingState.FoundIt:
+ return 0.99f; //sure yes
+ case ProbingState.NotMe:
+ return 0.01f; //sure no
+ default:
+ for (int i = 0; i < PROBERS_NUM; i++)
{
- bestConf = cf;
- bestGuess = i;
+ if (!isActive[i])
+ continue;
+ cf = probers[i].GetConfidence();
+ if (bestConf < cf)
+ {
+ bestConf = cf;
+ bestGuess = i;
+ }
}
- }
- break;
+ break;
}
return bestConf;
}
@@ -137,8 +142,9 @@ namespace UniversalDetector.Core
public override void DumpStatus()
{
float cf = GetConfidence();
- // Console.WriteLine(" SBCS Group Prober --------begin status");
- for (int i = 0; i < PROBERS_NUM; i++) {
+ // Console.WriteLine(" SBCS Group Prober --------begin status");
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
if (isActive[i])
probers[i].DumpStatus();
//else
@@ -148,15 +154,19 @@ namespace UniversalDetector.Core
//Console.WriteLine(" SBCS Group found best match [{0}] confidence {1}.", probers[bestGuess].GetCharsetName(), cf);
}
- public override void Reset ()
+ public override void Reset()
{
int activeNum = 0;
- for (int i = 0; i < PROBERS_NUM; i++) {
- if (probers[i] != null) {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
+ if (probers[i] != null)
+ {
probers[i].Reset();
isActive[i] = true;
activeNum++;
- } else {
+ }
+ else
+ {
isActive[i] = false;
}
}
@@ -167,7 +177,8 @@ namespace UniversalDetector.Core
public override string GetCharsetName()
{
//if we have no answer yet
- if (bestGuess == -1) {
+ if (bestGuess == -1)
+ {
GetConfidence();
//no charset seems positive
if (bestGuess == -1)
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
index 65c0f8ca8..b87ac2170 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SBCharsetProber.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -49,7 +48,7 @@ namespace UniversalDetector.Core
private const float NEGATIVE_SHORTCUT_THRESHOLD = 0.05f;
private const int SYMBOL_CAT_ORDER = 250;
private const int NUMBER_OF_SEQ_CAT = 4;
- private const int POSITIVE_CAT = NUMBER_OF_SEQ_CAT-1;
+ private const int POSITIVE_CAT = NUMBER_OF_SEQ_CAT - 1;
private const int NEGATIVE_CAT = 0;
protected SequenceModel model;
@@ -89,28 +88,33 @@ namespace UniversalDetector.Core
{
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
byte order = model.GetOrder(buf[i]);
if (order < SYMBOL_CAT_ORDER)
totalChar++;
- if (order < SAMPLE_SIZE) {
+ if (order < SAMPLE_SIZE)
+ {
freqChar++;
- if (lastOrder < SAMPLE_SIZE) {
+ if (lastOrder < SAMPLE_SIZE)
+ {
totalSeqs++;
if (!reversed)
- ++(seqCounters[model.GetPrecedence(lastOrder*SAMPLE_SIZE+order)]);
+ ++(seqCounters[model.GetPrecedence(lastOrder * SAMPLE_SIZE + order)]);
else // reverse the order of the letters in the lookup
- ++(seqCounters[model.GetPrecedence(order*SAMPLE_SIZE+lastOrder)]);
+ ++(seqCounters[model.GetPrecedence(order * SAMPLE_SIZE + lastOrder)]);
}
}
lastOrder = order;
}
- if (state == ProbingState.Detecting) {
- if (totalSeqs > SB_ENOUGH_REL_THRESHOLD) {
+ if (state == ProbingState.Detecting)
+ {
+ if (totalSeqs > SB_ENOUGH_REL_THRESHOLD)
+ {
float cf = GetConfidence();
if (cf > POSITIVE_SHORTCUT_THRESHOLD)
state = ProbingState.FoundIt;
@@ -139,7 +143,8 @@ namespace UniversalDetector.Core
// POSITIVE_APPROACH
float r = 0.0f;
- if (totalSeqs > 0) {
+ if (totalSeqs > 0)
+ {
r = 1.0f * seqCounters[POSITIVE_CAT] / totalSeqs / model.TypicalPositiveRatio;
r = r * freqChar / totalChar;
if (r >= 1.0f)
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
index e1fbb873e..d01a683bc 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SJISProber.cs
@@ -69,29 +69,36 @@ namespace UniversalDetector.Core
int codingState;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
int charLen = codingSM.CurrentCharLen;
- if (i == offset) {
+ if (i == offset)
+ {
lastChar[1] = buf[offset];
- contextAnalyser.HandleOneChar(lastChar, 2-charLen, charLen);
+ contextAnalyser.HandleOneChar(lastChar, 2 - charLen, charLen);
distributionAnalyser.HandleOneChar(lastChar, 0, charLen);
- } else {
- contextAnalyser.HandleOneChar(buf, i+1-charLen, charLen);
- distributionAnalyser.HandleOneChar(buf, i-1, charLen);
+ }
+ else
+ {
+ contextAnalyser.HandleOneChar(buf, i + 1 - charLen, charLen);
+ distributionAnalyser.HandleOneChar(buf, i - 1, charLen);
}
}
}
- lastChar[0] = buf[max-1];
+ lastChar[0] = buf[max - 1];
if (state == ProbingState.Detecting)
if (contextAnalyser.GotEnoughData() && GetConfidence() > SHORTCUT_THRESHOLD)
state = ProbingState.FoundIt;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
index cb2f201aa..f11b01e21 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SMModel.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -54,7 +53,7 @@ namespace UniversalDetector.Core
public int[] charLenTable;
private string name;
-
+
public string Name => name;
private int classFactor;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
index b813dda76..3d5ce5e13 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/SequenceModel.cs
@@ -36,7 +36,6 @@
*
* ***** END LICENSE BLOCK ***** */
-using System;
namespace UniversalDetector.Core
{
@@ -51,12 +50,12 @@ namespace UniversalDetector.Core
// freqSeqs / totalSeqs
protected float typicalPositiveRatio;
-
+
public float TypicalPositiveRatio => typicalPositiveRatio;
- // not used
+ // not used
protected bool keepEnglishLetter;
-
+
public bool KeepEnglishLetter => keepEnglishLetter;
protected string charsetName;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
index a469e2a0c..2a625576f 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UTF8Prober.cs
@@ -51,7 +51,8 @@ namespace UniversalDetector.Core
Reset();
}
- public override string GetCharsetName() {
+ public override string GetCharsetName()
+ {
return "UTF-8";
}
@@ -67,21 +68,25 @@ namespace UniversalDetector.Core
int codingState = SMModel.START;
int max = offset + len;
- for (int i = offset; i < max; i++) {
+ for (int i = offset; i < max; i++)
+ {
codingState = codingSM.NextState(buf[i]);
- if (codingState == SMModel.ERROR) {
+ if (codingState == SMModel.ERROR)
+ {
state = ProbingState.NotMe;
break;
}
- if (codingState == SMModel.ITSME) {
+ if (codingState == SMModel.ITSME)
+ {
state = ProbingState.FoundIt;
break;
}
- if (codingState == SMModel.START) {
+ if (codingState == SMModel.START)
+ {
if (codingSM.CurrentCharLen >= 2)
numOfMBChar++;
}
@@ -98,11 +103,14 @@ namespace UniversalDetector.Core
float unlike = 0.99f;
float confidence = 0.0f;
- if (numOfMBChar < 6) {
+ if (numOfMBChar < 6)
+ {
for (int i = 0; i < numOfMBChar; i++)
unlike *= ONE_CHAR_PROB;
confidence = 1.0f - unlike;
- } else {
+ }
+ else
+ {
confidence = 0.99f;
}
return confidence;
diff --git a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
index 4dcb282cc..812a9a793 100644
--- a/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
+++ b/Emby.Server.Implementations/TextEncoding/UniversalDetector/Core/UniversalDetector.cs
@@ -39,7 +39,7 @@
namespace UniversalDetector.Core
{
- enum InputState { PureASCII=0, EscASCII=1, Highbyte=2 };
+ enum InputState { PureASCII = 0, EscASCII = 1, Highbyte = 2 };
public abstract class UniversalDetector
{
@@ -70,7 +70,8 @@ namespace UniversalDetector.Core
protected CharsetProber escCharsetProber;
protected string detectedCharset;
- public UniversalDetector(int languageFilter) {
+ public UniversalDetector(int languageFilter)
+ {
this.start = true;
this.inputState = InputState.PureASCII;
this.lastChar = 0x00;
@@ -80,7 +81,8 @@ namespace UniversalDetector.Core
public virtual void Feed(byte[] buf, int offset, int len)
{
- if (done) {
+ if (done)
+ {
return;
}
@@ -88,52 +90,60 @@ namespace UniversalDetector.Core
gotData = true;
// If the data starts with BOM, we know it is UTF
- if (start) {
+ if (start)
+ {
start = false;
- if (len > 3) {
- switch (buf[0]) {
- case 0xEF:
- if (0xBB == buf[1] && 0xBF == buf[2])
- detectedCharset = "UTF-8";
- break;
- case 0xFE:
- if (0xFF == buf[1] && 0x00 == buf[2] && 0x00 == buf[3])
- // FE FF 00 00 UCS-4, unusual octet order BOM (3412)
- detectedCharset = "X-ISO-10646-UCS-4-3412";
- else if (0xFF == buf[1])
- detectedCharset = "UTF-16BE";
- break;
- case 0x00:
- if (0x00 == buf[1] && 0xFE == buf[2] && 0xFF == buf[3])
- detectedCharset = "UTF-32BE";
- else if (0x00 == buf[1] && 0xFF == buf[2] && 0xFE == buf[3])
- // 00 00 FF FE UCS-4, unusual octet order BOM (2143)
- detectedCharset = "X-ISO-10646-UCS-4-2143";
- break;
- case 0xFF:
- if (0xFE == buf[1] && 0x00 == buf[2] && 0x00 == buf[3])
- detectedCharset = "UTF-32LE";
- else if (0xFE == buf[1])
- detectedCharset = "UTF-16LE";
- break;
+ if (len > 3)
+ {
+ switch (buf[0])
+ {
+ case 0xEF:
+ if (0xBB == buf[1] && 0xBF == buf[2])
+ detectedCharset = "UTF-8";
+ break;
+ case 0xFE:
+ if (0xFF == buf[1] && 0x00 == buf[2] && 0x00 == buf[3])
+ // FE FF 00 00 UCS-4, unusual octet order BOM (3412)
+ detectedCharset = "X-ISO-10646-UCS-4-3412";
+ else if (0xFF == buf[1])
+ detectedCharset = "UTF-16BE";
+ break;
+ case 0x00:
+ if (0x00 == buf[1] && 0xFE == buf[2] && 0xFF == buf[3])
+ detectedCharset = "UTF-32BE";
+ else if (0x00 == buf[1] && 0xFF == buf[2] && 0xFE == buf[3])
+ // 00 00 FF FE UCS-4, unusual octet order BOM (2143)
+ detectedCharset = "X-ISO-10646-UCS-4-2143";
+ break;
+ case 0xFF:
+ if (0xFE == buf[1] && 0x00 == buf[2] && 0x00 == buf[3])
+ detectedCharset = "UTF-32LE";
+ else if (0xFE == buf[1])
+ detectedCharset = "UTF-16LE";
+ break;
} // switch
}
- if (detectedCharset != null) {
+ if (detectedCharset != null)
+ {
done = true;
return;
}
}
- for (int i = 0; i < len; i++) {
+ for (int i = 0; i < len; i++)
+ {
// other than 0xa0, if every other character is ascii, the page is ascii
- if ((buf[i] & 0x80) != 0 && buf[i] != 0xA0) {
+ if ((buf[i] & 0x80) != 0 && buf[i] != 0xA0)
+ {
// we got a non-ascii byte (high-byte)
- if (inputState != InputState.Highbyte) {
+ if (inputState != InputState.Highbyte)
+ {
inputState = InputState.Highbyte;
// kill EscCharsetProber if it is active
- if (escCharsetProber != null) {
+ if (escCharsetProber != null)
+ {
escCharsetProber = null;
}
@@ -145,9 +155,12 @@ namespace UniversalDetector.Core
if (charsetProbers[2] == null)
charsetProbers[2] = new Latin1Prober();
}
- } else {
+ }
+ else
+ {
if (inputState == InputState.PureASCII &&
- (buf[i] == 0x33 || (buf[i] == 0x7B && lastChar == 0x7E))) {
+ (buf[i] == 0x33 || (buf[i] == 0x7B && lastChar == 0x7E)))
+ {
// found escape character or HZ "~{"
inputState = InputState.EscASCII;
}
@@ -155,27 +168,33 @@ namespace UniversalDetector.Core
}
}
- ProbingState st = ProbingState.NotMe;
+ var st = ProbingState.NotMe;
- switch (inputState) {
+ switch (inputState)
+ {
case InputState.EscASCII:
- if (escCharsetProber == null) {
+ if (escCharsetProber == null)
+ {
escCharsetProber = new EscCharsetProber();
}
st = escCharsetProber.HandleData(buf, offset, len);
- if (st == ProbingState.FoundIt) {
+ if (st == ProbingState.FoundIt)
+ {
done = true;
detectedCharset = escCharsetProber.GetCharsetName();
}
break;
case InputState.Highbyte:
- for (int i = 0; i < PROBERS_NUM; i++) {
- if (charsetProbers[i] != null) {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
+ if (charsetProbers[i] != null)
+ {
st = charsetProbers[i].HandleData(buf, offset, len);
- #if DEBUG
+#if DEBUG
charsetProbers[i].DumpStatus();
- #endif
- if (st == ProbingState.FoundIt) {
+#endif
+ if (st == ProbingState.FoundIt)
+ {
done = true;
detectedCharset = charsetProbers[i].GetCharsetName();
return;
@@ -195,38 +214,47 @@ namespace UniversalDetector.Core
/// </summary>
public virtual void DataEnd()
{
- if (!gotData) {
+ if (!gotData)
+ {
// we haven't got any data yet, return immediately
// caller program sometimes call DataEnd before anything has
// been sent to detector
return;
}
- if (detectedCharset != null) {
+ if (detectedCharset != null)
+ {
done = true;
Report(detectedCharset, 1.0f);
return;
}
- if (inputState == InputState.Highbyte) {
+ if (inputState == InputState.Highbyte)
+ {
float proberConfidence = 0.0f;
float maxProberConfidence = 0.0f;
int maxProber = 0;
- for (int i = 0; i < PROBERS_NUM; i++) {
- if (charsetProbers[i] != null) {
+ for (int i = 0; i < PROBERS_NUM; i++)
+ {
+ if (charsetProbers[i] != null)
+ {
proberConfidence = charsetProbers[i].GetConfidence();
- if (proberConfidence > maxProberConfidence) {
+ if (proberConfidence > maxProberConfidence)
+ {
maxProberConfidence = proberConfidence;
maxProber = i;
}
}
}
- if (maxProberConfidence > MINIMUM_THRESHOLD) {
+ if (maxProberConfidence > MINIMUM_THRESHOLD)
+ {
Report(charsetProbers[maxProber].GetCharsetName(), maxProberConfidence);
}
- } else if (inputState == InputState.PureASCII) {
+ }
+ else if (inputState == InputState.PureASCII)
+ {
Report("ASCII", 1.0f);
}
}
diff --git a/Emby.Server.Implementations/Threading/CommonTimer.cs b/Emby.Server.Implementations/Threading/CommonTimer.cs
index 9451b07f3..5a05da564 100644
--- a/Emby.Server.Implementations/Threading/CommonTimer.cs
+++ b/Emby.Server.Implementations/Threading/CommonTimer.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
using MediaBrowser.Model.Threading;
diff --git a/Emby.Server.Implementations/Threading/TimerFactory.cs b/Emby.Server.Implementations/Threading/TimerFactory.cs
index 4ab6f6fc4..ca50064c7 100644
--- a/Emby.Server.Implementations/Threading/TimerFactory.cs
+++ b/Emby.Server.Implementations/Threading/TimerFactory.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using MediaBrowser.Model.Threading;
namespace Emby.Server.Implementations.Threading
diff --git a/Emby.Server.Implementations/Udp/UdpServer.cs b/Emby.Server.Implementations/Udp/UdpServer.cs
index 7a59d95bf..bd86c6cdc 100644
--- a/Emby.Server.Implementations/Udp/UdpServer.cs
+++ b/Emby.Server.Implementations/Udp/UdpServer.cs
@@ -1,15 +1,15 @@
-using MediaBrowser.Controller;
-using MediaBrowser.Model.ApiClient;
-using Microsoft.Extensions.Logging;
-using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Controller;
+using MediaBrowser.Model.ApiClient;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Net;
+using MediaBrowser.Model.Serialization;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Udp
{
diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs
index d4653281f..6e69ecb56 100644
--- a/Emby.Server.Implementations/Updates/InstallationManager.cs
+++ b/Emby.Server.Implementations/Updates/InstallationManager.cs
@@ -11,13 +11,13 @@ using MediaBrowser.Common.Net;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Common.Progress;
using MediaBrowser.Common.Updates;
+using MediaBrowser.Controller.Configuration;
using MediaBrowser.Model.Cryptography;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.IO;
-using Microsoft.Extensions.Logging;
using MediaBrowser.Model.Serialization;
using MediaBrowser.Model.Updates;
-using MediaBrowser.Controller.Configuration;
+using Microsoft.Extensions.Logging;
namespace Emby.Server.Implementations.Updates
{
@@ -292,9 +292,7 @@ namespace Emby.Server.Implementations.Updates
return true;
}
- Version requiredVersion;
-
- return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && currentServerVersion >= requiredVersion;
+ return Version.TryParse(packageVersionInfo.requiredVersionStr, out var requiredVersion) && currentServerVersion >= requiredVersion;
}
/// <summary>
@@ -390,7 +388,7 @@ namespace Emby.Server.Implementations.Updates
/// <param name="progress">The progress.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">package</exception>
+ /// <exception cref="ArgumentNullException">package</exception>
public async Task InstallPackage(PackageVersionInfo package, bool isPlugin, IProgress<double> progress, CancellationToken cancellationToken)
{
if (package == null)
@@ -601,7 +599,7 @@ namespace Emby.Server.Implementations.Updates
/// Uninstalls a plugin
/// </summary>
/// <param name="plugin">The plugin.</param>
- /// <exception cref="System.ArgumentException"></exception>
+ /// <exception cref="ArgumentException"></exception>
public void UninstallPlugin(IPlugin plugin)
{
plugin.OnUninstalling();
diff --git a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs
index 2543fd372..8788cfc26 100644
--- a/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs
+++ b/Emby.Server.Implementations/UserViews/CollectionFolderImageProvider.cs
@@ -1,23 +1,15 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Controller.Drawing;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Providers;
-using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using System.Threading.Tasks;
using Emby.Server.Implementations.Images;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.Collections;
+using MediaBrowser.Common.Configuration;
+using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Extensions;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.UserViews
diff --git a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
index 95b2e65be..937db3f23 100644
--- a/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
+++ b/Emby.Server.Implementations/UserViews/DynamicImageProvider.cs
@@ -1,21 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using Emby.Server.Implementations.Images;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Images;
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.IO;
namespace Emby.Server.Implementations.UserViews
{
diff --git a/Emby.Server.Implementations/UserViews/FolderImageProvider.cs b/Emby.Server.Implementations/UserViews/FolderImageProvider.cs
index 057d22aec..7629f6039 100644
--- a/Emby.Server.Implementations/UserViews/FolderImageProvider.cs
+++ b/Emby.Server.Implementations/UserViews/FolderImageProvider.cs
@@ -1,18 +1,15 @@
-using MediaBrowser.Common.Configuration;
+using System.Collections.Generic;
+using Emby.Server.Implementations.Images;
+using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Audio;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using Emby.Server.Implementations.Images;
-using MediaBrowser.Model.IO;
using MediaBrowser.Model.Entities;
-using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.IO;
using MediaBrowser.Model.Querying;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Dto;
namespace Emby.Server.Implementations.Photos
{
diff --git a/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
index 0f4e8af3c..308922e6d 100644
--- a/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
+++ b/Emby.Server.Implementations/Xml/XmlReaderSettingsFactory.cs
@@ -1,4 +1,4 @@
-using System.Xml;
+using System.Xml;
using MediaBrowser.Model.Xml;
namespace Emby.Server.Implementations.Xml