diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index 1af7054d95..f8379a8103 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -107,7 +107,7 @@ namespace MediaBrowser.Api return ResultFactory.GetStaticFileResult(Request, path); } - private readonly char[] _dashReplaceChars = { '?', '/' }; + private readonly char[] _dashReplaceChars = { '?', '/', '&' }; private const char SlugChar = '-'; protected MusicArtist GetArtist(string name, ILibraryManager libraryManager) diff --git a/MediaBrowser.Api/ItemRefreshService.cs b/MediaBrowser.Api/ItemRefreshService.cs index 768e9a4a82..34e0726f19 100644 --- a/MediaBrowser.Api/ItemRefreshService.cs +++ b/MediaBrowser.Api/ItemRefreshService.cs @@ -152,7 +152,7 @@ namespace MediaBrowser.Api private MetadataRefreshOptions GetRefreshOptions(BaseRefreshRequest request) { - return new MetadataRefreshOptions + return new MetadataRefreshOptions(new DirectoryService()) { MetadataRefreshMode = request.MetadataRefreshMode, ImageRefreshMode = request.ImageRefreshMode, diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index ed777cafe0..9c8075bfb0 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -13,7 +13,6 @@ using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; -using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.MediaInfo; using System; using System.Collections.Generic; @@ -1545,6 +1544,7 @@ namespace MediaBrowser.Api.Playback state.InputVideoSync = "-1"; state.InputAudioSync = "1"; state.InputContainer = recording.Container; + state.ReadInputAtNativeFramerate = source.ReadAtNativeFramerate; } else if (item is LiveTvChannel) { @@ -1572,6 +1572,7 @@ namespace MediaBrowser.Api.Playback state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders; state.InputBitrate = mediaSource.Bitrate; state.InputFileSize = mediaSource.Size; + state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate; mediaStreams = mediaSource.MediaStreams; } else @@ -1588,6 +1589,7 @@ namespace MediaBrowser.Api.Playback state.InputContainer = mediaSource.Container; state.InputFileSize = mediaSource.Size; state.InputBitrate = mediaSource.Bitrate; + state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate; var video = item as Video; @@ -1687,6 +1689,7 @@ namespace MediaBrowser.Api.Playback state.RemoteHttpHeaders = mediaSource.RequiredHttpHeaders; state.InputBitrate = mediaSource.Bitrate; state.InputFileSize = mediaSource.Size; + state.ReadInputAtNativeFramerate = mediaSource.ReadAtNativeFramerate; AttachMediaStreamInfo(state, mediaSource.MediaStreams, videoRequest, requestedUrl); } diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 832eb3ca87..b6423ed2fc 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -95,15 +95,7 @@ namespace MediaBrowser.Api.Playback public bool DeInterlace { get; set; } - public bool ReadInputAtNativeFramerate - { - get { - - return InputProtocol == MediaProtocol.Rtmp || - string.Equals(InputContainer, "wtv", StringComparison.OrdinalIgnoreCase) || - !string.IsNullOrEmpty(LiveTvStreamId); - } - } + public bool ReadInputAtNativeFramerate { get; set; } public TransportStreamTimestamp InputTimestamp { get; set; } diff --git a/MediaBrowser.Api/Subtitles/SubtitleService.cs b/MediaBrowser.Api/Subtitles/SubtitleService.cs index 6e28823193..1d62374bd3 100644 --- a/MediaBrowser.Api/Subtitles/SubtitleService.cs +++ b/MediaBrowser.Api/Subtitles/SubtitleService.cs @@ -254,7 +254,7 @@ namespace MediaBrowser.Api.Subtitles await _subtitleManager.DownloadSubtitles(video, request.SubtitleId, CancellationToken.None) .ConfigureAwait(false); - await video.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None).ConfigureAwait(false); + await video.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), CancellationToken.None).ConfigureAwait(false); } catch (Exception ex) { diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs index 874d2bfa18..932ce77d3a 100644 --- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs +++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs @@ -375,11 +375,11 @@ namespace MediaBrowser.Api.UserLibrary if (wasPlayed) { - await item.MarkPlayed(user, datePlayed, _userDataRepository).ConfigureAwait(false); + await item.MarkPlayed(user, datePlayed, true).ConfigureAwait(false); } else { - await item.MarkUnplayed(user, _userDataRepository).ConfigureAwait(false); + await item.MarkUnplayed(user).ConfigureAwait(false); } return _userDataRepository.GetUserDataDto(item, user); diff --git a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs index 64a4f355c3..0c2e30923c 100644 --- a/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs +++ b/MediaBrowser.Controller/Channels/ChannelMediaInfo.cs @@ -37,6 +37,8 @@ namespace MediaBrowser.Controller.Channels public string Id { get; set; } + public bool ReadAtNativeFramerate { get; set; } + public ChannelMediaInfo() { RequiredHttpHeaders = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -59,7 +61,8 @@ namespace MediaBrowser.Controller.Channels RequiredHttpHeaders = RequiredHttpHeaders, RunTimeTicks = RunTimeTicks, Name = id, - Id = id + Id = id, + ReadAtNativeFramerate = ReadAtNativeFramerate }; var bitrate = (AudioBitrate ?? 0) + (VideoBitrate ?? 0); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 3193ad091d..82971ac5c7 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -766,7 +766,7 @@ namespace MediaBrowser.Controller.Entities public Task RefreshMetadata(CancellationToken cancellationToken) { - return RefreshMetadata(new MetadataRefreshOptions(), cancellationToken); + return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), cancellationToken); } /// @@ -783,8 +783,6 @@ namespace MediaBrowser.Controller.Entities if (IsFolder || Parent != null) { - options.DirectoryService = options.DirectoryService ?? new DirectoryService(Logger); - try { var files = locationType != LocationType.Remote && locationType != LocationType.Virtual ? @@ -1360,10 +1358,12 @@ namespace MediaBrowser.Controller.Entities /// /// The user. /// The date played. - /// The user manager. + /// if set to true [reset position]. /// Task. /// - public virtual async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager) + public virtual async Task MarkPlayed(User user, + DateTime? datePlayed, + bool resetPosition) { if (user == null) { @@ -1372,7 +1372,7 @@ namespace MediaBrowser.Controller.Entities var key = GetUserDataKey(); - var data = userManager.GetUserData(user.Id, key); + var data = UserDataManager.GetUserData(user.Id, key); if (datePlayed.HasValue) { @@ -1383,20 +1383,24 @@ namespace MediaBrowser.Controller.Entities // Ensure it's at least one data.PlayCount = Math.Max(data.PlayCount, 1); + if (resetPosition) + { + data.PlaybackPositionTicks = 0; + } + data.LastPlayedDate = datePlayed ?? data.LastPlayedDate; data.Played = true; - await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false); + await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false); } /// /// Marks the unplayed. /// /// The user. - /// The user manager. /// Task. /// - public virtual async Task MarkUnplayed(User user, IUserDataManager userManager) + public virtual async Task MarkUnplayed(User user) { if (user == null) { @@ -1405,7 +1409,7 @@ namespace MediaBrowser.Controller.Entities var key = GetUserDataKey(); - var data = userManager.GetUserData(user.Id, key); + var data = UserDataManager.GetUserData(user.Id, key); //I think it is okay to do this here. // if this is only called when a user is manually forcing something to un-played @@ -1415,7 +1419,7 @@ namespace MediaBrowser.Controller.Entities data.LastPlayedDate = null; data.Played = false; - await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false); + await UserDataManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false); } /// diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 4abdde8ddd..d0f2e9dfae 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -319,7 +319,7 @@ namespace MediaBrowser.Controller.Entities public Task ValidateChildren(IProgress progress, CancellationToken cancellationToken) { - return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions()); + return ValidateChildren(progress, cancellationToken, new MetadataRefreshOptions(new DirectoryService())); } /// @@ -332,8 +332,6 @@ namespace MediaBrowser.Controller.Entities /// Task. public Task ValidateChildren(IProgress progress, CancellationToken cancellationToken, MetadataRefreshOptions metadataRefreshOptions, bool recursive = true) { - metadataRefreshOptions.DirectoryService = metadataRefreshOptions.DirectoryService ?? new DirectoryService(Logger); - return ValidateChildrenWithCancellationSupport(progress, cancellationToken, recursive, true, metadataRefreshOptions, metadataRefreshOptions.DirectoryService); } @@ -1141,12 +1139,16 @@ namespace MediaBrowser.Controller.Entities /// /// The user. /// The date played. - /// The user manager. + /// if set to true [reset position]. /// Task. - public override async Task MarkPlayed(User user, DateTime? datePlayed, IUserDataManager userManager) + public override async Task MarkPlayed(User user, + DateTime? datePlayed, + bool resetPosition) { // Sweep through recursively and update status - var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkPlayed(user, datePlayed, userManager)); + var tasks = GetRecursiveChildren(user, true) + .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual) + .Select(c => c.MarkPlayed(user, datePlayed, resetPosition)); await Task.WhenAll(tasks).ConfigureAwait(false); } @@ -1155,12 +1157,13 @@ namespace MediaBrowser.Controller.Entities /// Marks the unplayed. /// /// The user. - /// The user manager. /// Task. - public override async Task MarkUnplayed(User user, IUserDataManager userManager) + public override async Task MarkUnplayed(User user) { // Sweep through recursively and update status - var tasks = GetRecursiveChildren(user, true).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual).Select(c => c.MarkUnplayed(user, userManager)); + var tasks = GetRecursiveChildren(user, true) + .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual) + .Select(c => c.MarkUnplayed(user)); await Task.WhenAll(tasks).ConfigureAwait(false); } @@ -1195,14 +1198,14 @@ namespace MediaBrowser.Controller.Entities public override bool IsPlayed(User user) { - return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual) + return GetRecursiveChildren(user) + .Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual) .All(i => i.IsPlayed(user)); } public override bool IsUnplayed(User user) { - return GetRecursiveChildren(user).Where(i => !i.IsFolder && i.LocationType != LocationType.Virtual) - .All(i => i.IsUnplayed(user)); + return !IsPlayed(user); } public override void FillUserDataDtoValues(UserItemDataDto dto, UserItemData userData, User user) diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index 5d1a213878..0bbd2eeca7 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -179,7 +179,7 @@ namespace MediaBrowser.Controller.Entities Name = newName; - return RefreshMetadata(new MetadataRefreshOptions + return RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()) { ReplaceAllMetadata = true, ImageRefreshMode = ImageRefreshMode.FullRefresh, diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index f4104b29d1..0b22d639e2 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -398,9 +398,8 @@ namespace MediaBrowser.Controller.Entities var currentImagePath = video.GetImagePath(ImageType.Primary); var ownerImagePath = this.GetImagePath(ImageType.Primary); - var newOptions = new MetadataRefreshOptions + var newOptions = new MetadataRefreshOptions(options.DirectoryService) { - DirectoryService = options.DirectoryService, ImageRefreshMode = options.ImageRefreshMode, MetadataRefreshMode = options.MetadataRefreshMode, ReplaceAllMetadata = options.ReplaceAllMetadata diff --git a/MediaBrowser.Controller/IO/FileData.cs b/MediaBrowser.Controller/IO/FileData.cs index 4ee8a810bc..fb0f07331b 100644 --- a/MediaBrowser.Controller/IO/FileData.cs +++ b/MediaBrowser.Controller/IO/FileData.cs @@ -25,7 +25,13 @@ namespace MediaBrowser.Controller.IO /// if set to true [resolve shortcuts]. /// Dictionary{System.StringFileSystemInfo}. /// path - public static Dictionary GetFilteredFileSystemEntries(IDirectoryService directoryService, string path, IFileSystem fileSystem, ILogger logger, ItemResolveArgs args, int flattenFolderDepth = 0, bool resolveShortcuts = true) + public static Dictionary GetFilteredFileSystemEntries(IDirectoryService directoryService, + string path, + IFileSystem fileSystem, + ILogger logger, + ItemResolveArgs args, + int flattenFolderDepth = 0, + bool resolveShortcuts = true) { if (string.IsNullOrEmpty(path)) { @@ -36,21 +42,13 @@ namespace MediaBrowser.Controller.IO throw new ArgumentNullException("args"); } - var entries = directoryService.GetFileSystemEntries(path); - if (!resolveShortcuts && flattenFolderDepth == 0) { - // Seeing dupes on some users file system for some reason - var dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); - - foreach (var info in entries) - { - dictionary[info.FullName] = info; - } - - return dictionary; + return directoryService.GetFileSystemDictionary(path); } + var entries = directoryService.GetFileSystemEntries(path); + var dict = new Dictionary(StringComparer.OrdinalIgnoreCase); foreach (var entry in entries) diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index c85a8f3354..314efcce52 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -213,38 +213,38 @@ namespace MediaBrowser.Controller.Library return false; } - // It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3 - foreach (var fileSystemInfo in directoryService.GetFileSystemEntries(path)) - { - var attributes = fileSystemInfo.Attributes; + //// It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3 + //foreach (var fileSystemInfo in directoryService.GetFileSystemEntries(path)) + //{ + // var attributes = fileSystemInfo.Attributes; - if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden) - { - continue; - } + // if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden) + // { + // continue; + // } - // Can't enforce this because files saved by Bitcasa are always marked System - //if ((attributes & FileAttributes.System) == FileAttributes.System) - //{ - // continue; - //} + // // Can't enforce this because files saved by Bitcasa are always marked System + // //if ((attributes & FileAttributes.System) == FileAttributes.System) + // //{ + // // continue; + // //} - if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) - { - //if (IsBadFolder(fileSystemInfo.Name)) - //{ - // return false; - //} - } - else - { - if (EntityResolutionHelper.IsAudioFile(fileSystemInfo.FullName) && - !string.Equals(fileSystem.GetFileNameWithoutExtension(fileSystemInfo), BaseItem.ThemeSongFilename)) - { - return false; - } - } - } + // if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) + // { + // //if (IsBadFolder(fileSystemInfo.Name)) + // //{ + // // return false; + // //} + // } + // else + // { + // if (EntityResolutionHelper.IsAudioFile(fileSystemInfo.FullName) && + // !string.Equals(fileSystem.GetFileNameWithoutExtension(fileSystemInfo), BaseItem.ThemeSongFilename)) + // { + // return false; + // } + // } + //} return true; } diff --git a/MediaBrowser.Controller/Providers/DirectoryService.cs b/MediaBrowser.Controller/Providers/DirectoryService.cs index 6f70df4352..4fdc08da0c 100644 --- a/MediaBrowser.Controller/Providers/DirectoryService.cs +++ b/MediaBrowser.Controller/Providers/DirectoryService.cs @@ -9,35 +9,47 @@ namespace MediaBrowser.Controller.Providers { public interface IDirectoryService { - List GetFileSystemEntries(string path); + IEnumerable GetFileSystemEntries(string path); IEnumerable GetFiles(string path); IEnumerable GetFiles(string path, bool clearCache); FileSystemInfo GetFile(string path); + Dictionary GetFileSystemDictionary(string path); } public class DirectoryService : IDirectoryService { private readonly ILogger _logger; - private readonly ConcurrentDictionary> _cache = new ConcurrentDictionary>(StringComparer.OrdinalIgnoreCase); + private readonly ConcurrentDictionary> _cache = + new ConcurrentDictionary>(StringComparer.OrdinalIgnoreCase); public DirectoryService(ILogger logger) { _logger = logger; } - public List GetFileSystemEntries(string path) + public DirectoryService() + : this(new NullLogger()) + { + } + + public IEnumerable GetFileSystemEntries(string path) { return GetFileSystemEntries(path, false); } - private List GetFileSystemEntries(string path, bool clearCache) + public Dictionary GetFileSystemDictionary(string path) { - List entries; + return GetFileSystemDictionary(path, false); + } + + private Dictionary GetFileSystemDictionary(string path, bool clearCache) + { + Dictionary entries; if (clearCache) { - List removed; + Dictionary removed; _cache.TryRemove(path, out removed); } @@ -46,21 +58,36 @@ namespace MediaBrowser.Controller.Providers { //_logger.Debug("Getting files for " + path); + entries = new Dictionary(StringComparer.OrdinalIgnoreCase); + try { - entries = new DirectoryInfo(path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly).ToList(); + var list = new DirectoryInfo(path) + .EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly); + + // Seeing dupes on some users file system for some reason + foreach (var item in list) + { + entries[item.FullName] = item; + } } catch (DirectoryNotFoundException) { - entries = new List(); } + //var group = entries.ToLookup(i => Path.GetDirectoryName(i.FullName)).ToList(); + _cache.TryAdd(path, entries); } return entries; } + private IEnumerable GetFileSystemEntries(string path, bool clearCache) + { + return GetFileSystemDictionary(path, clearCache).Values; + } + public IEnumerable GetFiles(string path) { return GetFiles(path, false); @@ -74,9 +101,13 @@ namespace MediaBrowser.Controller.Providers public FileSystemInfo GetFile(string path) { var directory = Path.GetDirectoryName(path); - var filename = Path.GetFileName(path); - return GetFiles(directory).FirstOrDefault(i => string.Equals(i.Name, filename, StringComparison.OrdinalIgnoreCase)); + var dict = GetFileSystemDictionary(directory, false); + + FileSystemInfo entry; + dict.TryGetValue(path, out entry); + + return entry; } } } diff --git a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs index 75aad4063c..61bc3b87ba 100644 --- a/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/ILocalMetadataProvider.cs @@ -17,9 +17,12 @@ namespace MediaBrowser.Controller.Providers /// Gets the metadata. /// /// The information. + /// The directory service. /// The cancellation token. /// Task{MetadataResult{`0}}. - Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken); + Task> GetMetadata(ItemInfo info, + IDirectoryService directoryService, + CancellationToken cancellationToken); } public class ItemInfo diff --git a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs index e7dcd03b5b..a9e1555098 100644 --- a/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs +++ b/MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs @@ -1,5 +1,4 @@ using MediaBrowser.Model.Entities; -using System; using System.Collections.Generic; using System.Linq; @@ -17,18 +16,24 @@ namespace MediaBrowser.Controller.Providers public bool ForceSave { get; set; } public MetadataRefreshOptions() + : this(new DirectoryService()) + { + } + + public MetadataRefreshOptions(IDirectoryService directoryService) + : base(directoryService) { MetadataRefreshMode = MetadataRefreshMode.Default; } - public MetadataRefreshOptions(MetadataRefreshOptions copy) + public MetadataRefreshOptions( MetadataRefreshOptions copy) + : base(copy.DirectoryService) { MetadataRefreshMode = copy.MetadataRefreshMode; ForceSave = copy.ForceSave; ReplaceAllMetadata = copy.ReplaceAllMetadata; ImageRefreshMode = copy.ImageRefreshMode; - DirectoryService = copy.DirectoryService; ReplaceAllImages = copy.ReplaceAllImages; ReplaceImages = copy.ReplaceImages.ToList(); } @@ -37,15 +42,16 @@ namespace MediaBrowser.Controller.Providers public class ImageRefreshOptions { public ImageRefreshMode ImageRefreshMode { get; set; } - public IDirectoryService DirectoryService { get; set; } + public IDirectoryService DirectoryService { get; private set; } public bool ReplaceAllImages { get; set; } public List ReplaceImages { get; set; } - public ImageRefreshOptions() + public ImageRefreshOptions(IDirectoryService directoryService) { ImageRefreshMode = ImageRefreshMode.Default; + DirectoryService = directoryService; ReplaceImages = new List(); } diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index 62f1febe7d..f4afd3c246 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -789,11 +789,9 @@ namespace MediaBrowser.Dlna.Didl } } - var imageLimit = _profile.DidlAlbumArtLimit ?? 100; - AddImageResElement(item, element, 160, 160, playbackPercentage, "jpg", "JPEG_TN"); - if (imageLimit > 1) + if (!_profile.EnableSingleAlbumArtLimit) { AddImageResElement(item, element, 4096, 4096, playbackPercentage, "jpg", "JPEG_LRG"); AddImageResElement(item, element, 1024, 768, playbackPercentage, "jpg", "JPEG_MED"); diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs index 86d108ac8d..6f175ccd6c 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2010Profile.cs @@ -47,7 +47,7 @@ namespace MediaBrowser.Dlna.Profiles ProtocolInfo = "http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000"; - DidlAlbumArtLimit = 1; + EnableSingleAlbumArtLimit = true; TranscodingProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs index 7a5adf25fe..32cf8b5542 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2011Profile.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; SonyAggregationFlags = "10"; - DidlAlbumArtLimit = 1; + EnableSingleAlbumArtLimit = true; TranscodingProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs index b5443e27b9..85643bace6 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2012Profile.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; SonyAggregationFlags = "10"; - DidlAlbumArtLimit = 1; + EnableSingleAlbumArtLimit = true; TranscodingProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs index 9ae346fcf5..0f7151a840 100644 --- a/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyBravia2013Profile.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Dlna.Profiles Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; SonyAggregationFlags = "10"; - DidlAlbumArtLimit = 1; + EnableSingleAlbumArtLimit = true; TranscodingProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs index a2152d8961..e92b0acfef 100644 --- a/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs +++ b/MediaBrowser.Dlna/Profiles/SonyPs3Profile.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Dlna.Profiles SonyAggregationFlags = "10"; XDlnaDoc = "DMS-1.50"; - DidlAlbumArtLimit = 1; + EnableSingleAlbumArtLimit = true; DirectPlayProfiles = new[] { diff --git a/MediaBrowser.Dlna/Profiles/Xml/Android.xml b/MediaBrowser.Dlna/Profiles/Xml/Android.xml index 0b4f9f7b18..34cc3b0929 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Android.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Android.xml @@ -10,7 +10,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Default.xml b/MediaBrowser.Dlna/Profiles/Xml/Default.xml index 50ae2a2ed2..1f16d89db5 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Default.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Default.xml @@ -10,7 +10,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml index ad36f78b9b..27cad32d75 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Denon AVR.xml @@ -15,7 +15,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml index aec9e2494a..603ec554ed 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/DirecTV HD-DVR.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml index 8546ba61c8..c8eff5b1d1 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Dish Hopper-Joey.xml @@ -17,7 +17,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml index 000a26ce0a..e625555bde 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/LG Smart TV.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml index d1a2b69e89..9cd8a324f8 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Linksys DMA2100.xml @@ -14,7 +14,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml index c14008b4f1..81ecfdab14 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/MediaMonkey.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false false - + false Audio JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml index bc3e94136b..7e6cf76a39 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Panasonic Viera.xml @@ -17,7 +17,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 @@ -72,7 +72,11 @@ - + + + + + diff --git a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml index 0f39dbfa7b..62d7a85d69 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Popcorn Hour.xml @@ -10,7 +10,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml index 4dc50994e1..c903cdb14f 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Samsung Smart TV.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false true - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml index d80de3043d..1d0ea66bbc 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player 2013.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml index d7d1936507..2a883ac67c 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Blu-ray Player.xml @@ -18,7 +18,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml index fa241d16a0..d9727ecd08 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2010).xml @@ -17,7 +17,7 @@ http://www.microsoft.com/ false false - 1 + true Audio,Photo,Video JPEG_TN 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml index 9055365be3..1e3b48452e 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2011).xml @@ -17,7 +17,7 @@ http://www.microsoft.com/ false false - 1 + true Audio,Photo,Video JPEG_TN 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml index 1abf97cbc6..509f533b97 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2012).xml @@ -17,7 +17,7 @@ http://www.microsoft.com/ false false - 1 + true Audio,Photo,Video JPEG_TN 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml index 6bc408a6b1..35e645422d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony Bravia (2013).xml @@ -17,7 +17,7 @@ http://www.microsoft.com/ false false - 1 + true Audio,Photo,Video JPEG_TN 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml index 2bbbd68fb8..939f953b9d 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Sony PlayStation 3.xml @@ -17,7 +17,7 @@ http://mediabrowser.tv/ false false - 1 + true Audio,Photo,Video JPEG_TN 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml index ab945c619a..e1e02c87b7 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/WDTV Live.xml @@ -17,7 +17,7 @@ http://mediabrowser.tv/ true false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml b/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml index e06c6eca05..824ea3ca97 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Windows 8 RT.xml @@ -14,7 +14,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml b/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml index e6b591d51d..b878e83432 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Windows Phone.xml @@ -10,7 +10,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml index cf21c54347..17100466f8 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox 360.xml @@ -17,7 +17,7 @@ http://www.microsoft.com/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml index 90a4ef55d4..7c791f13e8 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/Xbox One.xml @@ -15,7 +15,7 @@ http://mediabrowser.tv/ false false - + false Audio,Photo,Video JPEG_SM 480 diff --git a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml index b6fec2bada..62830a54b9 100644 --- a/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml +++ b/MediaBrowser.Dlna/Profiles/Xml/foobar2000.xml @@ -16,7 +16,7 @@ http://mediabrowser.tv/ false false - + false Audio JPEG_SM 480 diff --git a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs index 25778d036b..5eb067dcd2 100644 --- a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs @@ -1,7 +1,6 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; using System; using System.IO; using System.Threading; @@ -14,11 +13,13 @@ namespace MediaBrowser.LocalMetadata { protected IFileSystem FileSystem; - public async Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken) + public async Task> GetMetadata(ItemInfo info, + IDirectoryService directoryService, + CancellationToken cancellationToken) { var result = new LocalMetadataResult(); - var file = GetXmlFile(info, new DirectoryService(new NullLogger())); + var file = GetXmlFile(info, directoryService); if (file == null) { diff --git a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs index cd9b78201e..31329e6d7d 100644 --- a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs +++ b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs @@ -33,7 +33,8 @@ namespace MediaBrowser.LocalMetadata.Images { var parentPath = Path.GetDirectoryName(item.Path); - var parentPathFiles = directoryService.GetFileSystemEntries(parentPath); + var parentPathFiles = directoryService.GetFileSystemEntries(parentPath) + .ToList(); var nameWithoutExtension = _fileSystem.GetFileNameWithoutExtension(item.Path); diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs index 66f5936158..1fb553010e 100644 --- a/MediaBrowser.Model/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Model.Dlna public bool IgnoreTranscodeByteRangeRequests { get; set; } public bool EnableAlbumArtInDidl { get; set; } - public int? DidlAlbumArtLimit { get; set; } + public bool EnableSingleAlbumArtLimit { get; set; } public string SupportedMediaTypes { get; set; } diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs index 368f20181a..068443238b 100644 --- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs +++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs @@ -21,6 +21,7 @@ namespace MediaBrowser.Model.Dto public string Name { get; set; } public long? RunTimeTicks { get; set; } + public bool ReadAtNativeFramerate { get; set; } public VideoType? VideoType { get; set; } diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 2fdbe67404..1f46ee488e 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -89,11 +89,6 @@ namespace MediaBrowser.Providers.Manager public async Task RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) { - if (refreshOptions.DirectoryService == null) - { - refreshOptions.DirectoryService = new DirectoryService(Logger); - } - var itemOfType = (TItemType)item; var config = ProviderManager.GetMetadataOptions(item); @@ -324,7 +319,12 @@ namespace MediaBrowser.Providers.Manager return item is TItemType; } - protected virtual async Task RefreshWithProviders(TItemType item, TIdType id, MetadataRefreshOptions options, List providers, ItemImageProvider imageService, CancellationToken cancellationToken) + protected virtual async Task RefreshWithProviders(TItemType item, + TIdType id, + MetadataRefreshOptions options, + List providers, + ItemImageProvider imageService, + CancellationToken cancellationToken) { var refreshResult = new RefreshResult { @@ -369,7 +369,7 @@ namespace MediaBrowser.Providers.Manager try { - var localItem = await provider.GetMetadata(itemInfo, cancellationToken).ConfigureAwait(false); + var localItem = await provider.GetMetadata(itemInfo, options.DirectoryService, cancellationToken).ConfigureAwait(false); if (localItem.HasMetadata) { diff --git a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs index 1d47ee9b92..c9d1424dc8 100644 --- a/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs +++ b/MediaBrowser.Providers/Movies/FanartMovieImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Configuration; +using System.Net; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; @@ -7,6 +8,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Net; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Music; @@ -88,7 +90,18 @@ namespace MediaBrowser.Providers.Movies if (!string.IsNullOrEmpty(movieId)) { - await EnsureMovieJson(movieId, cancellationToken).ConfigureAwait(false); + // Bad id entered + try + { + await EnsureMovieJson(movieId, cancellationToken).ConfigureAwait(false); + } + catch (HttpException ex) + { + if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound) + { + throw; + } + } var path = GetFanartJsonPath(movieId); diff --git a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs index 179ab425b6..9a16ae24d9 100644 --- a/MediaBrowser.Providers/Subtitles/SubtitleManager.cs +++ b/MediaBrowser.Providers/Subtitles/SubtitleManager.cs @@ -252,7 +252,7 @@ namespace MediaBrowser.Providers.Subtitles _monitor.ReportFileSystemChangeComplete(path, false); } - return _libraryManager.GetItemById(itemId).RefreshMetadata(new MetadataRefreshOptions + return _libraryManager.GetItemById(itemId).RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()) { ImageRefreshMode = ImageRefreshMode.ValidationOnly, MetadataRefreshMode = MetadataRefreshMode.ValidationOnly diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs index 47c73abbbe..05244af747 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using System.Net; +using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; @@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Net; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Music; @@ -72,7 +74,18 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrEmpty(id) && season.IndexNumber.HasValue) { - await FanartSeriesProvider.Current.EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false); + // Bad id entered + try + { + await FanartSeriesProvider.Current.EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false); + } + catch (HttpException ex) + { + if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound) + { + throw; + } + } var path = FanartSeriesProvider.Current.GetFanartJsonPath(id); diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs index 56945106ad..2025f2fa1c 100644 --- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Configuration; +using System.Net; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; @@ -7,6 +8,7 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Net; using MediaBrowser.Model.Providers; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Music; @@ -81,7 +83,18 @@ namespace MediaBrowser.Providers.TV if (!string.IsNullOrEmpty(id)) { - await EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false); + // Bad id entered + try + { + await EnsureSeriesJson(id, cancellationToken).ConfigureAwait(false); + } + catch (HttpException ex) + { + if (!ex.StatusCode.HasValue || ex.StatusCode.Value != HttpStatusCode.NotFound) + { + throw; + } + } var path = GetFanartJsonPath(id); diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index 87e2f6c9cb..21d41ca00c 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -122,11 +122,13 @@ namespace MediaBrowser.Providers.TV { foreach (var series in group) { - await series.RefreshMetadata(new MetadataRefreshOptions + var directoryService = new DirectoryService(); + + await series.RefreshMetadata(new MetadataRefreshOptions(directoryService) { }, cancellationToken).ConfigureAwait(false); - await series.ValidateChildren(new Progress(), cancellationToken, new MetadataRefreshOptions(), true) + await series.ValidateChildren(new Progress(), cancellationToken, new MetadataRefreshOptions(directoryService), true) .ConfigureAwait(false); } } @@ -469,7 +471,9 @@ namespace MediaBrowser.Providers.TV /// The season number. /// The cancellation token. /// Task{Season}. - private async Task AddSeason(Series series, int seasonNumber, CancellationToken cancellationToken) + private async Task AddSeason(Series series, + int seasonNumber, + CancellationToken cancellationToken) { _logger.Info("Creating Season {0} entry for {1}", seasonNumber, series.Name); diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs index fe4b16645c..e346d6d01b 100644 --- a/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs +++ b/MediaBrowser.Server.Implementations/Collections/CollectionManager.cs @@ -77,7 +77,7 @@ namespace MediaBrowser.Server.Implementations.Collections await parentFolder.AddChild(collection, CancellationToken.None).ConfigureAwait(false); - await collection.RefreshMetadata(new MetadataRefreshOptions(), CancellationToken.None) + await collection.RefreshMetadata(new MetadataRefreshOptions(new DirectoryService()), CancellationToken.None) .ConfigureAwait(false); if (options.ItemIdList.Count > 0) diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 13ea7fb447..91e2b3697d 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -530,7 +530,9 @@ namespace MediaBrowser.Server.Implementations.Library return item; } - public BaseItem ResolvePath(FileSystemInfo fileInfo, Folder parent = null, string collectionType = null) + public BaseItem ResolvePath(FileSystemInfo fileInfo, + Folder parent = null, + string collectionType = null) { return ResolvePath(fileInfo, new DirectoryService(_logger), parent, collectionType); } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json index f546cf531d..aa4929300c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json index f8651141a5..202dda150a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json index ae8b242ac1..761046733a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json index b38b947236..c8158937a4 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index 1d390858c9..84ac409021 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Kindersicherung", "HeaderInvitationSent": "Einladung verschickt", "MessageInvitationSentToUser": "Eine E-Mail mit der Einladung zum Sharing ist an {0} geschickt worden.", - "MessageInvitationSentToNewUser": "Eine E-Mail mit der Einladung zur Anmeldung am Media Browser ist an {0} geschickt worden." + "MessageInvitationSentToNewUser": "Eine E-Mail mit der Einladung zur Anmeldung am Media Browser ist an {0} geschickt worden.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json index 370df6f094..7e93cef9d6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json index 1197db0f5c..17bfb9502c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json index d66d499861..b25500b064 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json index 51b199e49a..d7a27cbf1b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json index 1a4dfcf5d7..c007c55dde 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json @@ -600,13 +600,15 @@ "DeviceLastUsedByUserName": "\u00daltimo usado por {0}", "HeaderDeleteDevice": "Eliminar Dispositivo", "DeleteDeviceConfirmation": "\u00bfEsta seguro de querer eliminar este dispositivo? Volver\u00e1 a aparecer la siguiente vez que un usuario inicie sesi\u00f3n en \u00e9l.", - "LabelEnableCameraUploadFor": "Habilitar subida desde la c\u00e1mara para:", + "LabelEnableCameraUploadFor": "Habilitar subir desde la c\u00e1mara para:", "HeaderSelectUploadPath": "Seleccionar ruta de subida", - "LabelEnableCameraUploadForHelp": "La subida ocurrir\u00e1 autom\u00e1ticamente en segundo plano al iniciar sesi\u00f3n en Media Browser.", + "LabelEnableCameraUploadForHelp": "Las subidas ocurrir\u00e1n autom\u00e1ticamente en segundo plano al iniciar sesi\u00f3n en Media Browser.", "ErrorMessageStartHourGreaterThanEnd": "El horario de fin debe ser mayor al de comienzo.", "ButtonLibraryAccess": "Acceso a biblioteca", "ButtonParentalControl": "Control parental", "HeaderInvitationSent": "Invitaci\u00f3n Enviada", "MessageInvitationSentToUser": "Se ha enviado un correo electr\u00f3nico a {0}, invit\u00e1ndolo a aceptar tu invitaci\u00f3n para compartir.", - "MessageInvitationSentToNewUser": "Se ha enviado un correo electr\u00f3nico a {0} invit\u00e1ndolo a registrarse con Media Browser." + "MessageInvitationSentToNewUser": "Se ha enviado un correo electr\u00f3nico a {0} invit\u00e1ndolo a registrarse con Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 6b4543d93a..342a3df832 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -24,7 +24,7 @@ "UninstallPluginConfirmation": "\u00cates-vous s\u00fbr de vouloir d\u00e9sinstaller {0}?", "NoPluginConfigurationMessage": "Ce plugin n'a rien \u00e0 configurer.", "NoPluginsInstalledMessage": "Vous n'avez aucun plugin install\u00e9.", - "BrowsePluginCatalogMessage": "Explorer notre catalogue de Plugins disponibles.", + "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "MessageKeyEmailedTo": "Cl\u00e9 envoy\u00e9e par courriel \u00e0 {0}", "MessageKeysLinked": "Cl\u00e9s associ\u00e9es.", "HeaderConfirmation": "Confirmation", @@ -573,7 +573,7 @@ "LabelShortRatingDescription": "Evaluation courte:", "OptionIRecommendThisItem": "Je recommande cet article", "WebClientTourContent": "Voir les medias ajout\u00e9s r\u00e9cemment, les prochains \u00e9pisodes et bien plus. Les cercles verts indiquent le nombre d'items que vous n'avez pas vu.", - "WebClientTourMovies": "Lire les films, bandes-annonces et plus depuis n'importe quel p\u00e9riph\u00e9rique depuis un navigateur web", + "WebClientTourMovies": "Lire les films, bandes-annonces et plus depuis n'importe quel p\u00e9riph\u00e9rique avec un navigateur Web", "WebClientTourMouseOver": "Laisser la souris au dessus des posters pour un acc\u00e8s rapide aux informations essentiels", "WebClientTourTapHold": "Maintenir cliqu\u00e9 ou faire un clic droit sur n'importe quel poster pour le menu contextuel", "WebClientTourMetadataManager": "Cliquer sur modifier pour ouvrir l'\u00e9diteur de m\u00e9dadonn\u00e9es", @@ -608,5 +608,7 @@ "ButtonParentalControl": "Contr\u00f4le parental", "HeaderInvitationSent": "Invitation envoy\u00e9", "MessageInvitationSentToUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 accepter votre invitation de partage.", - "MessageInvitationSentToNewUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 s'inscrire sur Media Browser." + "MessageInvitationSentToNewUser": "Un mail a \u00e9t\u00e9 envoy\u00e9 \u00e0 {0} pour les inviter \u00e0 s'inscrire sur Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json index 7974df3400..b16493d4e7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json index c0ea87ed47..d272fb96eb 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json index 13c37aa9c2..42dc851864 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 21c8ba8898..ff00fae63e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -615,6 +615,8 @@ "ButtonLibraryAccess": "Library access", "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", - "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index 74e6c479e3..b2880874ee 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "\u041c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0443", "HeaderInvitationSent": "\u0428\u0430\u049b\u044b\u0440\u0443 \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456", "MessageInvitationSentToUser": "\u041e\u043b\u0430\u0440\u0493\u0430 \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u0448\u0430\u049b\u044b\u0440\u0443\u044b\u04a3\u044b\u0437\u0434\u044b \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.", - "MessageInvitationSentToNewUser": "\u041e\u043b\u0430\u0440\u0493\u0430 Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456." + "MessageInvitationSentToNewUser": "\u041e\u043b\u0430\u0440\u0493\u0430 Media Browser \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0436\u0430\u0441\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u0441\u044b\u043c\u0435\u043d, \u044d-\u043f\u043e\u0448\u0442\u0430 {0} \u0430\u0440\u043d\u0430\u043f \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0434\u0456.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json index 54196ba4a6..6409e07f49 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index 4c09b34916..f09cf7dfc4 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -436,7 +436,7 @@ "HeaderPluginInstallation": "Programtillegg installasjon", "MessageAlreadyInstalled": "Denne versjonen er allerede installert.", "ValueReviewCount": "{0} Anmeldelser", - "MessageYouHaveVersionInstalled": "You currently have version {0} installed.", + "MessageYouHaveVersionInstalled": "Du har for \u00f8yeblikket versjon {0} installert", "MessageTrialExpired": "Pr\u00f8veperioden for denne funksjonen er utl\u00f8pt", "MessageTrialWillExpireIn": "Pr\u00f8veperioden for denne funksjonen utl\u00f8per om {0} dag (er)", "MessageInstallPluginFromApp": "Dette programtillegget m\u00e5 installeres direkte i appen du har tenkt \u00e5 bruke den i.", @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json index 5d057cbfaf..329a5845a6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Ouderlijk toezicht", "HeaderInvitationSent": "Uitnodiging verzonden", "MessageInvitationSentToUser": "Een email is verzonden naar {0} om je uitnodiging om media te delen te accepteren.", - "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} om je uitnodiging aan te melden bij Media Browser" + "MessageInvitationSentToNewUser": "Een email is verzonden naar {0} om je uitnodiging aan te melden bij Media Browser", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json index 13c1238487..b46ed9f5fe 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 34732239d7..3c560cd6bc 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -74,8 +74,8 @@ "ButtonMarkTheseRead": "Marcar como lida", "ButtonClose": "Fechar", "LabelAllPlaysSentToPlayer": "Todas as reprodu\u00e7\u00f5es ser\u00e3o enviadas para o reprodutor selecionado.", - "MessageInvalidUser": "Invalid username or password. Please try again.", - "HeaderLoginFailure": "Login Failure", + "MessageInvalidUser": "Nome de usu\u00e1rio ou senha inv\u00e1lidos. Por favor, tente novamente.", + "HeaderLoginFailure": "Falha no Login", "HeaderAllRecordings": "Todas as Grava\u00e7\u00f5es", "RecommendationBecauseYouLike": "Porque voc\u00ea gosta de {0}", "RecommendationBecauseYouWatched": "Porque voc\u00ea assistiu {0}", @@ -604,9 +604,11 @@ "HeaderSelectUploadPath": "Selecione o caminho para carga", "LabelEnableCameraUploadForHelp": "Cargas ser\u00e3o executadas automaticamente em retaguarda quando logar no Media Browser.", "ErrorMessageStartHourGreaterThanEnd": "O tempo final deve ser maior que o tempo inicial.", - "ButtonLibraryAccess": "Library access", - "ButtonParentalControl": "Parental control", - "HeaderInvitationSent": "Invitation Sent", - "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "ButtonLibraryAccess": "Acesso \u00e0 biblioteca", + "ButtonParentalControl": "Controle Parental", + "HeaderInvitationSent": "Convite Enviado", + "MessageInvitationSentToUser": "Um email foi enviado para {0}, convidando para aceitar seu convite de compartilhamento.", + "MessageInvitationSentToNewUser": "Um email foi enviado para {0}, convidando para inscrever-se no Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json index 83d53c60c8..5fae1a637a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index bb897b9e2a..141e605f7f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c", "HeaderInvitationSent": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e", "MessageInvitationSentToUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e.", - "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Media Browser." + "MessageInvitationSentToNewUser": "\u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u044b\u043b\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043a {0}, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044f \u0438\u043c \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json index 8aa94d6d88..6ff993fc38 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json index d8362a10c6..50426fe66a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json index ff9cc36c0e..681bd2f83e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json index fec3430edc..ad630f2c97 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json index 7fefbbf6cb..3f1d56c345 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json @@ -608,5 +608,7 @@ "ButtonParentalControl": "Parental control", "HeaderInvitationSent": "Invitation Sent", "MessageInvitationSentToUser": "An email has been sent to {0}, inviting them to accept your sharing invitation.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser." + "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Media Browser.", + "HeaderConnectionFailure": "Connection Failure", + "MessageUnableToConnectToServer": "We're unable to connect to the selected right now. Please try again later." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 283eb27737..d0e525b1e9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ca.json b/MediaBrowser.Server.Implementations/Localization/Server/ca.json index 873041453c..fda37bbf6e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/cs.json b/MediaBrowser.Server.Implementations/Localization/Server/cs.json index 51276d374c..e0ff02e18c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/da.json b/MediaBrowser.Server.Implementations/Localization/Server/da.json index 70c2797a86..d06b968e35 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/de.json b/MediaBrowser.Server.Implementations/Localization/Server/de.json index 79d48233b3..841057e7c7 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "Keine Trailer gefunden. Installiere das Trailer Channel Plugin, um eine Bibliothek aus Trailern vom Internet zu importieren.", "HeaderNewUsers": "Neue Benutzer", "ButtonSignUp": "Anmeldung", - "ButtonForgotPassword": "Passwort vergessen?" + "ButtonForgotPassword": "Passwort vergessen?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/el.json b/MediaBrowser.Server.Implementations/Localization/Server/el.json index 7761da2b52..09a45a39ce 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json index 8bfd198e48..3442778c46 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json index cdf2b1993c..0291241042 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es.json b/MediaBrowser.Server.Implementations/Localization/Server/es.json index 4f8b09138a..558520011e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json index 3e49f42dcd..79100f98d6 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json @@ -256,7 +256,7 @@ "LabelAllowServerAutoRestartHelp": "El servidor reiniciar\u00e1 \u00fanicamente durante periodos ociosos, cuando no haya usuarios activos.", "LabelEnableDebugLogging": "Habilitar bit\u00e1coras de depuraci\u00f3n", "LabelRunServerAtStartup": "Ejecutar el servidor al iniciar", - "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono den el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.", + "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 el icono en el \u00e1rea de notificaci\u00f3n cuando windows arranque. Para iniciar el servicio de windows, desmarque esta opci\u00f3n y ejecute el servicio desde el panel de control de windows. Por favor tome en cuenta que no puede ejecutar ambos simult\u00e1neamente, por lo que deber\u00e1 finalizar el icono del \u00e1rea de notificaci\u00f3n antes de iniciar el servicio.", "ButtonSelectDirectory": "Seleccionar Carpeta", "LabelCustomPaths": "Especificar rutas personalizadas cuando se desee. Deje los campos vac\u00edos para usar los valores predeterminados.", "LabelCachePath": "Ruta para el Cach\u00e9:", @@ -1203,18 +1203,18 @@ "LabelDateAddedBehaviorHelp": "Si se encuentra un valor en los metadados siempre ser\u00e1 empleado antes que cualquiera de estas opciones.", "LabelNumberTrailerToPlay": "N\u00famero de avances a reproducir:", "TitleDevices": "Dispositivos", - "TabCameraUpload": "Subida de C\u00e1mara", + "TabCameraUpload": "Subir desde la C\u00e1mara", "TabDevices": "Dispositivos", "HeaderCameraUploadHelp": "Suba a Media Broswer fotos y videos tomados desde sus dispositivos m\u00f3viles de forma autom\u00e1tica.", - "MessageNoDevicesSupportCameraUpload": "Actualmente no cuenta con ning\u00fan dispositivo que soporte subida desde c\u00e1mara.", - "LabelCameraUploadPath": "Ruta de subida desde c\u00e1mara:", + "MessageNoDevicesSupportCameraUpload": "Actualmente no cuenta con ning\u00fan dispositivo que soporte subir desde la c\u00e1mara.", + "LabelCameraUploadPath": "Ruta para subir desde la c\u00e1mara:", "LabelCameraUploadPathHelp": "Seleccione una ruta personalizada. si lo desea. Si no se especifica, se emplear\u00e1 una carpeta por omisi\u00f3n.", "LabelCreateCameraUploadSubfolder": "Crear una subcarpeta para cada dispositivo", "LabelCreateCameraUploadSubfolderHelp": "Se pueden especificar carpetas espec\u00edficas para un dispositivo haciendo clic en \u00e9l desde la p\u00e1gina de Dispositivos.", "LabelCustomDeviceDisplayName": "Nombre a Desplegar:", "LabelCustomDeviceDisplayNameHelp": "Proporcione un nombre a desplegar personalizado o d\u00e9jelo vac\u00edo para usar el nombre reportado por el dispositivo.", "HeaderInviteUser": "Invitar Usuario", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Media Browser website, or their email address.", + "LabelConnectGuestUserNameHelp": "Este es el nombre de usuario que su amigo utiliza para iniciar sesi\u00f3n en el sitio web de Media Browser, o su cuenta de correo electr\u00f3nico.", "HeaderInviteUserHelp": "Compartir sus medios con amigos es m\u00e1s f\u00e1cil que nunca con Media Browser Connect.", "ButtonSendInvitation": "Enviar invitaci\u00f3n", "HeaderGuests": "Invitados", @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No se encontraron avances. Instalar el complemento \"Canal trailers\" para importar una biblioteca de avances de internet.", "HeaderNewUsers": "Nuevos Usuarios", "ButtonSignUp": "Registrarse", - "ButtonForgotPassword": "\u00bfOlvidaste la contrase\u00f1a?" + "ButtonForgotPassword": "\u00bfOlvidaste la contrase\u00f1a?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index aa200b6f30..baca030600 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -39,7 +39,7 @@ "HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia", "ButtonAddMediaFolder": "Ajouter un r\u00e9pertoire de m\u00e9dia", "LabelFolderType": "Type de r\u00e9pertoire:", - "MediaFolderHelpPluginRequired": "* Requiert l'utilisation d'un plug-in, Ex: GameBrowser ou MB BookShelf", + "MediaFolderHelpPluginRequired": "* N\u00e9cessite l'utilisation d'un plugin, par exemple : \"GameBrowser\" ou \"MB BookShelf\".", "ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia", "LabelCountry": "Pays:", "LabelLanguage": "Langue:", @@ -726,7 +726,7 @@ "LabelDeviceDescription": "Description du p\u00e9riph\u00e9rique", "HeaderIdentificationCriteriaHelp": "Entrer au moins un crit\u00e8re d'identification.", "HeaderDirectPlayProfileHelp": "Ajouter des profils de lecture directe pour indiquer quels formats le p\u00e9riph\u00e9rique peut lire de fa\u00e7on native.", - "HeaderTranscodingProfileHelp": "Ajoutez des profils de transcodage pour sp\u00e9cifier quels formats doit \u00eatre transcod\u00e9.", + "HeaderTranscodingProfileHelp": "Ajoutez des profils de transcodage pour indiquer quels formats devraient \u00eatre utilis\u00e9s quand le transcodage est requis.", "HeaderResponseProfileHelp": "Les profils de r\u00e9ponse permettent de personnaliser l'information envoy\u00e9e au p\u00e9riph\u00e9rique lors de la lecture de certains types de m\u00e9dia.", "LabelXDlnaCap": "Cap X-Dlna:", "LabelXDlnaCapHelp": "D\u00e9termine le contenu des \u00e9l\u00e9ments X_DLNACAP dans l'espace de nom urn:schemas-dlna-org:device-1-0.", @@ -1172,27 +1172,27 @@ "ButtonLearnMore": "Apprendre plus", "TabPlayback": "Lecture", "HeaderTrailersAndExtras": "Bandes-annonces et extras", - "OptionFindTrailers": "Trouver automatiquement les bandes-annonces sur Internet", + "OptionFindTrailers": "Rechercher automatiquement les bandes-annonces sur Internet", "HeaderLanguagePreferences": "Pr\u00e9f\u00e9rences de langue", "TabCinemaMode": "Mode cin\u00e9ma", "TitlePlayback": "Lecture", "LabelEnableCinemaModeFor": "Activer le mode cin\u00e9ma pour :", "CinemaModeConfigurationHelp": "Le mode cin\u00e9ma apporte l'exp\u00e9rience du cin\u00e9ma directement dans votre salon avec l'abilit\u00e9 de lire les bandes-annonces et les introductions personnalis\u00e9es avant le programme principal.", - "OptionTrailersFromMyMovies": "Inclure les bandes-annonces des films dans la biblioth\u00e8que", - "OptionUpcomingMoviesInTheaters": "Inclure les bandes-annonces des nouveaux et anciens films", - "LabelLimitIntrosToUnwatchedContent": "Utiliser uniquement les bandes-annonces du contenu non visionn\u00e9", + "OptionTrailersFromMyMovies": "Inclure les bandes-annonces des films dans ma biblioth\u00e8que", + "OptionUpcomingMoviesInTheaters": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 l'affiche", + "LabelLimitIntrosToUnwatchedContent": "Utiliser seulement les bandes-annonces du contenu non lu", "LabelEnableIntroParentalControl": "Activer le control parental intelligent", - "LabelEnableIntroParentalControlHelp": "Les bandes-annonces ne pourront \u00eatre s\u00e9lectionn\u00e9es qu'avec un niveau d'acc\u00e8s \u00e9gal ou inf\u00e9rieur \u00e0 celui du contenu \u00e0 visionner.", - "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Ces fonctionnalit\u00e9s n\u00e9cessitent un compte membre actif et l'installation du plugin Bande annonces.", - "OptionTrailersFromMyMoviesHelp": "Requiert la configuration des bandes-annonces locales.", + "LabelEnableIntroParentalControlHelp": "Les bandes-annonces seront seulement s\u00e9lectionn\u00e9es avec un niveau de contr\u00f4le parental \u00e9gal ou inf\u00e9rieur \u00e0 celui du contenu en cours de lecture.", + "LabelTheseFeaturesRequireSupporterHelpAndTrailers": "Ces fonctionnalit\u00e9s n\u00e9cessitent un abonnement actif comme supporteur et l'installation du plugin \"Trailer channel\".", + "OptionTrailersFromMyMoviesHelp": "N\u00e9cessite la configuration des bandes-annonces locales.", "LabelCustomIntrosPath": "Chemin des intros personnalis\u00e9es :", - "LabelCustomIntrosPathHelp": "Un r\u00e9pertoire contenant des fichiers vid\u00e9os. Une vid\u00e9o sera s\u00e9lectionn\u00e9e al\u00e9atoirement et jou\u00e9e apr\u00e8s les bandes-annonces.", + "LabelCustomIntrosPathHelp": "Un r\u00e9pertoire contenant des fichiers vid\u00e9os. Une vid\u00e9o sera s\u00e9lectionn\u00e9e al\u00e9atoirement et lue apr\u00e8s les bandes-annonces.", "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", "LabelSelectInternetTrailersForCinemaMode": "Bandes-annonces Internet :", - "OptionUpcomingDvdMovies": "Inclure les bandes annonces des nouveaux et prochains films en DVD et Blu-Ray", - "OptionUpcomingStreamingMovies": "Inclure les bandes annonces des nouveaux et prochains films de NetFlix", - "LabelDisplayTrailersWithinMovieSuggestions": "Afficher les bandes-annonces dans les suggestions de film.", - "LabelDisplayTrailersWithinMovieSuggestionsHelp": "N\u00e9cessite l'installation du plugin Trailer", + "OptionUpcomingDvdMovies": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 venir sur DVD et Blu-Ray", + "OptionUpcomingStreamingMovies": "Inclure les bandes-annonces des nouveaut\u00e9s et des films \u00e0 l'affiche sur Netflix", + "LabelDisplayTrailersWithinMovieSuggestions": "Afficher les bandes-annonces dans les suggestions de films.", + "LabelDisplayTrailersWithinMovieSuggestionsHelp": "N\u00e9cessite l'installation du plugin \"Trailer channel\".", "CinemaModeConfigurationHelp2": "Les utilisateurs ont la possibilit\u00e9 de d\u00e9sactiver le mode cin\u00e9ma dans leurs propres pr\u00e9f\u00e9rences.", "LabelEnableCinemaMode": "Activer le mode cin\u00e9ma", "HeaderCinemaMode": "Mode cin\u00e9ma", @@ -1235,10 +1235,14 @@ "HeaderOptionalLinkMediaBrowserAccount": "Optionnel: lier votre compte Media Browser", "ButtonTrailerReel": "Trailer reel", "HeaderTrailerReel": "Trailer reel", - "OptionPlayUnwatchedTrailersOnly": "Visionner uniquement les bandes annonces non vues", + "OptionPlayUnwatchedTrailersOnly": "Lire seulement les bandes-annonces non lus.", "HeaderTrailerReelHelp": "Commencer un \"trailer reel\" pour lire une longue liste de lecture de bandes-annonces.", - "MessageNoTrailersFound": "Aucune bande-annonce trouv\u00e9e. Installer le \"Trailer channel\" plugin pour importer une biblioth\u00e8que de bandes-annonces Internet.", + "MessageNoTrailersFound": "Aucune bande-annonce trouv\u00e9e. Installer le plugin \"Trailer channel\" pour importer une biblioth\u00e8que de bandes-annonces Internet.", "HeaderNewUsers": "Nouveaux utilisateurs", "ButtonSignUp": "S'inscrire", - "ButtonForgotPassword": "Mot de passe oubli\u00e9 ?" + "ButtonForgotPassword": "Mot de passe oubli\u00e9 ?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/he.json b/MediaBrowser.Server.Implementations/Localization/Server/he.json index df5489b4bf..88f491f952 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/hr.json b/MediaBrowser.Server.Implementations/Localization/Server/hr.json index 952f3fcb4f..b63e810438 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index 8b95447677..1a789aa5d1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/kk.json b/MediaBrowser.Server.Implementations/Localization/Server/kk.json index 048d1b13f7..bf6b3cfdcc 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u049b\u043e\u0440\u044b\u043d \u0438\u043c\u043f\u043e\u0440\u0442\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440 \u0430\u0440\u043d\u0430\u0441\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", "HeaderNewUsers": "\u0416\u0430\u04a3\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", "ButtonSignUp": "\u0422\u0456\u0440\u043a\u0435\u043b\u0443", - "ButtonForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04b1\u043c\u044b\u0442\u044b\u043b\u0434\u044b \u043c\u0430?" + "ButtonForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04b1\u043c\u044b\u0442\u044b\u043b\u0434\u044b \u043c\u0430?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ko.json b/MediaBrowser.Server.Implementations/Localization/Server/ko.json index 1137090c08..6a39d6e57b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ms.json b/MediaBrowser.Server.Implementations/Localization/Server/ms.json index c32f65df3d..b570b6e44b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index 9fad01cec7..9cc51feff1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -1147,10 +1147,10 @@ "HeaderXmlSettings": "Xml innstillinger", "HeaderXmlDocumentAttributes": "Xml dokument attributter", "HeaderXmlDocumentAttribute": "Xml dokument attributt", - "XmlDocumentAttributeListHelp": "These attributes are applied to the root element of every xml response.", + "XmlDocumentAttributeListHelp": "Disse attributtene p\u00e5f\u00f8res rot elementet for alle xml responser.", "OptionSaveMetadataAsHidden": "Lagre metadata og bilder som skjulte filer", - "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", - "LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", + "LabelExtractChaptersDuringLibraryScan": "Hent ut kapittel bilder under bibliotek skann", + "LabelExtractChaptersDuringLibraryScanHelp": "Hvis aktivert, vil kapittel bilder bli hentet ut mens videoer importeres under bibliotek skanning.\nHvis deaktivert, vil de bli hentet ut under planlagte oppgaver for kapittel bilder, som medf\u00f8rer at vanlig bibliotek skanning blir fortere ferdig.", "LabelConnectGuestUserName": "Their Media Browser username or email address:", "LabelConnectUserName": "Media Browser brukernavn\/e-post", "LabelConnectUserNameHelp": "Connect this user to a Media Browser account to enable easy sign-in access from Media Browser any app without having to know the server ip address.", @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index 921dc3d5da..dc97038355 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "Geen trailers gevonden. Installeer het trailer kanaal om internet trailers te importeren.", "HeaderNewUsers": "Nieuwe gebruikers", "ButtonSignUp": "Aanmelden", - "ButtonForgotPassword": "Wachtwoord vergeten?" + "ButtonForgotPassword": "Wachtwoord vergeten?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pl.json b/MediaBrowser.Server.Implementations/Localization/Server/pl.json index 91afc74333..ff34c00cff 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json index a8548838f7..cd88cc7f0c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -821,7 +821,7 @@ "HeaderWelcomeToMediaBrowserWebClient": "Bem-vindo ao Cliente Web do Media Browser", "ButtonDismiss": "Descartar", "ButtonTakeTheTour": "Fa\u00e7a o tour", - "ButtonEditOtherUserPreferences": "Edit this user's profile and personal preferences.", + "ButtonEditOtherUserPreferences": "Editar este perfil de usu\u00e1rio e prefer\u00eancias pessoais.", "LabelChannelStreamQuality": "Qualidade preferida do stream de internet:", "LabelChannelStreamQualityHelp": "Em um ambiente com banda larga de pouca velocidade, limitar a qualidade pode ajudar a assegurar um streaming mais flu\u00eddo.", "OptionBestAvailableStreamQuality": "Melhor dispon\u00edvel", @@ -1151,9 +1151,9 @@ "OptionSaveMetadataAsHidden": "Salvar metadados e imagens como arquivos ocultos", "LabelExtractChaptersDuringLibraryScan": "Extrair imagens dos cap\u00edtulos durante o rastreamento da biblioteca", "LabelExtractChaptersDuringLibraryScanHelp": "Se ativado, as imagens dos cap\u00edtulos ser\u00e3o extra\u00eddas quando os v\u00eddeos forem importados durante o rastreamento da biblioteca. Se desativado, elas ser\u00e3o extra\u00eddas durante a tarefa agendada de imagens dos cap\u00edtulos, permitindo que a tarefa de rastreamento da biblioteca seja mais r\u00e1pida.", - "LabelConnectGuestUserName": "Their Media Browser username or email address:", + "LabelConnectGuestUserName": "Seu nome de usu\u00e1rio ou endere\u00e7o de email do Media Browser:", "LabelConnectUserName": "Usu\u00e1rio\/email do Media Browser:", - "LabelConnectUserNameHelp": "Connect this user to a Media Browser account to enable easy sign-in access from Media Browser any app without having to know the server ip address.", + "LabelConnectUserNameHelp": "Conectar este usu\u00e1rio \u00e0 conta do Media Browser para ativar o acesso f\u00e1cil de qualquer app do Media Browser sem a necessidade de conhecer o endere\u00e7o ip do servidor.", "ButtonLearnMoreAboutMediaBrowserConnect": "Saiba mais sobre o Media Browser Connect", "LabelExternalPlayers": "Reprodutores externos:", "LabelExternalPlayersHelp": "Exibir bot\u00f5es para reproduzir conte\u00fado em reprodutores externos. Isto est\u00e1 dispon\u00edvel apenas em dispositivos que suportam esquemas url, geralmente Android e iOS. Com os reprodutores externos, geralmente n\u00e3o existe suporte para controle remoto ou para retomar.", @@ -1214,7 +1214,7 @@ "LabelCustomDeviceDisplayName": "Nome para exibi\u00e7\u00e3o:", "LabelCustomDeviceDisplayNameHelp": "Forne\u00e7a um nome para exibi\u00e7\u00e3o ou deixe vazio para usar o nome informado pelo dispositivo.", "HeaderInviteUser": "Convidar usu\u00e1rio", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Media Browser website, or their email address.", + "LabelConnectGuestUserNameHelp": "Este \u00e9 o nome de usu\u00e1rio que seus amigos usam para entrar no site do Media Browser, ou o endere\u00e7o de email deles.", "HeaderInviteUserHelp": "Compartilhar suas m\u00eddias com seus amigos \u00e9 muito mais facil com o Media Browser Connect", "ButtonSendInvitation": "Enviar convite", "HeaderGuests": "Convidados", @@ -1225,20 +1225,24 @@ "HeaderAccessScheduleHelp": "Criar um agendamento de acesso para limitar o acesso a certas horas.", "ButtonAddSchedule": "Adicionar Agendamento", "LabelAccessDay": "Dia da semana:", - "LabelAccessStart": "Start time:", - "LabelAccessEnd": "End time:", - "HeaderSchedule": "Schedule", - "OptionEveryday": "Every day", - "OptionWeekdays": "Weekdays", - "OptionWeekends": "Weekends", - "MessageProfileInfoSynced": "User profile information synced with Media Browser Connect.", - "HeaderOptionalLinkMediaBrowserAccount": "Optional: Link your Media Browser account", - "ButtonTrailerReel": "Trailer reel", - "HeaderTrailerReel": "Trailer Reel", - "OptionPlayUnwatchedTrailersOnly": "Play only unwatched trailers", - "HeaderTrailerReelHelp": "Start a trailer reel to play a long running playlist of trailers.", - "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", - "HeaderNewUsers": "New Users", - "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "LabelAccessStart": "Hora inicial:", + "LabelAccessEnd": "Hora final:", + "HeaderSchedule": "Agendamento", + "OptionEveryday": "Todos os dias", + "OptionWeekdays": "Dias da semana", + "OptionWeekends": "Fins-de-semana", + "MessageProfileInfoSynced": "A informa\u00e7\u00e3o do perfil do usu\u00e1rio foi sincronizada com o Media Browser Connect.", + "HeaderOptionalLinkMediaBrowserAccount": "Opcional: Conectar sua conta do Media Browser", + "ButtonTrailerReel": "Carrossel de trailers", + "HeaderTrailerReel": "Carrossel de Trailers", + "OptionPlayUnwatchedTrailersOnly": "Reproduzir apenas trailers n\u00e3o assistidos", + "HeaderTrailerReelHelp": "Inicie um carrossel de trailers para reproduzir uma longa lista de reprodu\u00e7\u00e3o de trailers.", + "MessageNoTrailersFound": "Nenhum trailer encontrado. Instale o plugin de canal para importar uma biblioteca de trailers da internet.", + "HeaderNewUsers": "Novos Usu\u00e1rios", + "ButtonSignUp": "Entrar", + "ButtonForgotPassword": "Esqueceu a senha?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json index 63cd0b2d09..7a25013d9a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ru.json b/MediaBrowser.Server.Implementations/Localization/Server/ru.json index 35af43d916..6149960d7f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -1214,7 +1214,7 @@ "LabelCustomDeviceDisplayName": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:", "LabelCustomDeviceDisplayNameHelp": "\u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0451\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.", "HeaderInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "LabelConnectGuestUserNameHelp": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u0441\u044f \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Media Browser, \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u044d-\u043f\u043e\u0447\u0442\u044b.", + "LabelConnectGuestUserNameHelp": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Media Browser, \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u044d-\u043f\u043e\u0447\u0442\u044b.", "HeaderInviteUserHelp": "\u0421 Media Browser Connect \u043f\u0440\u043e\u0449\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 \u0434\u0440\u0443\u0437\u044c\u044f\u043c\u0438.", "ButtonSendInvitation": "\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435", "HeaderGuests": "\u0413\u043e\u0441\u0442\u0438", @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d \u043a\u0430\u043d\u0430\u043b\u0430 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432.", "HeaderNewUsers": "\u041d\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", "ButtonSignUp": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f", - "ButtonForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?" + "ButtonForgotPassword": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 54965c3903..9009be3cd7 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1258,5 +1258,8 @@ "ButtonSignUp": "Sign up", "ButtonForgotPassword": "Forgot password?", "OptionDisableUserPreferences": "Disable access to user preferences", - "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences." + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email.", + "MessagePluginConfigurationRequiresLocalAccess": "To configure this plugin please sign in to your local server directly." } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index 5e28253e4f..1a95f504b9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/tr.json b/MediaBrowser.Server.Implementations/Localization/Server/tr.json index 909ed4f125..3c914ea87a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/vi.json b/MediaBrowser.Server.Implementations/Localization/Server/vi.json index 005d966fa8..d1fdf17df3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json index 2a15f350ac..e5a4e552b4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json index 1745968fc0..e63c99544e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json @@ -1240,5 +1240,9 @@ "MessageNoTrailersFound": "No trailers found. Install the Trailer channel plugin to import a library of internet trailers.", "HeaderNewUsers": "New Users", "ButtonSignUp": "Sign up", - "ButtonForgotPassword": "Forgot password?" + "ButtonForgotPassword": "Forgot password?", + "OptionDisableUserPreferences": "Disable access to user preferences", + "OptionDisableUserPreferencesHelp": "If enabled, only administrators will be able to configure user profile images, passwords, and language preferences.", + "HeaderSelectServer": "Select Server", + "MessageNoServersAvailableToConnect": "No servers are available to connect to. If you've been invited to share a server, make sure to confirm it by clicking the link in the email." } \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 66d82cb143..f9ccfc88a6 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -441,6 +441,7 @@ namespace MediaBrowser.WebDashboard.Api "scheduledtaskpage.js", "scheduledtaskspage.js", "search.js", + "selectserver.js", "serversecurity.js", "songs.js", "supporterkeypage.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 390ab6141a..9ea996b5c2 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -86,6 +86,12 @@ + + PreserveNewest + + + PreserveNewest + PreserveNewest diff --git a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs index df61e67f98..1ee1b42418 100644 --- a/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs +++ b/MediaBrowser.XbmcMetadata/Providers/BaseNfoProvider.cs @@ -1,7 +1,6 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; using MediaBrowser.XbmcMetadata.Savers; using System; using System.IO; @@ -15,11 +14,13 @@ namespace MediaBrowser.XbmcMetadata.Providers { protected IFileSystem FileSystem; - public async Task> GetMetadata(ItemInfo info, CancellationToken cancellationToken) + public async Task> GetMetadata(ItemInfo info, + IDirectoryService directoryService, + CancellationToken cancellationToken) { var result = new LocalMetadataResult(); - var file = GetXmlFile(info, new DirectoryService(new NullLogger())); + var file = GetXmlFile(info, directoryService); if (file == null) { diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index e0e7674f57..a44361c0b8 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.498 + 3.0.499 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 3bc4af74f7..520cff20d6 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.498 + 3.0.499 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 43e8e30ac2..d743adff4c 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.498 + 3.0.499 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index a73c5e9122..1d969caf5d 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.498 + 3.0.499 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +