From 8610a9b7ef9a976dfdcc68f5171b0c366dc518b9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 14:21:03 -0500 Subject: [PATCH 001/169] Update to use SupportsMediaControl --- .../Session/SessionInfo.cs | 40 ++++++++++++++----- .../Session/ClientCapabilities.cs | 5 --- MediaBrowser.Providers/Manager/ImageSaver.cs | 8 ---- .../Devices/DeviceManager.cs | 2 +- .../Session/SessionManager.cs | 3 +- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/MediaBrowser.Controller/Session/SessionInfo.cs b/MediaBrowser.Controller/Session/SessionInfo.cs index 078d4d70f..64b20c13e 100644 --- a/MediaBrowser.Controller/Session/SessionInfo.cs +++ b/MediaBrowser.Controller/Session/SessionInfo.cs @@ -14,17 +14,8 @@ namespace MediaBrowser.Controller.Session public SessionInfo() { QueueableMediaTypes = new List(); - PlayableMediaTypes = new List - { - MediaType.Audio, - MediaType.Book, - MediaType.Game, - MediaType.Photo, - MediaType.Video - }; AdditionalUsers = new List(); - SupportedCommands = new List(); PlayState = new PlayerStateInfo(); } @@ -32,6 +23,8 @@ namespace MediaBrowser.Controller.Session public List AdditionalUsers { get; set; } + public ClientCapabilities Capabilities { get; set; } + /// /// Gets or sets the remote end point. /// @@ -48,7 +41,17 @@ namespace MediaBrowser.Controller.Session /// Gets or sets the playable media types. /// /// The playable media types. - public List PlayableMediaTypes { get; set; } + public List PlayableMediaTypes + { + get + { + if (Capabilities == null) + { + return new List(); + } + return Capabilities.PlayableMediaTypes; + } + } /// /// Gets or sets the id. @@ -126,7 +129,17 @@ namespace MediaBrowser.Controller.Session /// Gets or sets the supported commands. /// /// The supported commands. - public List SupportedCommands { get; set; } + public List SupportedCommands + { + get + { + if (Capabilities == null) + { + return new List(); + } + return Capabilities.SupportedCommands; + } + } public TranscodingInfo TranscodingInfo { get; set; } @@ -151,6 +164,11 @@ namespace MediaBrowser.Controller.Session { get { + if (Capabilities == null || !Capabilities.SupportsMediaControl) + { + return false; + } + if (SessionController != null) { return SessionController.SupportsMediaControl; diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs index 6ca4507c0..9361a60ea 100644 --- a/MediaBrowser.Model/Session/ClientCapabilities.cs +++ b/MediaBrowser.Model/Session/ClientCapabilities.cs @@ -20,11 +20,6 @@ namespace MediaBrowser.Model.Session public DeviceProfile DeviceProfile { get; set; } - /// - /// Usage should be migrated to SupportsPersistentIdentifier. Keeping this to preserve data. - /// - public bool? SupportsUniqueIdentifier { get; set; } - public ClientCapabilities() { PlayableMediaTypes = new List(); diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index a8e16e4ae..22178434f 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -82,14 +82,6 @@ namespace MediaBrowser.Providers.Manager { saveLocally = true; } - if (item is IItemByName) - { - var hasDualAccess = item as IHasDualAccess; - if (hasDualAccess == null || hasDualAccess.IsAccessedByName) - { - saveLocally = true; - } - } if (type != ImageType.Primary && item is Episode) { diff --git a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs index 3211f88d5..84dd8a97c 100644 --- a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs +++ b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs @@ -109,7 +109,7 @@ namespace MediaBrowser.Server.Implementations.Devices devices = devices.Where(i => { var caps = GetCapabilities(i.Id); - var deviceVal = caps.SupportsUniqueIdentifier ?? caps.SupportsPersistentIdentifier; + var deviceVal = caps.SupportsPersistentIdentifier; return deviceVal == val; }); } diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index a9488190c..d02ef9d27 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -1327,8 +1327,7 @@ namespace MediaBrowser.Server.Implementations.Session ClientCapabilities capabilities, bool saveCapabilities) { - session.PlayableMediaTypes = capabilities.PlayableMediaTypes; - session.SupportedCommands = capabilities.SupportedCommands; + session.Capabilities = capabilities; if (!string.IsNullOrWhiteSpace(capabilities.MessageCallbackUrl)) { From d155139e2859166d1f609ee3d2de8121aa631138 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 19:34:05 -0500 Subject: [PATCH 002/169] search fixes --- MediaBrowser.Controller/Entities/UserViewBuilder.cs | 2 -- MediaBrowser.Server.Implementations/Library/UserViewManager.cs | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 85c10c272..35ada4aef 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -5,7 +5,6 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; -using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.TV; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; @@ -18,7 +17,6 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MoreLinq; namespace MediaBrowser.Controller.Entities { diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index a8ca1a2e0..71a360900 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -2,7 +2,6 @@ using MediaBrowser.Controller.Collections; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Localization; @@ -11,12 +10,12 @@ using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Library; using MediaBrowser.Model.Querying; +using MoreLinq; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MoreLinq; namespace MediaBrowser.Server.Implementations.Library { From 5e10e0ff192de703e8fa18462fa08aa16abac8c4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 20:57:10 -0500 Subject: [PATCH 003/169] replace System.Drawing with ImageMagick --- .../Drawing/ImageExtensions.cs | 220 ------------- .../Drawing/ImageHeader.cs | 29 +- .../Drawing/ImageProcessor.cs | 298 ++++-------------- .../Drawing/PercentPlayedDrawer.cs | 36 ++- .../Drawing/PlayedIndicatorDrawer.cs | 44 ++- .../Drawing/UnplayedCountIndicator.cs | 76 +++-- ...MediaBrowser.Server.Implementations.csproj | 8 +- .../packages.config | 1 + 8 files changed, 175 insertions(+), 537 deletions(-) delete mode 100644 MediaBrowser.Server.Implementations/Drawing/ImageExtensions.cs diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageExtensions.cs b/MediaBrowser.Server.Implementations/Drawing/ImageExtensions.cs deleted file mode 100644 index 28ea26a32..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/ImageExtensions.cs +++ /dev/null @@ -1,220 +0,0 @@ -using System; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; -using System.IO; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - /// - /// Class ImageExtensions - /// - public static class ImageExtensions - { - /// - /// Saves the image. - /// - /// The output format. - /// The image. - /// To stream. - /// The quality. - public static void Save(this Image image, ImageFormat outputFormat, Stream toStream, int quality) - { - // Use special save methods for jpeg and png that will result in a much higher quality image - // All other formats use the generic Image.Save - if (ImageFormat.Jpeg.Equals(outputFormat)) - { - SaveAsJpeg(image, toStream, quality); - } - else if (ImageFormat.Png.Equals(outputFormat)) - { - image.Save(toStream, ImageFormat.Png); - } - else - { - image.Save(toStream, outputFormat); - } - } - - /// - /// Saves the JPEG. - /// - /// The image. - /// The target. - /// The quality. - public static void SaveAsJpeg(this Image image, Stream target, int quality) - { - using (var encoderParameters = new EncoderParameters(1)) - { - encoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, quality); - image.Save(target, GetImageCodecInfo("image/jpeg"), encoderParameters); - } - } - - private static readonly ImageCodecInfo[] Encoders = ImageCodecInfo.GetImageEncoders(); - - /// - /// Gets the image codec info. - /// - /// Type of the MIME. - /// ImageCodecInfo. - private static ImageCodecInfo GetImageCodecInfo(string mimeType) - { - foreach (var encoder in Encoders) - { - if (string.Equals(encoder.MimeType, mimeType, StringComparison.OrdinalIgnoreCase)) - { - return encoder; - } - } - - return Encoders.Length == 0 ? null : Encoders[0]; - } - - /// - /// Crops an image by removing whitespace and transparency from the edges - /// - /// The BMP. - /// Bitmap. - /// - public static Bitmap CropWhitespace(this Bitmap bmp) - { - var width = bmp.Width; - var height = bmp.Height; - - var topmost = 0; - for (int row = 0; row < height; ++row) - { - if (IsAllWhiteRow(bmp, row, width)) - topmost = row; - else break; - } - - int bottommost = 0; - for (int row = height - 1; row >= 0; --row) - { - if (IsAllWhiteRow(bmp, row, width)) - bottommost = row; - else break; - } - - int leftmost = 0, rightmost = 0; - for (int col = 0; col < width; ++col) - { - if (IsAllWhiteColumn(bmp, col, height)) - leftmost = col; - else - break; - } - - for (int col = width - 1; col >= 0; --col) - { - if (IsAllWhiteColumn(bmp, col, height)) - rightmost = col; - else - break; - } - - if (rightmost == 0) rightmost = width; // As reached left - if (bottommost == 0) bottommost = height; // As reached top. - - var croppedWidth = rightmost - leftmost; - var croppedHeight = bottommost - topmost; - - if (croppedWidth == 0) // No border on left or right - { - leftmost = 0; - croppedWidth = width; - } - - if (croppedHeight == 0) // No border on top or bottom - { - topmost = 0; - croppedHeight = height; - } - - // Graphics.FromImage will throw an exception if the PixelFormat is Indexed, so we need to handle that here - var thumbnail = new Bitmap(croppedWidth, croppedHeight, PixelFormat.Format32bppPArgb); - - // Preserve the original resolution - TrySetResolution(thumbnail, bmp.HorizontalResolution, bmp.VerticalResolution); - - using (var thumbnailGraph = Graphics.FromImage(thumbnail)) - { - thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality; - thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality; - thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic; - thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality; - thumbnailGraph.CompositingMode = CompositingMode.SourceCopy; - - thumbnailGraph.DrawImage(bmp, - new RectangleF(0, 0, croppedWidth, croppedHeight), - new RectangleF(leftmost, topmost, croppedWidth, croppedHeight), - GraphicsUnit.Pixel); - } - return thumbnail; - } - - /// - /// Tries the set resolution. - /// - /// The BMP. - /// The x. - /// The y. - private static void TrySetResolution(Bitmap bmp, float x, float y) - { - if (x > 0 && y > 0) - { - bmp.SetResolution(x, y); - } - } - - /// - /// Determines whether or not a row of pixels is all whitespace - /// - /// The BMP. - /// The row. - /// The width. - /// true if [is all white row] [the specified BMP]; otherwise, false. - private static bool IsAllWhiteRow(Bitmap bmp, int row, int width) - { - for (var i = 0; i < width; ++i) - { - if (!IsWhiteSpace(bmp.GetPixel(i, row))) - { - return false; - } - } - return true; - } - - /// - /// Determines whether or not a column of pixels is all whitespace - /// - /// The BMP. - /// The col. - /// The height. - /// true if [is all white column] [the specified BMP]; otherwise, false. - private static bool IsAllWhiteColumn(Bitmap bmp, int col, int height) - { - for (var i = 0; i < height; ++i) - { - if (!IsWhiteSpace(bmp.GetPixel(col, i))) - { - return false; - } - } - return true; - } - - /// - /// Determines if a color is whitespace - /// - /// The color. - /// true if [is white space] [the specified color]; otherwise, false. - private static bool IsWhiteSpace(Color color) - { - return (color.R == 255 && color.G == 255 && color.B == 255) || color.A == 0; - } - } -} diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs b/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs index e9c67bf48..81d4a786a 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using ImageMagickSharp; +using MediaBrowser.Common.IO; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Logging; using System; @@ -61,27 +62,15 @@ namespace MediaBrowser.Server.Implementations.Drawing logger.Info("Failed to read image header for {0}. Doing it the slow way.", path); } - // Buffer to memory stream to avoid image locking file - using (var fs = fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) + using (var wand = new MagickWand(path)) { - using (var memoryStream = new MemoryStream()) + var img = wand.CurrentImage; + + return new ImageSize { - fs.CopyTo(memoryStream); - - memoryStream.Position = 0; - - // Co it the old fashioned way - using (var b = System.Drawing.Image.FromStream(memoryStream, true, false)) - { - var size = b.Size; - - return new ImageSize - { - Width = size.Width, - Height = size.Height - }; - } - } + Width = img.Width, + Height = img.Height + }; } } diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index 5055d2750..e942b183b 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -1,10 +1,9 @@ -using Imazen.WebP; +using ImageMagickSharp; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; @@ -13,9 +12,6 @@ using MediaBrowser.Model.Serialization; using System; using System.Collections.Concurrent; using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; using System.Globalization; using System.IO; using System.Linq; @@ -54,14 +50,12 @@ namespace MediaBrowser.Server.Implementations.Drawing private readonly IFileSystem _fileSystem; private readonly IJsonSerializer _jsonSerializer; private readonly IServerApplicationPaths _appPaths; - private readonly IMediaEncoder _mediaEncoder; - public ImageProcessor(ILogger logger, IServerApplicationPaths appPaths, IFileSystem fileSystem, IJsonSerializer jsonSerializer, IMediaEncoder mediaEncoder) + public ImageProcessor(ILogger logger, IServerApplicationPaths appPaths, IFileSystem fileSystem, IJsonSerializer jsonSerializer) { _logger = logger; _fileSystem = fileSystem; _jsonSerializer = jsonSerializer; - _mediaEncoder = mediaEncoder; _appPaths = appPaths; _saveImageSizeTimer = new Timer(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite); @@ -92,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Drawing _cachedImagedSizes = new ConcurrentDictionary(sizeDictionary); - LogWebPVersion(); + LogImageMagickVersionVersion(); } private string ResizedImageCachePath @@ -134,13 +128,9 @@ namespace MediaBrowser.Server.Implementations.Drawing } } - public Model.Drawing.ImageFormat[] GetSupportedImageOutputFormats() + public ImageFormat[] GetSupportedImageOutputFormats() { - if (_webpAvailable) - { - return new[] { Model.Drawing.ImageFormat.Webp, Model.Drawing.ImageFormat.Gif, Model.Drawing.ImageFormat.Jpg, Model.Drawing.ImageFormat.Png }; - } - return new[] { Model.Drawing.ImageFormat.Gif, Model.Drawing.ImageFormat.Jpg, Model.Drawing.ImageFormat.Png }; + return new[] { ImageFormat.Webp, ImageFormat.Gif, ImageFormat.Jpg, ImageFormat.Png }; } public async Task ProcessImage(ImageProcessingOptions options) @@ -212,77 +202,42 @@ namespace MediaBrowser.Server.Implementations.Drawing try { - var hasPostProcessing = !string.IsNullOrEmpty(options.BackgroundColor) || options.UnplayedCount.HasValue || options.AddPlayedIndicator || options.PercentPlayed > 0; + var newWidth = Convert.ToInt32(newSize.Width); + var newHeight = Convert.ToInt32(newSize.Height); - using (var fileStream = _fileSystem.GetFileStream(originalImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) + Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath)); + + if (string.IsNullOrWhiteSpace(options.BackgroundColor)) { - // Copy to memory stream to avoid Image locking file - using (var memoryStream = new MemoryStream()) + using (var originalImage = new MagickWand(originalImagePath)) { - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); + originalImage.CurrentImage.ResizeImage(newWidth, newHeight); - using (var originalImage = Image.FromStream(memoryStream, true, false)) + DrawIndicator(originalImage, newWidth, newHeight, options); + + originalImage.CurrentImage.CompressionQuality = quality; + + originalImage.SaveImage(cacheFilePath); + + return cacheFilePath; + } + } + else + { + using (var wand = new MagickWand(newWidth, newHeight, options.BackgroundColor)) + { + using (var originalImage = new MagickWand(originalImagePath)) { - var newWidth = Convert.ToInt32(newSize.Width); - var newHeight = Convert.ToInt32(newSize.Height); + originalImage.CurrentImage.ResizeImage(newWidth, newHeight); - var selectedOutputFormat = options.OutputFormat; + wand.CurrentImage.CompositeImage(originalImage, CompositeOperator.OverCompositeOp, 0, 0); + DrawIndicator(wand, newWidth, newHeight, options); - _logger.Debug("Processing image to {0}", selectedOutputFormat); + wand.CurrentImage.CompressionQuality = quality; - // Graphics.FromImage will throw an exception if the PixelFormat is Indexed, so we need to handle that here - // Also, Webp only supports Format32bppArgb and Format32bppRgb - var pixelFormat = selectedOutputFormat == Model.Drawing.ImageFormat.Webp - ? PixelFormat.Format32bppArgb - : PixelFormat.Format32bppPArgb; - - using (var thumbnail = new Bitmap(newWidth, newHeight, pixelFormat)) - { - // Mono throw an exeception if assign 0 to SetResolution - if (originalImage.HorizontalResolution > 0 && originalImage.VerticalResolution > 0) - { - // Preserve the original resolution - thumbnail.SetResolution(originalImage.HorizontalResolution, originalImage.VerticalResolution); - } - - using (var thumbnailGraph = Graphics.FromImage(thumbnail)) - { - thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality; - thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality; - thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic; - thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality; - thumbnailGraph.CompositingMode = !hasPostProcessing ? - CompositingMode.SourceCopy : - CompositingMode.SourceOver; - - SetBackgroundColor(thumbnailGraph, options); - - thumbnailGraph.DrawImage(originalImage, 0, 0, newWidth, newHeight); - - DrawIndicator(thumbnailGraph, newWidth, newHeight, options); - - var outputFormat = GetOutputFormat(originalImage, selectedOutputFormat); - - Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath)); - - // Save to the cache location - using (var cacheFileStream = _fileSystem.GetFileStream(cacheFilePath, FileMode.Create, FileAccess.Write, FileShare.Read, false)) - { - if (selectedOutputFormat == Model.Drawing.ImageFormat.Webp) - { - SaveToWebP(thumbnail, cacheFileStream, quality); - } - else - { - // Save to the memory stream - thumbnail.Save(outputFormat, cacheFileStream, quality); - } - } - - return cacheFilePath; - } - } + wand.SaveImage(cacheFilePath); + return cacheFilePath; } } } @@ -293,59 +248,26 @@ namespace MediaBrowser.Server.Implementations.Drawing } } - private void SaveToWebP(Bitmap thumbnail, Stream toStream, int quality) - { - new SimpleEncoder().Encode(thumbnail, toStream, quality); - } - - private bool _webpAvailable = true; - private void LogWebPVersion() + private void LogImageMagickVersionVersion() { try { - _logger.Info("libwebp version: " + SimpleEncoder.GetEncoderVersion()); + _logger.Info("ImageMagick version: " + Wand.VersionString); } catch (Exception ex) { - _logger.ErrorException("Error loading libwebp: ", ex); - _webpAvailable = false; - } - } - - /// - /// Sets the color of the background. - /// - /// The graphics. - /// The options. - private void SetBackgroundColor(Graphics graphics, ImageProcessingOptions options) - { - var color = options.BackgroundColor; - - if (!string.IsNullOrEmpty(color)) - { - Color drawingColor; - - try - { - drawingColor = ColorTranslator.FromHtml(color); - } - catch - { - drawingColor = ColorTranslator.FromHtml("#" + color); - } - - graphics.Clear(drawingColor); + _logger.ErrorException("Error loading ImageMagick: ", ex); } } /// /// Draws the indicator. /// - /// The graphics. + /// The wand. /// Width of the image. /// Height of the image. /// The options. - private void DrawIndicator(Graphics graphics, int imageWidth, int imageHeight, ImageProcessingOptions options) + private void DrawIndicator(MagickWand wand, int imageWidth, int imageHeight, ImageProcessingOptions options) { if (!options.AddPlayedIndicator && !options.UnplayedCount.HasValue && options.PercentPlayed.Equals(0)) { @@ -356,22 +278,20 @@ namespace MediaBrowser.Server.Implementations.Drawing { if (options.AddPlayedIndicator) { - var currentImageSize = new Size(imageWidth, imageHeight); + var currentImageSize = new ImageSize(imageWidth, imageHeight); - new PlayedIndicatorDrawer().DrawPlayedIndicator(graphics, currentImageSize); + new PlayedIndicatorDrawer().DrawPlayedIndicator(wand, currentImageSize); } else if (options.UnplayedCount.HasValue) { - var currentImageSize = new Size(imageWidth, imageHeight); + var currentImageSize = new ImageSize(imageWidth, imageHeight); - new UnplayedCountIndicator().DrawUnplayedCountIndicator(graphics, currentImageSize, options.UnplayedCount.Value); + new UnplayedCountIndicator().DrawUnplayedCountIndicator(wand, currentImageSize, options.UnplayedCount.Value); } if (options.PercentPlayed > 0) { - var currentImageSize = new Size(imageWidth, imageHeight); - - new PercentPlayedDrawer().Process(graphics, currentImageSize, options.PercentPlayed); + new PercentPlayedDrawer().Process(wand, options.PercentPlayed); } } catch (Exception ex) @@ -380,29 +300,6 @@ namespace MediaBrowser.Server.Implementations.Drawing } } - /// - /// Gets the output format. - /// - /// The image. - /// The output format. - /// ImageFormat. - private System.Drawing.Imaging.ImageFormat GetOutputFormat(Image image, Model.Drawing.ImageFormat outputFormat) - { - switch (outputFormat) - { - case Model.Drawing.ImageFormat.Bmp: - return System.Drawing.Imaging.ImageFormat.Bmp; - case Model.Drawing.ImageFormat.Gif: - return System.Drawing.Imaging.ImageFormat.Gif; - case Model.Drawing.ImageFormat.Jpg: - return System.Drawing.Imaging.ImageFormat.Jpeg; - case Model.Drawing.ImageFormat.Png: - return System.Drawing.Imaging.ImageFormat.Png; - default: - return image.RawFormat; - } - } - /// /// Crops whitespace from an image, caches the result, and returns the cached path /// @@ -429,28 +326,12 @@ namespace MediaBrowser.Server.Implementations.Drawing try { - using (var fileStream = _fileSystem.GetFileStream(originalImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) + Directory.CreateDirectory(Path.GetDirectoryName(croppedImagePath)); + + using (var wand = new MagickWand(originalImagePath)) { - // Copy to memory stream to avoid Image locking file - using (var memoryStream = new MemoryStream()) - { - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - using (var originalImage = (Bitmap)Image.FromStream(memoryStream, true, false)) - { - var outputFormat = originalImage.RawFormat; - - using (var croppedImage = originalImage.CropWhitespace()) - { - Directory.CreateDirectory(Path.GetDirectoryName(croppedImagePath)); - - using (var outputStream = _fileSystem.GetFileStream(croppedImagePath, FileMode.Create, FileAccess.Write, FileShare.Read, false)) - { - croppedImage.Save(outputFormat, outputStream, 100); - } - } - } - } + wand.CurrentImage.TrimImage(10); + wand.SaveImage(croppedImagePath); } } catch (Exception ex) @@ -476,7 +357,7 @@ namespace MediaBrowser.Server.Implementations.Drawing /// /// Gets the cache file path based on a set of parameters /// - private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, Model.Drawing.ImageFormat format, bool addPlayedIndicator, double percentPlayed, int? unwatchedCount, string backgroundColor) + private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageFormat format, bool addPlayedIndicator, double percentPlayed, int? unwatchedCount, string backgroundColor) { var filename = originalPath; @@ -727,7 +608,7 @@ namespace MediaBrowser.Server.Implementations.Drawing } /// - /// Runs an image through the image enhancers, caches the result, and returns the cached path + /// Gets the enhanced image internal. /// /// The original image path. /// The item. @@ -735,8 +616,12 @@ namespace MediaBrowser.Server.Implementations.Drawing /// Index of the image. /// The supported enhancers. /// The cache unique identifier. - /// System.String. - /// originalImagePath + /// Task<System.String>. + /// + /// originalImagePath + /// or + /// item + /// private async Task GetEnhancedImageInternal(string originalImagePath, IHasImages item, ImageType imageType, @@ -770,51 +655,8 @@ namespace MediaBrowser.Server.Implementations.Drawing try { - using (var fileStream = _fileSystem.GetFileStream(originalImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) - { - // Copy to memory stream to avoid Image locking file - using (var memoryStream = new MemoryStream()) - { - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - memoryStream.Position = 0; - - var imageStream = new ImageStream - { - Stream = memoryStream, - Format = GetFormat(originalImagePath) - }; - - //Pass the image through registered enhancers - using (var newImageStream = await ExecuteImageEnhancers(supportedEnhancers, imageStream, item, imageType, imageIndex).ConfigureAwait(false)) - { - var parentDirectory = Path.GetDirectoryName(enhancedImagePath); - - Directory.CreateDirectory(parentDirectory); - - // Save as png - if (newImageStream.Format == Model.Drawing.ImageFormat.Png) - { - //And then save it in the cache - using (var outputStream = _fileSystem.GetFileStream(enhancedImagePath, FileMode.Create, FileAccess.Write, FileShare.Read, false)) - { - await newImageStream.Stream.CopyToAsync(outputStream).ConfigureAwait(false); - } - } - else - { - using (var newImage = Image.FromStream(newImageStream.Stream, true, false)) - { - //And then save it in the cache - using (var outputStream = _fileSystem.GetFileStream(enhancedImagePath, FileMode.Create, FileAccess.Write, FileShare.Read, false)) - { - newImage.Save(System.Drawing.Imaging.ImageFormat.Png, outputStream, 100); - } - } - } - } - } - } + Directory.CreateDirectory(Path.GetDirectoryName(enhancedImagePath)); + await ExecuteImageEnhancers(supportedEnhancers, originalImagePath, enhancedImagePath, item, imageType, imageIndex).ConfigureAwait(false); } finally { @@ -824,43 +666,42 @@ namespace MediaBrowser.Server.Implementations.Drawing return enhancedImagePath; } - private Model.Drawing.ImageFormat GetFormat(string path) + private ImageFormat GetFormat(string path) { var extension = Path.GetExtension(path); if (string.Equals(extension, ".png", StringComparison.OrdinalIgnoreCase)) { - return Model.Drawing.ImageFormat.Png; + return ImageFormat.Png; } if (string.Equals(extension, ".gif", StringComparison.OrdinalIgnoreCase)) { - return Model.Drawing.ImageFormat.Gif; + return ImageFormat.Gif; } if (string.Equals(extension, ".webp", StringComparison.OrdinalIgnoreCase)) { - return Model.Drawing.ImageFormat.Webp; + return ImageFormat.Webp; } if (string.Equals(extension, ".bmp", StringComparison.OrdinalIgnoreCase)) { - return Model.Drawing.ImageFormat.Bmp; + return ImageFormat.Bmp; } - return Model.Drawing.ImageFormat.Jpg; + return ImageFormat.Jpg; } /// /// Executes the image enhancers. /// /// The image enhancers. - /// The original image. + /// The input path. + /// The output path. /// The item. /// Type of the image. /// Index of the image. /// Task{EnhancedImage}. - private async Task ExecuteImageEnhancers(IEnumerable imageEnhancers, ImageStream originalImage, IHasImages item, ImageType imageType, int imageIndex) + private async Task ExecuteImageEnhancers(IEnumerable imageEnhancers, string inputPath, string outputPath, IHasImages item, ImageType imageType, int imageIndex) { - var result = originalImage; - // Run the enhancers sequentially in order of priority foreach (var enhancer in imageEnhancers) { @@ -868,7 +709,7 @@ namespace MediaBrowser.Server.Implementations.Drawing try { - result = await enhancer.EnhanceImageAsync(item, result, imageType, imageIndex).ConfigureAwait(false); + await enhancer.EnhanceImageAsync(item, inputPath, outputPath, imageType, imageIndex).ConfigureAwait(false); } catch (Exception ex) { @@ -876,9 +717,10 @@ namespace MediaBrowser.Server.Implementations.Drawing throw; } - } - return result; + // Feed the output into the next enhancer as input + inputPath = outputPath; + } } /// diff --git a/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs b/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs index 68f66e977..20c2ab93b 100644 --- a/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs +++ b/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs @@ -1,5 +1,5 @@ -using System; -using System.Drawing; +using ImageMagickSharp; +using System; namespace MediaBrowser.Server.Implementations.Drawing { @@ -7,26 +7,32 @@ namespace MediaBrowser.Server.Implementations.Drawing { private const int IndicatorHeight = 8; - public void Process(Graphics graphics, Size imageSize, double percent) + public void Process(MagickWand wand, double percent) { - var y = imageSize.Height - IndicatorHeight; + var currentImage = wand.CurrentImage; + var height = currentImage.Height; - using (var backdroundBrush = new SolidBrush(Color.FromArgb(225, 0, 0, 0))) + using (var draw = new DrawingWand()) { - const int innerX = 0; - var innerY = y; - var innerWidth = imageSize.Width; - var innerHeight = imageSize.Height; - - graphics.FillRectangle(backdroundBrush, innerX, innerY, innerWidth, innerHeight); - - using (var foregroundBrush = new SolidBrush(Color.FromArgb(82, 181, 75))) + using (PixelWand pixel = new PixelWand()) { - double foregroundWidth = innerWidth; + var endX = currentImage.Width - 1; + var endY = height - 1; + + pixel.Color = "black"; + pixel.Opacity = 0.4; + draw.FillColor = pixel; + draw.DrawRectangle(0, endY - IndicatorHeight, endX, endY); + + double foregroundWidth = endX; foregroundWidth *= percent; foregroundWidth /= 100; - graphics.FillRectangle(foregroundBrush, innerX, innerY, Convert.ToInt32(Math.Round(foregroundWidth)), innerHeight); + pixel.Color = "#52B54B"; + pixel.Opacity = 0; + draw.FillColor = pixel; + draw.DrawRectangle(0, endY - IndicatorHeight, Convert.ToInt32(Math.Round(foregroundWidth)), endY); + wand.CurrentImage.DrawImage(draw); } } } diff --git a/MediaBrowser.Server.Implementations/Drawing/PlayedIndicatorDrawer.cs b/MediaBrowser.Server.Implementations/Drawing/PlayedIndicatorDrawer.cs index fa4231612..6dd0b0fe7 100644 --- a/MediaBrowser.Server.Implementations/Drawing/PlayedIndicatorDrawer.cs +++ b/MediaBrowser.Server.Implementations/Drawing/PlayedIndicatorDrawer.cs @@ -1,31 +1,41 @@ -using System.Drawing; +using ImageMagickSharp; +using MediaBrowser.Model.Drawing; namespace MediaBrowser.Server.Implementations.Drawing { public class PlayedIndicatorDrawer { - private const int IndicatorHeight = 40; - public const int IndicatorWidth = 40; - private const int FontSize = 40; - private const int OffsetFromTopRightCorner = 10; + private const int FontSize = 52; + private const int OffsetFromTopRightCorner = 38; - public void DrawPlayedIndicator(Graphics graphics, Size imageSize) + public void DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) { - var x = imageSize.Width - IndicatorWidth - OffsetFromTopRightCorner; + var x = imageSize.Width - OffsetFromTopRightCorner; - using (var backdroundBrush = new SolidBrush(Color.FromArgb(225, 82, 181, 75))) + using (var draw = new DrawingWand()) { - graphics.FillEllipse(backdroundBrush, x, OffsetFromTopRightCorner, IndicatorWidth, IndicatorHeight); - - x = imageSize.Width - 45 - OffsetFromTopRightCorner; - - using (var font = new Font("Webdings", FontSize, FontStyle.Regular, GraphicsUnit.Pixel)) + using (PixelWand pixel = new PixelWand()) { - using (var fontBrush = new SolidBrush(Color.White)) - { - graphics.DrawString("a", font, fontBrush, x, OffsetFromTopRightCorner - 2); - } + pixel.Color = "#52B54B"; + pixel.Opacity = 0.2; + draw.FillColor = pixel; + draw.DrawCircle(x, OffsetFromTopRightCorner, x - 20, OffsetFromTopRightCorner - 20); + + pixel.Opacity = 0; + pixel.Color = "white"; + draw.FillColor = pixel; + draw.Font = "Webdings"; + draw.FontSize = FontSize; + draw.FontStyle = FontStyleType.NormalStyle; + draw.TextAlignment = TextAlignType.CenterAlign; + draw.FontWeight = FontWeightType.RegularStyle; + draw.TextAntialias = true; + draw.DrawAnnotation(x + 4, OffsetFromTopRightCorner + 14, "a"); + + draw.FillColor = pixel; + wand.CurrentImage.DrawImage(draw); } + } } } diff --git a/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs b/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs index 695c6390a..c10084c9b 100644 --- a/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs +++ b/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs @@ -1,49 +1,61 @@ -using System.Drawing; +using System.Globalization; +using ImageMagickSharp; +using MediaBrowser.Model.Drawing; namespace MediaBrowser.Server.Implementations.Drawing { public class UnplayedCountIndicator { - private const int IndicatorHeight = 41; - public const int IndicatorWidth = 41; - private const int OffsetFromTopRightCorner = 10; + private const int OffsetFromTopRightCorner = 38; - public void DrawUnplayedCountIndicator(Graphics graphics, Size imageSize, int count) + public void DrawUnplayedCountIndicator(MagickWand wand, ImageSize imageSize, int count) { - var x = imageSize.Width - IndicatorWidth - OffsetFromTopRightCorner; + var x = imageSize.Width - OffsetFromTopRightCorner; + var text = count.ToString(CultureInfo.InvariantCulture); - using (var backdroundBrush = new SolidBrush(Color.FromArgb(225, 82, 181, 75))) + using (var draw = new DrawingWand()) { - graphics.FillEllipse(backdroundBrush, x, OffsetFromTopRightCorner, IndicatorWidth, IndicatorHeight); - - var text = count.ToString(); - - x = imageSize.Width - IndicatorWidth - OffsetFromTopRightCorner; - var y = OffsetFromTopRightCorner + 6; - var fontSize = 24; - - if (text.Length == 1) + using (PixelWand pixel = new PixelWand()) { - x += 10; - } - else if (text.Length == 2) - { - x += 3; - } - else if (text.Length == 3) - { - x += 1; - y += 1; - fontSize = 20; - } + pixel.Color = "#52B54B"; + pixel.Opacity = 0.2; + draw.FillColor = pixel; + draw.DrawCircle(x, OffsetFromTopRightCorner, x - 20, OffsetFromTopRightCorner - 20); - using (var font = new Font("Sans-Serif", fontSize, FontStyle.Regular, GraphicsUnit.Pixel)) - { - using (var fontBrush = new SolidBrush(Color.White)) + pixel.Opacity = 0; + pixel.Color = "white"; + draw.FillColor = pixel; + draw.Font = "Sans-Serif"; + draw.FontStyle = FontStyleType.NormalStyle; + draw.TextAlignment = TextAlignType.CenterAlign; + draw.FontWeight = FontWeightType.RegularStyle; + draw.TextAntialias = true; + + var fontSize = 30; + var y = OffsetFromTopRightCorner + 11; + + if (text.Length == 1) { - graphics.DrawString(text, font, fontBrush, x, y); + x += 2; } + else if (text.Length == 2) + { + x += 1; + } + else if (text.Length >= 3) + { + x += 1; + y -= 2; + fontSize = 24; + } + + draw.FontSize = fontSize; + draw.DrawAnnotation(x, y, text); + + draw.FillColor = pixel; + wand.CurrentImage.DrawImage(draw); } + } } } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 1db1f8f5b..eb11355f7 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -45,9 +45,8 @@ v4.5 - - False - ..\ThirdParty\libwebp\Imazen.WebP.dll + + ..\packages\ImageMagickSharp.1.0.0.0\lib\net45\ImageMagickSharp.dll False @@ -77,9 +76,9 @@ ..\ThirdParty\System.Data.SQLite.ManagedOnly\1.0.94.0\System.Data.SQLite.dll - + @@ -126,7 +125,6 @@ - diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 55023c565..d4aedc770 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,5 +1,6 @@  + From a46d5702f35e9141f024a4ae8bb36bca08bab1ce Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 21:12:33 -0500 Subject: [PATCH 004/169] replace System.Drawing with ImageMagick --- .../Providers/IImageEnhancer.cs | 5 +- .../Collections/CollectionImageProvider.cs | 6 +- ...MediaBrowser.Server.Implementations.csproj | 1 - .../Photos/BaseDynamicImageProvider.cs | 12 ++- .../Photos/DynamicImageHelpers.cs | 95 +++++-------------- .../Photos/DynamicImageProvider.cs | 8 +- .../Photos/PhotoAlbumImageProvider.cs | 6 +- .../Playlists/PlaylistImageProvider.cs | 5 +- .../Imazen.WebP.dll.config | 4 - .../MediaBrowser.Server.Mono.csproj | 7 -- .../ApplicationHost.cs | 2 +- .../MediaBrowser.ServerApplication.csproj | 64 ++++++++++++- 12 files changed, 108 insertions(+), 107 deletions(-) delete mode 100644 MediaBrowser.Server.Mono/Imazen.WebP.dll.config diff --git a/MediaBrowser.Controller/Providers/IImageEnhancer.cs b/MediaBrowser.Controller/Providers/IImageEnhancer.cs index 56f8d02be..e5a51a56e 100644 --- a/MediaBrowser.Controller/Providers/IImageEnhancer.cs +++ b/MediaBrowser.Controller/Providers/IImageEnhancer.cs @@ -44,11 +44,12 @@ namespace MediaBrowser.Controller.Providers /// Enhances the image async. /// /// The item. - /// The original image. + /// The input file. + /// The output file. /// Type of the image. /// Index of the image. /// Task{Image}. /// - Task EnhanceImageAsync(IHasImages item, ImageStream originalImage, ImageType imageType, int imageIndex); + Task EnhanceImageAsync(IHasImages item, string inputFile, string outputFile, ImageType imageType, int imageIndex); } } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs b/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs index 27ec6cc3b..b756fb6c4 100644 --- a/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; @@ -15,8 +16,7 @@ namespace MediaBrowser.Server.Implementations.Collections { public class CollectionImageProvider : BaseDynamicImageProvider, ICustomMetadataProvider { - public CollectionImageProvider(IFileSystem fileSystem, IProviderManager providerManager) - : base(fileSystem, providerManager) + public CollectionImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) { } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index eb11355f7..91a886221 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -78,7 +78,6 @@ - diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index 369e8512f..e1f98c659 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Extensions; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; @@ -19,9 +20,11 @@ namespace MediaBrowser.Server.Implementations.Photos { protected IFileSystem FileSystem { get; private set; } protected IProviderManager ProviderManager { get; private set; } + protected IApplicationPaths ApplicationPaths { get; private set; } - protected BaseDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager) + protected BaseDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) { + ApplicationPaths = applicationPaths; ProviderManager = providerManager; FileSystem = fileSystem; } @@ -108,14 +111,15 @@ namespace MediaBrowser.Server.Implementations.Photos return DynamicImageHelpers.GetThumbCollage(items.Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)).ToList(), FileSystem, 1600, - 900); + 900, + ApplicationPaths); } protected Task GetSquareCollage(List items) { return DynamicImageHelpers.GetSquareCollage(items.Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)).ToList(), FileSystem, - 800); + 800, ApplicationPaths); } public string Name diff --git a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs index 1099bd170..c2af9cdaf 100644 --- a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs +++ b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs @@ -1,8 +1,8 @@ -using MediaBrowser.Common.IO; +using ImageMagickSharp; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; +using System; using System.Collections.Generic; -using System.Drawing; -using System.Drawing.Drawing2D; -using System.Drawing.Imaging; using System.IO; using System.Threading.Tasks; @@ -13,7 +13,7 @@ namespace MediaBrowser.Server.Implementations.Photos public static async Task GetThumbCollage(List files, IFileSystem fileSystem, int width, - int height) + int height, IApplicationPaths appPaths) { if (files.Count < 3) { @@ -27,16 +27,8 @@ namespace MediaBrowser.Server.Implementations.Photos int cellHeight = height; var index = 0; - var img = new Bitmap(width, height, PixelFormat.Format32bppPArgb); - - using (var graphics = Graphics.FromImage(img)) + using (var wand = new MagickWand(width, height, "transparent")) { - graphics.CompositingQuality = CompositingQuality.HighQuality; - graphics.SmoothingMode = SmoothingMode.HighQuality; - graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; - graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - graphics.CompositingMode = CompositingMode.SourceCopy; - for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) @@ -46,33 +38,24 @@ namespace MediaBrowser.Server.Implementations.Photos if (files.Count > index) { - using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true)) + using (var innerWand = new MagickWand(files[index])) { - using (var memoryStream = new MemoryStream()) - { - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - memoryStream.Position = 0; - - using (var imgtemp = Image.FromStream(memoryStream, true, false)) - { - graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight); - } - } + innerWand.CurrentImage.ResizeImage(cellWidth, cellHeight); + wand.CurrentImage.CompositeImage(innerWand, CompositeOperator.OverCompositeOp, x, y); } } index++; } } - } - return GetStream(img); + return GetStream(wand, appPaths); + } } public static async Task GetSquareCollage(List files, IFileSystem fileSystem, - int size) + int size, IApplicationPaths appPaths) { if (files.Count < 4) { @@ -85,16 +68,8 @@ namespace MediaBrowser.Server.Implementations.Photos int singleSize = size / 2; var index = 0; - var img = new Bitmap(size, size, PixelFormat.Format32bppPArgb); - - using (var graphics = Graphics.FromImage(img)) + using (var wand = new MagickWand(size, size, "transparent")) { - graphics.CompositingQuality = CompositingQuality.HighQuality; - graphics.SmoothingMode = SmoothingMode.HighQuality; - graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; - graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - graphics.CompositingMode = CompositingMode.SourceCopy; - for (var row = 0; row < rows; row++) { for (var col = 0; col < cols; col++) @@ -102,27 +77,18 @@ namespace MediaBrowser.Server.Implementations.Photos var x = col * singleSize; var y = row * singleSize; - using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true)) + using (var innerWand = new MagickWand(files[index])) { - using (var memoryStream = new MemoryStream()) - { - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - memoryStream.Position = 0; - - using (var imgtemp = Image.FromStream(memoryStream, true, false)) - { - graphics.DrawImage(imgtemp, x, y, singleSize, singleSize); - } - } + innerWand.CurrentImage.ResizeImage(singleSize, singleSize); + wand.CurrentImage.CompositeImage(innerWand, CompositeOperator.OverCompositeOp, x, y); } index++; } } - } - return GetStream(img); + return GetStream(wand, appPaths); + } } private static Task GetSingleImage(List files, IFileSystem fileSystem) @@ -130,29 +96,16 @@ namespace MediaBrowser.Server.Implementations.Photos return Task.FromResult(fileSystem.GetFileStream(files[0], FileMode.Open, FileAccess.Read, FileShare.Read)); } - private static Stream GetStream(Image image) + private static Stream GetStream(MagickWand image, IApplicationPaths appPaths) { - var ms = new MemoryStream(); + var tempFile = Path.Combine(appPaths.TempDirectory, Guid.NewGuid().ToString("N") + ".png"); - image.Save(ms, ImageFormat.Png); + Directory.CreateDirectory(Path.GetDirectoryName(tempFile)); - ms.Position = 0; + image.CurrentImage.CompressionQuality = 100; + image.SaveImage(tempFile); - return ms; - } - - private static async Task GetImage(string file, IFileSystem fileSystem) - { - using (var fileStream = fileSystem.GetFileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, true)) - { - var memoryStream = new MemoryStream(); - - await fileStream.CopyToAsync(memoryStream).ConfigureAwait(false); - - memoryStream.Position = 0; - - return Image.FromStream(memoryStream, true, false); - } + return File.OpenRead(tempFile); } } } diff --git a/MediaBrowser.Server.Implementations/Photos/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/DynamicImageProvider.cs index f3e48c412..f93153c9c 100644 --- a/MediaBrowser.Server.Implementations/Photos/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/DynamicImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; @@ -17,11 +18,8 @@ namespace MediaBrowser.Server.Implementations.Photos private readonly IUserManager _userManager; private readonly ILibraryManager _libraryManager; - public MusicDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IUserManager userManager, ILibraryManager libraryManager) - : base(fileSystem, providerManager) + public MusicDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) { - _userManager = userManager; - _libraryManager = libraryManager; } protected override async Task> GetItemsWithImages(IHasImages item) diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs index 6a3759f13..e36986970 100644 --- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using System.Collections.Generic; @@ -9,8 +10,7 @@ namespace MediaBrowser.Server.Implementations.Photos { public class PhotoAlbumImageProvider : BaseDynamicImageProvider, ICustomMetadataProvider { - public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager) - : base(fileSystem, providerManager) + public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) { } diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs index aa10e6635..d009a03ae 100644 --- a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; @@ -15,7 +16,7 @@ namespace MediaBrowser.Server.Implementations.Playlists { public class PlaylistImageProvider : BaseDynamicImageProvider, ICustomMetadataProvider { - public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager) : base(fileSystem, providerManager) + public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) { } diff --git a/MediaBrowser.Server.Mono/Imazen.WebP.dll.config b/MediaBrowser.Server.Mono/Imazen.WebP.dll.config deleted file mode 100644 index a7a2c1397..000000000 --- a/MediaBrowser.Server.Mono/Imazen.WebP.dll.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 232caba4f..d1398f02c 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -137,10 +137,6 @@ - - libwebp\osx\libwebp.5.dylib - PreserveNewest - MediaInfo\osx\libmediainfo.dylib PreserveNewest @@ -154,9 +150,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 49399ba4e..fac704b68 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -439,7 +439,7 @@ namespace MediaBrowser.Server.Startup.Common var innerProgress = new ActionableProgress(); innerProgress.RegisterAction(p => progress.Report((.75 * p) + 15)); - ImageProcessor = new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, MediaEncoder); + ImageProcessor = new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer); RegisterSingleInstance(ImageProcessor); TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager); diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 8df2d3ab0..e09200952 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -167,14 +167,70 @@ x86\SQLite.Interop.dll PreserveNewest - - libwebp.dll - PreserveNewest - MediaInfo.dll PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + From 4f5c8c0965fc9e8e4c068e548f0479c0345bcf60 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 21:17:19 -0500 Subject: [PATCH 005/169] update version --- SharedVersion.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index c4a874f64..6d1626266 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -//[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5518.5")] +[assembly: AssemblyVersion("3.0.*")] +//[assembly: AssemblyVersion("3.0.5518.5")] From 1bf2ef6385eefc786bea36765d7b9076a208d305 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 19 Feb 2015 21:59:14 -0500 Subject: [PATCH 006/169] added ImageMagickSharp.dll.config --- MediaBrowser.Server.Mono/ImageMagickSharp.dll.config | 4 ++++ MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 MediaBrowser.Server.Mono/ImageMagickSharp.dll.config diff --git a/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config b/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config new file mode 100644 index 000000000..c85d7d13a --- /dev/null +++ b/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index d1398f02c..cd010e1c1 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -150,6 +150,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest From fd096b695f8462a0deba3010c3e3035da4486546 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Feb 2015 00:41:42 -0500 Subject: [PATCH 007/169] update image magick config --- MediaBrowser.Server.Mono/ImageMagickSharp.dll.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config b/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config index c85d7d13a..6c9493a65 100644 --- a/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config +++ b/MediaBrowser.Server.Mono/ImageMagickSharp.dll.config @@ -1,4 +1,4 @@ - + \ No newline at end of file From 891a55924aba425b75815a5c5f76b9a1ebc442d3 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Feb 2015 12:45:31 -0500 Subject: [PATCH 008/169] update ImageMagickSharp --- .../MediaBrowser.Server.Implementations.csproj | 5 +++-- MediaBrowser.Server.Implementations/packages.config | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 91a886221..a6714fc6e 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -45,8 +45,9 @@ v4.5 - - ..\packages\ImageMagickSharp.1.0.0.0\lib\net45\ImageMagickSharp.dll + + False + ..\packages\ImageMagickSharp.1.0.0.1\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index d4aedc770..97b8917ad 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index e657edb16..6d9ead15a 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.575 + 3.0.576 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 eb940484c..305db5a1f 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.575 + 3.0.576 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 31301e176..9305fe51c 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.575 + 3.0.576 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 dca42fed7..cc7979590 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.575 + 3.0.576 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 - + From fc98351abf629b29f4d3f277727836b33196656a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Feb 2015 13:27:01 -0500 Subject: [PATCH 009/169] add language to tvdb series search --- .../TV/TvdbSeriesProvider.cs | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index 0f7a9f7d8..c644da0b8 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -52,17 +52,16 @@ namespace MediaBrowser.Providers.TV Current = this; } - private const string RootUrl = "http://www.thetvdb.com/api/"; - private const string SeriesQuery = "GetSeries.php?seriesname={0}"; + private const string SeriesSearchUrl = "http://www.thetvdb.com/api/GetSeries.php?seriesname={0}&language={1}"; private const string SeriesGetZip = "http://www.thetvdb.com/api/{0}/series/{1}/all/{2}.zip"; public async Task> GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken) { var seriesId = searchInfo.GetProviderId(MetadataProviders.Tvdb); - if (string.IsNullOrEmpty(seriesId)) + if (string.IsNullOrWhiteSpace(seriesId)) { - return await FindSeries(searchInfo.Name, cancellationToken).ConfigureAwait(false); + return await FindSeries(searchInfo.Name, searchInfo.MetadataLanguage, cancellationToken).ConfigureAwait(false); } var metadata = await GetMetadata(searchInfo, cancellationToken).ConfigureAwait(false); @@ -92,14 +91,14 @@ namespace MediaBrowser.Providers.TV var seriesId = itemId.GetProviderId(MetadataProviders.Tvdb); - if (string.IsNullOrEmpty(seriesId)) + if (string.IsNullOrWhiteSpace(seriesId)) { seriesId = itemId.Identities .Where(id => id.Type == MetadataProviders.Tvdb.ToString()) .Select(id => id.Id) .FirstOrDefault(); - if (string.IsNullOrEmpty(seriesId)) + if (string.IsNullOrWhiteSpace(seriesId)) { var srch = await GetSearchResults(itemId, cancellationToken).ConfigureAwait(false); @@ -114,7 +113,7 @@ namespace MediaBrowser.Providers.TV cancellationToken.ThrowIfCancellationRequested(); - if (!string.IsNullOrEmpty(seriesId)) + if (!string.IsNullOrWhiteSpace(seriesId)) { await EnsureSeriesInfo(seriesId, itemId.MetadataLanguage, cancellationToken).ConfigureAwait(false); @@ -282,29 +281,30 @@ namespace MediaBrowser.Providers.TV /// Finds the series. /// /// The name. + /// The language. /// The cancellation token. /// Task{System.String}. - private async Task> FindSeries(string name, CancellationToken cancellationToken) + private async Task> FindSeries(string name, string language, CancellationToken cancellationToken) { - var results = (await FindSeriesInternal(name, cancellationToken).ConfigureAwait(false)).ToList(); + var results = (await FindSeriesInternal(name, language, cancellationToken).ConfigureAwait(false)).ToList(); if (results.Count == 0) { var parsedName = _libraryManager.ParseName(name); var nameWithoutYear = parsedName.Name; - if (!string.IsNullOrEmpty(nameWithoutYear) && !string.Equals(nameWithoutYear, name, StringComparison.OrdinalIgnoreCase)) + if (!string.IsNullOrWhiteSpace(nameWithoutYear) && !string.Equals(nameWithoutYear, name, StringComparison.OrdinalIgnoreCase)) { - results = (await FindSeriesInternal(nameWithoutYear, cancellationToken).ConfigureAwait(false)).ToList(); + results = (await FindSeriesInternal(nameWithoutYear, language, cancellationToken).ConfigureAwait(false)).ToList(); } } return results; } - private async Task> FindSeriesInternal(string name, CancellationToken cancellationToken) + private async Task> FindSeriesInternal(string name, string language, CancellationToken cancellationToken) { - var url = string.Format(RootUrl + SeriesQuery, WebUtility.UrlEncode(name)); + var url = string.Format(SeriesSearchUrl, WebUtility.UrlEncode(name), language.ToLower()); var doc = new XmlDocument(); using (var results = await _httpClient.Get(new HttpRequestOptions @@ -683,7 +683,7 @@ namespace MediaBrowser.Providers.TV personInfo.Type = PersonType.Actor; - if (!string.IsNullOrEmpty(personInfo.Name)) + if (!string.IsNullOrWhiteSpace(personInfo.Name)) { series.AddPerson(personInfo); } @@ -1057,7 +1057,7 @@ namespace MediaBrowser.Providers.TV } var hasEpisodeChanged = true; - if (!string.IsNullOrEmpty(lastUpdateString) && lastTvDbUpdateTime.HasValue) + if (!string.IsNullOrWhiteSpace(lastUpdateString) && lastTvDbUpdateTime.HasValue) { long num; if (long.TryParse(lastUpdateString, NumberStyles.Any, _usCulture, out num)) @@ -1217,7 +1217,7 @@ namespace MediaBrowser.Providers.TV } } - if (!string.IsNullOrEmpty(tvdbId)) + if (!string.IsNullOrWhiteSpace(tvdbId)) { return new SeriesIdentity { Type = MetadataProviders.Tvdb.ToString(), Id = tvdbId }; } From d2b31461087d73ddd44690291dcbc8abbb0d789f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 20 Feb 2015 21:09:00 -0500 Subject: [PATCH 010/169] 3.0.5518.7 --- .../HttpServer/HttpListenerHost.cs | 2 +- SharedVersion.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index 6e8ba1c1d..4727e6035 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -410,7 +410,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer return "/mediabrowser/mediabrowser" + path; } - return "mediabrowser//mediabrowser" + path; + return "mediabrowser/mediabrowser/" + path; } /// diff --git a/SharedVersion.cs b/SharedVersion.cs index 6d1626266..d87daf5e3 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5518.5")] +//[assembly: AssemblyVersion("3.0.*")] +[assembly: AssemblyVersion("3.0.5518.7")] From 59e005e97609e5f5ea742a94cdd8ffa5c5013e88 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Feb 2015 02:32:49 -0500 Subject: [PATCH 011/169] add image magick libs --- .../Entities/ItemImageInfo.cs | 12 +++++ .../Providers/ItemLookupInfo.cs | 2 +- .../Dto/DtoService.cs | 3 +- .../MediaBrowser.ServerApplication.csproj | 51 +++++++++++++++++++ SharedVersion.cs | 4 +- 5 files changed, 68 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Controller/Entities/ItemImageInfo.cs b/MediaBrowser.Controller/Entities/ItemImageInfo.cs index 80aec6482..b36b818ff 100644 --- a/MediaBrowser.Controller/Entities/ItemImageInfo.cs +++ b/MediaBrowser.Controller/Entities/ItemImageInfo.cs @@ -5,10 +5,22 @@ namespace MediaBrowser.Controller.Entities { public class ItemImageInfo { + /// + /// Gets or sets the path. + /// + /// The path. public string Path { get; set; } + /// + /// Gets or sets the type. + /// + /// The type. public ImageType Type { get; set; } + /// + /// Gets or sets the date modified. + /// + /// The date modified. public DateTime DateModified { get; set; } } } diff --git a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs index 43b921092..649096a75 100644 --- a/MediaBrowser.Controller/Providers/ItemLookupInfo.cs +++ b/MediaBrowser.Controller/Providers/ItemLookupInfo.cs @@ -177,7 +177,7 @@ namespace MediaBrowser.Controller.Providers public class PersonLookupInfo : ItemLookupInfo { - + } public class MovieInfo : ItemLookupInfo diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index c49a24110..b15809738 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -911,7 +911,8 @@ namespace MediaBrowser.Server.Implementations.Dto // Prevent implicitly captured closure var currentItem = item; - foreach (var image in currentItem.ImageInfos.Where(i => !currentItem.AllowsMultipleImages(i.Type))) + foreach (var image in currentItem.ImageInfos.Where(i => !currentItem.AllowsMultipleImages(i.Type)) + .ToList()) { if (options.GetImageLimit(image.Type) > 0) { diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index e09200952..33ef823a6 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -231,6 +231,57 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/SharedVersion.cs b/SharedVersion.cs index d87daf5e3..b65e272bb 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -//[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5518.7")] +[assembly: AssemblyVersion("3.0.*")] +//[assembly: AssemblyVersion("3.0.5518.7")] From 3254df2c28b9faa303a12c10ea17c878a3c46c15 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 21 Feb 2015 08:37:27 -0500 Subject: [PATCH 012/169] update ImageMagickSharp --- MediaBrowser.Controller/Entities/UserView.cs | 5 ++ ...MediaBrowser.Server.Implementations.csproj | 2 +- .../packages.config | 2 +- MediaBrowser.ServerApplication/MainStartup.cs | 1 + .../MediaBrowser.ServerApplication.csproj | 65 +++++++++++++++++++ .../packages.config | 1 + 6 files changed, 74 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 5f7ca3d3f..84d7ea40d 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -45,6 +45,11 @@ namespace MediaBrowser.Controller.Entities return false; } + public override bool IsSaveLocalMetadataEnabled() + { + return true; + } + public override IEnumerable GetRecursiveChildren(User user, Func filter) { var result = GetItems(new InternalItemsQuery diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index a6714fc6e..509a274ee 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.1\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.2\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 97b8917ad..41df1b471 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index 6e8774eea..bc3bef1a0 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -40,6 +40,7 @@ namespace MediaBrowser.ServerApplication var applicationPath = currentProcess.MainModule.FileName; + ImageMagickSharp.Wand.SetMagickCoderModulePath(Path.Combine(Path.GetDirectoryName(applicationPath), "ImageMagickCoders", "x86")); var appPaths = CreateApplicationPaths(applicationPath, _isRunningAsService); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 33ef823a6..6f569718e 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -60,6 +60,10 @@ true + + False + ..\packages\ImageMagickSharp.1.0.0.2\lib\net45\ImageMagickSharp.dll + ..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll @@ -234,9 +238,15 @@ PreserveNewest + + PreserveNewest + PreserveNewest + + PreserveNewest + PreserveNewest @@ -246,24 +256,51 @@ PreserveNewest + + PreserveNewest + PreserveNewest PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest + + PreserveNewest + PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -273,6 +310,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -282,6 +322,24 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + @@ -352,4 +410,11 @@ --> + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + \ No newline at end of file diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index db8524463..ab51c30cc 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,5 +1,6 @@  + \ No newline at end of file From a0c6c259e691e42905a80112993cfd419c82138d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Feb 2015 00:45:29 -0500 Subject: [PATCH 013/169] dispose image magick environment on shutdown --- MediaBrowser.Model/Configuration/ServerConfiguration.cs | 2 -- .../Drawing/ImageProcessor.cs | 1 + .../Library/UserViewManager.cs | 3 +-- .../Localization/JavaScript/javascript.json | 2 +- MediaBrowser.ServerApplication/MainStartup.cs | 5 +++-- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index a28d3bd5d..bb57e9d47 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -203,8 +203,6 @@ namespace MediaBrowser.Model.Configuration public bool EnableAudioArchiveFiles { get; set; } public bool EnableVideoArchiveFiles { get; set; } - public bool EnableLegacyCollectionInView { get; set; } - /// /// Initializes a new instance of the class. /// diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index e942b183b..85eadd73c 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -822,6 +822,7 @@ namespace MediaBrowser.Server.Implementations.Drawing public void Dispose() { + Wand.CloseEnvironment(); _saveImageSizeTimer.Dispose(); } } diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index 71a360900..8b7cfa9f2 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -85,8 +85,7 @@ namespace MediaBrowser.Server.Implementations.Library list.Add(await GetUserView(CollectionType.Movies, string.Empty, cancellationToken).ConfigureAwait(false)); } - if (foldersWithViewTypes.Any(i => string.Equals(i.CollectionType, CollectionType.Games, StringComparison.OrdinalIgnoreCase)) - || _config.Configuration.EnableLegacyCollectionInView) + if (foldersWithViewTypes.Any(i => string.Equals(i.CollectionType, CollectionType.Games, StringComparison.OrdinalIgnoreCase))) { list.Add(await GetUserView(CollectionType.Games, string.Empty, cancellationToken).ConfigureAwait(false)); } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 09045be9b..691e17d78 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -69,7 +69,7 @@ "ButtonAddToCollection": "Add to collection", "HeaderSelectCertificatePath": "Select Certificate Path", "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", - "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to premium plugins, internet channel content, and more. {0}Learn more{1}.", + "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.", "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToMediaBrowserServerDashboard": "Welcome to the Media Browser Dashboard", "HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client", diff --git a/MediaBrowser.ServerApplication/MainStartup.cs b/MediaBrowser.ServerApplication/MainStartup.cs index bc3bef1a0..4bf51bc6b 100644 --- a/MediaBrowser.ServerApplication/MainStartup.cs +++ b/MediaBrowser.ServerApplication/MainStartup.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Implementations.Logging; +using ImageMagickSharp; +using MediaBrowser.Common.Implementations.Logging; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Startup.Common; @@ -40,7 +41,7 @@ namespace MediaBrowser.ServerApplication var applicationPath = currentProcess.MainModule.FileName; - ImageMagickSharp.Wand.SetMagickCoderModulePath(Path.Combine(Path.GetDirectoryName(applicationPath), "ImageMagickCoders", "x86")); + Wand.SetMagickCoderModulePath(Path.Combine(Path.GetDirectoryName(applicationPath), "ImageMagickCoders", "x86")); var appPaths = CreateApplicationPaths(applicationPath, _isRunningAsService); var logManager = new NlogManager(appPaths.LogDirectoryPath, "server"); From 20ceca1479f6d76dd78d961793056edccb7b05e6 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Feb 2015 14:05:29 -0500 Subject: [PATCH 014/169] Support season banners and posters with fanart --- MediaBrowser.Providers/TV/FanArtSeasonProvider.cs | 6 +++++- MediaBrowser.Providers/TV/FanartSeriesProvider.cs | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs index bbffd91b7..a5b12dad2 100644 --- a/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs +++ b/MediaBrowser.Providers/TV/FanArtSeasonProvider.cs @@ -57,7 +57,9 @@ namespace MediaBrowser.Providers.TV return new List { ImageType.Backdrop, - ImageType.Thumb + ImageType.Thumb, + ImageType.Banner, + ImageType.Primary }; } @@ -152,6 +154,8 @@ namespace MediaBrowser.Providers.TV private void AddImages(List list, FanartSeriesProvider.RootObject obj, int seasonNumber, CancellationToken cancellationToken) { + PopulateImages(list, obj.seasonposter, ImageType.Primary, 1000, 1426, seasonNumber); + PopulateImages(list, obj.seasonbanner, ImageType.Primary, 1000, 185, seasonNumber); PopulateImages(list, obj.seasonthumb, ImageType.Thumb, 500, 281, seasonNumber); PopulateImages(list, obj.showbackground, ImageType.Backdrop, 1920, 1080, seasonNumber); } diff --git a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs index e512e6af8..6af2aa38d 100644 --- a/MediaBrowser.Providers/TV/FanartSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/FanartSeriesProvider.cs @@ -1,5 +1,4 @@ -using System.Net; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; @@ -18,6 +17,7 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; +using System.Net; using System.Threading; using System.Threading.Tasks; From 084df0a20eebb54b79910d0201779fce2dab4b5f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Feb 2015 14:05:38 -0500 Subject: [PATCH 015/169] cloud sync progress --- .../Sync/ICloudSyncProvider.cs | 14 +++++++++++++ .../Sync/IServerSyncProvider.cs | 5 ++--- .../Sync/CloudSyncProvider.cs | 11 ++++++++-- .../Sync/MediaSync.cs | 20 +++++++++++++------ 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs b/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs index f9327a71c..dd7fda2c5 100644 --- a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs @@ -1,5 +1,7 @@ using MediaBrowser.Model.Sync; using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; namespace MediaBrowser.Controller.Sync { @@ -17,5 +19,17 @@ namespace MediaBrowser.Controller.Sync /// The user identifier. /// IEnumerable<SyncTarget>. IEnumerable GetSyncTargets(string userId); + + /// + /// Transfers the item file. + /// + /// The server identifier. + /// The item identifier. + /// The input file. + /// The path parts. + /// The target. + /// The cancellation token. + /// Task. + Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 8ef54fd43..d11dd9d73 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -31,12 +31,11 @@ namespace MediaBrowser.Controller.Sync /// /// The server identifier. /// The item identifier. + /// The input file. /// The path parts. - /// The name. - /// Type of the file. /// The target. /// The cancellation token. /// Task. - Task TransferItemFile(string serverId, string itemId, string[] pathParts, string name, ItemFileType fileType, SyncTarget target, CancellationToken cancellationToken); + Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs index 59713b138..37caa561e 100644 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs @@ -34,6 +34,11 @@ namespace MediaBrowser.Server.Implementations.Sync get { return "Cloud Sync"; } } + private ICloudSyncProvider GetProvider(SyncTarget target) + { + return null; + } + public Task> GetServerItemIds(string serverId, SyncTarget target, CancellationToken cancellationToken) { throw new NotImplementedException(); @@ -44,9 +49,11 @@ namespace MediaBrowser.Server.Implementations.Sync throw new NotImplementedException(); } - public Task TransferItemFile(string serverId, string itemId, string[] pathParts, string name, ItemFileType fileType, SyncTarget target, CancellationToken cancellationToken) + public Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken) { - throw new NotImplementedException(); + var provider = GetProvider(target); + + return provider.TransferItemFile(serverId, itemId, inputFile, pathParts, target, cancellationToken); } } } diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 099e45a6e..349e6aa1d 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Progress; using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Sync; using System; @@ -29,10 +30,6 @@ namespace MediaBrowser.Server.Implementations.Sync { var serverId = _appHost.SystemId; - await SyncData(provider, serverId, target, cancellationToken).ConfigureAwait(false); - progress.Report(2); - - // Do the data sync twice so the server knows what was removed from the device await SyncData(provider, serverId, target, cancellationToken).ConfigureAwait(false); progress.Report(3); @@ -44,6 +41,10 @@ namespace MediaBrowser.Server.Implementations.Sync progress.Report(totalProgress); }); await GetNewMedia(provider, target, serverId, innerProgress, cancellationToken); + + // Do the data sync twice so the server knows what was removed from the device + await SyncData(provider, serverId, target, cancellationToken).ConfigureAwait(false); + progress.Report(100); } @@ -135,8 +136,10 @@ namespace MediaBrowser.Server.Implementations.Sync try { - //await provider.TransferItemFile(serverId, libraryItem.Id, internalSyncJobItem.OutputPath, target, cancellationToken) - // .ConfigureAwait(false); + string[] pathParts = GetPathParts(serverId, libraryItem); + + await provider.TransferItemFile(serverId, libraryItem.Id, internalSyncJobItem.OutputPath, pathParts, target, cancellationToken) + .ConfigureAwait(false); progress.Report(92); @@ -170,5 +173,10 @@ namespace MediaBrowser.Server.Implementations.Sync { return provider.DeleteItem(serverId, itemId, target, cancellationToken); } + + private string[] GetPathParts(string serverId, BaseItemDto item) + { + return null; + } } } From e0228ea065d06fbfbb2a5c45025cc2a5fd7a69e1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Feb 2015 17:20:52 -0500 Subject: [PATCH 016/169] update translations --- .../Localization/JavaScript/nb.json | 302 +++++------ .../Localization/JavaScript/nl.json | 16 +- .../Localization/JavaScript/pt_BR.json | 2 +- .../Localization/Server/fr.json | 2 +- .../Localization/Server/it.json | 2 +- .../Localization/Server/nb.json | 510 +++++++++--------- .../Localization/Server/nl.json | 20 +- 7 files changed, 427 insertions(+), 427 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index a8b645653..6c8ea35bf 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -33,11 +33,11 @@ "MessageKeyEmailedTo": "N\u00f8kkel sendt til {0}", "MessageKeysLinked": "N\u00f8kler lenket.", "HeaderConfirmation": "Bekreftelse", - "MessageKeyUpdated": "Takk. Din supporter n\u00f8kkel har blitt oppdatert.", - "MessageKeyRemoved": "Takk. Din supporter n\u00f8kkel har blitt fjernet.", - "ErrorLaunchingChromecast": "Det var en error ved \u00e5 starte Chromecast. Vennligst forsikre deg om at enheten har korrekt forbindelse mot ditt tr\u00e5dl\u00f8se nettverk.", + "MessageKeyUpdated": "Takk. Din supportern\u00f8kkel har blitt oppdatert.", + "MessageKeyRemoved": "Takk. Din supportern\u00f8kkel har blitt fjernet.", + "ErrorLaunchingChromecast": "Det var en feil ved start av Chromecast. Vennligst forsikre deg om at enheten har korrekt forbindelse til ditt tr\u00e5dl\u00f8se nettverk.", "HeaderSearch": "S\u00f8k", - "ValueDateCreated": "Date created: {0}", + "ValueDateCreated": "Dato opprettet: {0}", "LabelArtist": "Artist", "LabelMovie": "Film", "LabelMusicVideo": "Musikk Video", @@ -46,46 +46,46 @@ "LabelStopping": "Stoppe", "LabelCancelled": "(kansellert)", "LabelFailed": "(Feilet)", - "ButtonHelp": "Help", - "ButtonSave": "lagre", + "ButtonHelp": "Hjelp", + "ButtonSave": "Lagre", "ButtonDownload": "Nedlasting", - "SyncJobStatusQueued": "Queued", - "SyncJobStatusConverting": "Converting", - "SyncJobStatusFailed": "Failed", - "SyncJobStatusCancelled": "Cancelled", - "SyncJobStatusCompleted": "Synced", - "SyncJobStatusReadyToTransfer": "Ready to Transfer", - "SyncJobStatusTransferring": "Transferring", - "SyncJobStatusCompletedWithError": "Synced with errors", - "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", - "LabelCollection": "Collection", - "HeaderAddToCollection": "Legg Til I Samling", - "NewCollectionNameExample": "Eksempel: Star Wars Samling", + "SyncJobStatusQueued": "I k\u00f8", + "SyncJobStatusConverting": "Konverterer", + "SyncJobStatusFailed": "Feilet", + "SyncJobStatusCancelled": "Avbrutt", + "SyncJobStatusCompleted": "Synkronisert", + "SyncJobStatusReadyToTransfer": "Klar til overf\u00f8ring", + "SyncJobStatusTransferring": "Overf\u00f8rer", + "SyncJobStatusCompletedWithError": "Synkronisert med feil", + "SyncJobItemStatusReadyToTransfer": "Klar til overf\u00f8ring", + "LabelCollection": "Samling", + "HeaderAddToCollection": "Legg Til i Samling", + "NewCollectionNameExample": "Eksempel: Star Wars-samling", "OptionSearchForInternetMetadata": "S\u00f8k p\u00e5 internet for artwork og metadata", "LabelSelectCollection": "Velg samling:", - "HeaderDevices": "Devices", - "ButtonScheduledTasks": "Scheduled tasks", - "MessageItemsAdded": "Items added", - "ButtonAddToCollection": "Add to collection", - "HeaderSelectCertificatePath": "Select Certificate Path", - "ConfirmMessageScheduledTaskButton": "This operation normally runs automatically as a scheduled task. It can also be run manually here. To configure the scheduled task, see:", - "HeaderSupporterBenefit": "A supporter membership provides additional benefits such as access to premium plugins, internet channel content, and more. {0}Learn more{1}.", - "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "HeaderDevices": "Enheter", + "ButtonScheduledTasks": "Planlagte oppgaver", + "MessageItemsAdded": "Elementer lagt til", + "ButtonAddToCollection": "Legg til samling", + "HeaderSelectCertificatePath": "Velg sti for sertifikat:", + "ConfirmMessageScheduledTaskButton": "Dette kj\u00f8res vanligvis automatisk som en planlagt oppgave. Den kan ogs\u00e5 kj\u00f8res manuelt herfra. For \u00e5 konfigurere planlagte oppgaver, se:", + "HeaderSupporterBenefit": "St\u00f8ttemedlemskap gir ytterligere fordeler som for eksempel tilgang til premium plugins, internett-kanaler og mer. {0}L\u00e6r mer{1}.", + "LabelSyncNoTargetsHelp": "Det ser ikke ut til at du har noen applikasjoner som st\u00f8tter synkronisering.", "HeaderWelcomeToMediaBrowserServerDashboard": "Velkommen til Media Browser Dashbord", - "HeaderWelcomeToMediaBrowserWebClient": "Velkommen til Media Browser Web Klient", + "HeaderWelcomeToMediaBrowserWebClient": "Velkommen til Media Browser Webklient", "ButtonTakeTheTour": "Bli med p\u00e5 omvisning", - "HeaderWelcomeBack": "Welcome back!", - "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", - "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "HeaderWelcomeBack": "Velkommen tilbake!", + "ButtonTakeTheTourToSeeWhatsNew": "Ta en titt p\u00e5 hva som er nytt", + "MessageNoSyncJobsFound": "Ingen synkroniseringsjobber funnet. Opprett en synkroniseringsjobb ved hjelp av Synkroniseringsknappene i biblioteket", "HeaderLibraryAccess": "Bibliotek tilgang", "HeaderChannelAccess": "Kanal tilgang", - "HeaderDeviceAccess": "Device Access", - "HeaderSelectDevices": "Select Devices", - "ButtonCancelItem": "Cancel item", - "ButtonQueueForRetry": "Queue for retry", - "ButtonReenable": "Re-enable", + "HeaderDeviceAccess": "Enhetstilgang", + "HeaderSelectDevices": "Velg enheter", + "ButtonCancelItem": "Avbryt element", + "ButtonQueueForRetry": "K\u00f8 for \u00e5 pr\u00f8ve igjen", + "ButtonReenable": "Skru p\u00e5 igjen", "ButtonLearnMore": "L\u00e6re mer", - "SyncJobItemStatusSyncedMarkForRemoval": "Marked for removal", + "SyncJobItemStatusSyncedMarkForRemoval": "Markert for fjerning", "LabelAbortedByServerShutdown": "(Avbrutt av server shutdown)", "LabelScheduledTaskLastRan": "Sist kj\u00f8rt {0}, tar {1}.", "HeaderDeleteTaskTrigger": "Slett Oppgave Trigger", @@ -97,16 +97,16 @@ "LabelFree": "Gratis", "HeaderSelectAudio": "Velg Lyd", "HeaderSelectSubtitles": "Velg Undertekst", - "ButtonMarkForRemoval": "Remove from device", - "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Use high quality for the maximum supported quality by the device. Medium and low quality will reduce the allowed bitrate. Original will sync the original file, regardless of whether the device is capable of playing it or not.", + "ButtonMarkForRemoval": "Fjern fra enheten.", + "ButtonUnmarkForRemoval": "Avbryt fjerning fra enheten", + "LabelSyncQualityHelp": "Bruk h\u00f8y kvalitet for den aller beste kvaliteten din enhet st\u00f8tter. Medium og Lav kvalitet vil redusere tillatt bitrate. Original vil synkronisere den originale filen uavhengig om enheten er i stand til \u00e5 spille den eller ikke.", "LabelDefaultStream": "(Standard)", "LabelForcedStream": "(Tvunget)", "LabelDefaultForcedStream": "(Standard\/Tvunget)", "LabelUnknownLanguage": "Ukjent spr\u00e5k", - "MessageConfirmSyncJobItemCancellation": "Are you sure you wish to cancel this item?", + "MessageConfirmSyncJobItemCancellation": "Er du sikker p\u00e5 at du vil kansellere dette elementet?", "ButtonMute": "Mute", - "ButtonUnmute": "unmute", + "ButtonUnmute": "Lyd p\u00e5", "ButtonStop": "Stopp", "ButtonNextTrack": "Neste Spor", "ButtonPause": "Pause", @@ -123,10 +123,10 @@ "ButtonViewNotifications": "Se meldinger.", "ButtonMarkTheseRead": "Maker disse som lest", "ButtonClose": "Lukk", - "LabelAllPlaysSentToPlayer": "All avspill vil bli sendt til den valgte spilleren.", + "LabelAllPlaysSentToPlayer": "Alt som spilles vil bli sendt til den valgte spilleren.", "MessageInvalidUser": "Ugyldig brukernavn eller passord. Vennligst pr\u00f8v igjen.", "HeaderLoginFailure": "P\u00e5loggingsfeil", - "HeaderAllRecordings": "Alle Opptak", + "HeaderAllRecordings": "Alle opptak", "RecommendationBecauseYouLike": "Fordi du liker {0}", "RecommendationBecauseYouWatched": "Fordi du s\u00e5 {0}", "RecommendationDirectedBy": "Regissert av {0}", @@ -164,8 +164,8 @@ "StatusRecordingProgram": "Opptak {0}", "StatusWatchingProgram": "Ser P\u00e5 {0}", "HeaderSplitMedia": "Del Media Fra Hverandre", - "MessageConfirmSplitMedia": "Er du sikker at du vil splitte media kilden i separerte elementer?", - "HeaderError": "Error", + "MessageConfirmSplitMedia": "Er du sikker at du vil splitte mediakilden i separerte elementer?", + "HeaderError": "Feil", "MessagePleaseSelectOneItem": "Vennligst velg minst ett element.", "MessagePleaseSelectTwoItems": "Vennligst velg minst to elementer.", "MessageTheFollowingItemsWillBeGrouped": "F\u00f8lgende titler vil bli gruppert til ett element:", @@ -176,17 +176,17 @@ "HeaderLatestMedia": "Siste Media", "ButtonMoreItems": "Mer...", "ButtonMore": "Mer", - "HeaderFavoriteMovies": "Favoritt Filmer", - "HeaderFavoriteShows": "Favoritt Serier", - "HeaderFavoriteEpisodes": "Favoritt Episoder", - "HeaderFavoriteGames": "Favoritt Spill", + "HeaderFavoriteMovies": "Favorittfilmer", + "HeaderFavoriteShows": "Favorittserier", + "HeaderFavoriteEpisodes": "Favorittepisoder", + "HeaderFavoriteGames": "Favorittspill", "HeaderRatingsDownloads": "Rangering \/ Nedlasting", "HeaderConfirmProfileDeletion": "Bekreft sletting av profil", "MessageConfirmProfileDeletion": "Er du sikker p\u00e5 at du vil slette denne profilen?", - "HeaderSelectServerCachePath": "Velg Server Cache Sti", - "HeaderSelectTranscodingPath": "Velg Transcoding Midlertidig Sti", - "HeaderSelectImagesByNamePath": "Velg Bilder etter Navn Sti", - "HeaderSelectMetadataPath": "Velg Metadata Sti", + "HeaderSelectServerCachePath": "Velg Sti for Server Cache", + "HeaderSelectTranscodingPath": "Velg Sti for Midlertidig Transcoding", + "HeaderSelectImagesByNamePath": "Velg Sti for Bilder etter Navn", + "HeaderSelectMetadataPath": "Velg Sti for Metadata", "HeaderSelectServerCachePathHelp": "Bla eller skriv stien som skal brukes for server cache filer. Mappen m\u00e5 v\u00e6re skrivbar.", "HeaderSelectTranscodingPathHelp": "Bla eller skriv stien som skal brukes for transcoding av midlertidige filer. Mappen m\u00e5 v\u00e6re skrivbar.", "HeaderSelectImagesByNamePathHelp": "Bla eller skriv stien til dine elementer etter navn mappe. Mappen m\u00e5 v\u00e6re skrivbar.", @@ -194,7 +194,7 @@ "HeaderSelectChannelDownloadPath": "Velg Nedlastingsti For Kanal", "HeaderSelectChannelDownloadPathHelp": "Bla igjennom eller skriv en sti som brukes for lagring av cache filer. Mappen m\u00e5 v\u00e6re skrivbar.", "OptionNewCollection": "Ny...", - "ButtonAdd": "Legg Til", + "ButtonAdd": "Legg til", "ButtonRemove": "Fjern", "LabelChapterDownloaders": "Kapittel nedlastinger:", "LabelChapterDownloadersHelp": "Aktiver og ranger din foretrukne kapittel nedlasting i f\u00f8lgende prioritet. Lavere prioritet nedlastinger vil kun bli brukt for \u00e5 fylle inn manglende informasjon", @@ -212,7 +212,7 @@ "MessageDuplicatesWillBeDeleted": "I tillegg vil f\u00f8lgende duplisering bli slettet:", "MessageFollowingFileWillBeMovedFrom": "F\u00f8lgende fil har blitt flyttet fra:", "MessageDestinationTo": "til:", - "HeaderSelectWatchFolder": "Velg Se Mappe", + "HeaderSelectWatchFolder": "Velg overv\u00e5ket mappe", "HeaderSelectWatchFolderHelp": "S\u00f8k igjennom eller velg sti for din Se mappe. Mappen m\u00e5 v\u00e6re skrivbar.", "OrganizePatternResult": "Resultat: {0}", "HeaderRestart": "Omstart", @@ -220,8 +220,8 @@ "MessageConfirmRestart": "Er du sikker p\u00e5 at du vil gi Media Browser Server en omstart?", "MessageConfirmShutdown": "Er du sikker p\u00e5 du vil sl\u00e5 av Media Browser Server?", "ButtonUpdateNow": "Oppdater N\u00e5", - "ValueItemCount": "{0} item", - "ValueItemCountPlural": "{0} items", + "ValueItemCount": "{0} element", + "ValueItemCountPlural": "{0} elementer", "NewVersionOfSomethingAvailable": "En ny versjon av {0} er tilgjengelig!", "VersionXIsAvailableForDownload": "Vesjon {0} er n\u00e5 tilgjengelig for nedlasting.", "LabelVersionNumber": "Versjon {0}", @@ -230,10 +230,10 @@ "LabelPlayMethodDirectPlay": "Direkte Avspilling", "LabelAudioCodec": "Lyd: {0}", "LabelVideoCodec": "Video: {0}", - "LabelLocalAccessUrl": "Local access: {0}", + "LabelLocalAccessUrl": "Lokal tilgang: {0}", "LabelRemoteAccessUrl": "Ekstern tilgang: {0}", - "LabelRunningOnPort": "Running on http port {0}.", - "LabelRunningOnPorts": "Running on http port {0}, and https port {1}.", + "LabelRunningOnPort": "Kj\u00f8rer p\u00e5 http port {0}.", + "LabelRunningOnPorts": "Kj\u00f8rer p\u00e5 http port {0} og https port {1}.", "HeaderLatestFromChannel": "Siste fra {0}", "LabelUnknownLanaguage": "Ukjent Spr\u00e5k", "HeaderCurrentSubtitles": "N\u00e5v\u00e6rende undertekster", @@ -242,11 +242,11 @@ "ButtonRemoteControl": "Ekstern Kontroll", "HeaderLatestTvRecordings": "Siste Opptak", "ButtonOk": "Ok", - "ButtonCancel": "avbryt", + "ButtonCancel": "Avbryt", "ButtonRefresh": "Oppdater", "LabelCurrentPath": "N\u00e5v\u00e6rende sti:", "HeaderSelectMediaPath": "Velg Media Sti", - "HeaderSelectPath": "Select Path", + "HeaderSelectPath": "Velg sti", "ButtonNetwork": "Nettverk", "MessageDirectoryPickerInstruction": "Nettverksti kan skrives inn manuelt i tilfelle Nettverk-knappen ikke klarer \u00e5 lokalisere enhetene dine. For eksempel {0} eller {1}.", "HeaderMenu": "Meny", @@ -257,11 +257,11 @@ "ButtonResume": "Fortsette", "HeaderScenes": "Scener", "HeaderAudioTracks": "Lydspor", - "HeaderLibraries": "Libraries", + "HeaderLibraries": "Bibliotek", "HeaderSubtitles": "Undertekster", - "HeaderVideoQuality": "Video Kvalitet", - "MessageErrorPlayingVideo": "Det oppstod en error ved avspilling av vidoen.", - "MessageEnsureOpenTuner": "Vennligst s\u00f8rg for at det minst er en \u00e5pen tuner tilgjengelig.", + "HeaderVideoQuality": "Videookvalitet", + "MessageErrorPlayingVideo": "Det oppstod en feil ved avspilling av vidoen.", + "MessageEnsureOpenTuner": "Vennligst s\u00f8rg for at det minst er \u00e9n \u00e5pen tuner tilgjengelig.", "ButtonHome": "Hjem", "ButtonDashboard": "Dashbord", "ButtonReports": "Rapporter", @@ -271,11 +271,11 @@ "HeaderAlbum": "Album", "HeaderAlbumArtist": "Album Artist", "HeaderArtist": "Artist", - "LabelAddedOnDate": "Lag Til {0}", + "LabelAddedOnDate": "Lagt til {0}", "ButtonStart": "Start", "HeaderChannels": "Kanaler", - "HeaderMediaFolders": "Media Mapper", - "HeaderBlockItemsWithNoRating": "Block content with no rating information:", + "HeaderMediaFolders": "Mediemapper", + "HeaderBlockItemsWithNoRating": "Blokker innhold uten rating:", "OptionBlockOthers": "Andre", "OptionBlockTvShows": "TV Serier", "OptionBlockTrailers": "Trailere", @@ -285,10 +285,10 @@ "OptionBlockGames": "Spill", "OptionBlockLiveTvPrograms": "Live TV Programmer", "OptionBlockLiveTvChannels": "Live TV Kanaler", - "OptionBlockChannelContent": "Internet Kanal Innhold", + "OptionBlockChannelContent": "Innhold fra Internettkanal", "ButtonRevoke": "Tilbakekall", - "MessageConfirmRevokeApiKey": "Er du sikker p\u00e5 at du vil ta tilbakekalle denne api n\u00f8kkelen? Applikasjonens forbindelse til Media Browser vil bli br\u00e5tt avsluttet.", - "HeaderConfirmRevokeApiKey": "Tilbakekall Api N\u00f8kkel", + "MessageConfirmRevokeApiKey": "Er du sikker p\u00e5 at du vil tilbakekalle denne API-n\u00f8kkelen? Applikasjonens forbindelse til Media Browser vil bli avsluttet umiddelbart.", + "HeaderConfirmRevokeApiKey": "Tilbakekall API-n\u00f8kkel", "ValueContainer": "Kontainer: {0}", "ValueAudioCodec": "Lyd Kodek: {0}", "ValueVideoCodec": "Video Kodek: {0}", @@ -297,24 +297,24 @@ "LabelAll": "Alle", "HeaderDeleteImage": "Slett bilde", "MessageFileNotFound": "Fant ikke fil.", - "MessageFileReadError": "En error oppstod n\u00e5r filen skulle leses", + "MessageFileReadError": "En feil oppstod n\u00e5r filen skulle leses.", "ButtonNextPage": "Neste Side", "ButtonPreviousPage": "Forrige Side", "ButtonMoveLeft": "Flytt til venstre", "ButtonMoveRight": "Flytt til h\u00f8yre", "ButtonBrowseOnlineImages": "Bla igjennom bilder online", "HeaderDeleteItem": "Slett element", - "ConfirmDeleteItem": "Deleting this item will delete it from both the file system and your media library. Are you sure you wish to continue?", + "ConfirmDeleteItem": "Sletter elementet fra b\u00e5de filsystemet og biblioteket. Er du sikker p\u00e5 at du vil fortsette?", "MessagePleaseEnterNameOrId": "Vennligst skriv ett navn eller en ekstern id.", "MessageValueNotCorrect": "Verdien som ble skrevet er ikke korrekt. Vennligst pr\u00f8v igjen.", "MessageItemSaved": "Element lagret.", - "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Please accept the terms of service before continuing.", + "MessagePleaseAcceptTermsOfServiceBeforeContinuing": "Vennligst aksepter tjenestevilk\u00e5rene f\u00f8r du fortsetter.", "OptionEnded": "Avsluttet", "OptionContinuing": "Fortsetter", "OptionOff": "Av", "OptionOn": "P\u00e5", "ButtonSettings": "Innstillinger", - "ButtonUninstall": "Uninstall", + "ButtonUninstall": "Avinstaller", "HeaderFields": "Felt", "HeaderFieldsHelp": "Skyv ett felt til \"av\" for \u00e5 l\u00e5se det og for \u00e5 unng\u00e5 at data blir forandret.", "HeaderLiveTV": "Live TV", @@ -336,14 +336,14 @@ "OptionPeople": "Person", "OptionRuntime": "Spilletid", "OptionProductionLocations": "Produksjonsplass", - "OptionBirthLocation": "F\u00f8dselsplass", + "OptionBirthLocation": "F\u00f8dested", "LabelAllChannels": "Alle kanaler", "LabelLiveProgram": "LIVE", "LabelNewProgram": "NY", "LabelPremiereProgram": "PREMIERE", "LabelHDProgram": "HD", - "HeaderChangeFolderType": "Change Content Type", - "HeaderChangeFolderTypeHelp": "To change the type, please remove and rebuild the folder with the new type.", + "HeaderChangeFolderType": "Endre innholdstype", + "HeaderChangeFolderTypeHelp": "For \u00e5 endre type, fjern og opprett ny mappe med den nye typen.", "HeaderAlert": "Varsling", "MessagePleaseRestart": "Vennligst utf\u00f8r en omstart for \u00e5 fullf\u00f8re oppdatering.", "ButtonRestart": "Restart", @@ -353,7 +353,7 @@ "ButtonSignOut": "Logg Ut", "ButtonMyProfile": "Min Profil", "ButtonMyPreferences": "Mine Preferanser", - "MessageBrowserDoesNotSupportWebSockets": "Denne nettleseren st\u00f8tter ikke web sockets. For en bedre brukeropplevelse pr\u00f8v en nyere nettleser som eksemepel Chrome, Firefox, IE10+, Safari (IOS) eller Opera.", + "MessageBrowserDoesNotSupportWebSockets": "Denne nettleseren st\u00f8tter ikke web sockets. For en bedre brukeropplevelse pr\u00f8v en nyere nettleser som for eksemepel Chrome, Firefox, IE10+, Safari (IOS) eller Opera.", "LabelInstallingPackage": "Installerer {0}", "LabelPackageInstallCompleted": "{0} installering fullf\u00f8rt.", "LabelPackageInstallFailed": "{0} installasjon feilet.", @@ -370,7 +370,7 @@ "TabHelp": "Hjelp", "TabScheduledTasks": "Planlagte Oppgaver", "ButtonFullscreen": "Fullskjerm", - "ButtonAudioTracks": "Lyd spor", + "ButtonAudioTracks": "Lydspor", "ButtonSubtitles": "Undertekster", "ButtonScenes": "Scener", "ButtonQuality": "Kvalitet", @@ -378,7 +378,7 @@ "HeaderSelectPlayer": "Velg Spiller", "ButtonSelect": "Velg", "ButtonNew": "Ny", - "MessageInternetExplorerWebm": "For det beste resultatet med Internet Explorer anbefales det at du installerer WebM avspillings programtillegg.", + "MessageInternetExplorerWebm": "For det beste resultatet med Internet Explorer anbefales det at du installerer WebM programtillegg for videoavspilling.", "HeaderVideoError": "Video Error", "ButtonAddToPlaylist": "Legg til spilleliste", "HeaderAddToPlaylist": "Legg til Spilleliste", @@ -391,14 +391,14 @@ "ButtonViewSeriesRecording": "Se serie opptak", "ValueOriginalAirDate": "Original lanseringsdato: {0}", "ButtonRemoveFromPlaylist": "Fjern fra spilleliste", - "HeaderSpecials": "Spescials", + "HeaderSpecials": "Specials", "HeaderTrailers": "Trailere", "HeaderAudio": "Lyd", "HeaderResolution": "Oppl\u00f8sning", "HeaderVideo": "Video", "HeaderRuntime": "Spilletid", "HeaderCommunityRating": "Fellesskap anmeldelse", - "HeaderParentalRating": "Foreldresensur:", + "HeaderParentalRating": "Foreldresensur", "HeaderReleaseDate": "Utgivelsesdato", "HeaderDateAdded": "Dato lagt til", "HeaderSeries": "Serier", @@ -442,41 +442,41 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Tittel visnings rekkef\u00f8lge:", "OptionSortName": "Sorterings navn", - "OptionReleaseDate": "Lanserings dato", + "OptionReleaseDate": "Lanseringsdato", "LabelSeasonNumber": "Sesong nummer:", "LabelDiscNumber": "Disk nummer", - "LabelParentNumber": "Parent number", + "LabelParentNumber": "Forelder-ID", "LabelEpisodeNumber": "Episode nummer:", - "LabelTrackNumber": "Spor nummer", + "LabelTrackNumber": "Spor nummer:", "LabelNumber": "Nummer:", "LabelReleaseDate": "Utgivelsesdato:", "LabelEndDate": "Slutt dato:", "LabelYear": "\u00c5r:", "LabelDateOfBirth": "F\u00f8dseldato:", "LabelBirthYear": "F\u00f8dsels\u00e5r:", - "LabelBirthDate": "Birth date:", - "LabelDeathDate": "D\u00f8ds dato:", - "HeaderRemoveMediaLocation": "Fjern Media Mappe", + "LabelBirthDate": "F\u00f8dselsdato:", + "LabelDeathDate": "D\u00f8dsdato:", + "HeaderRemoveMediaLocation": "Fjern Mediamappe", "MessageConfirmRemoveMediaLocation": "Er du sikker p\u00e5 at du vil slette dette stedet??", - "HeaderRenameMediaFolder": "Fjern Media Mappe", + "HeaderRenameMediaFolder": "Endre navn p\u00e5 Mediamappe", "LabelNewName": "Nytt navn:", - "HeaderAddMediaFolder": "Legg til media-mappe", + "HeaderAddMediaFolder": "Legg til mediamappe", "HeaderAddMediaFolderHelp": "Navn (Filmer, Musikk, TV, etc):", - "HeaderRemoveMediaFolder": "Fjern Media Mappe", - "MessageTheFollowingLocationWillBeRemovedFromLibrary": "F\u00f8lgende media steder vil bli fjernet fra ditt bibliotek:", - "MessageAreYouSureYouWishToRemoveMediaFolder": "Er du sikker p\u00e5 at dul vil slette denne media mappen?", + "HeaderRemoveMediaFolder": "Fjern Mediamappe", + "MessageTheFollowingLocationWillBeRemovedFromLibrary": "F\u00f8lgende mapper med media vil bli fjernet fra ditt bibliotek:", + "MessageAreYouSureYouWishToRemoveMediaFolder": "Er du sikker p\u00e5 at dul vil slette denne media-mappen?", "ButtonRename": "Gi nytt navn", "ButtonChangeType": "Endre type", "HeaderMediaLocations": "Media Steder", - "LabelContentTypeValue": "Content type: {0}", + "LabelContentTypeValue": "Innholdstype {0}", "LabelPathSubstitutionHelp": "Valgfritt: Sti erstatter kan koble server stier til nettverkressurser som klienter har tilgang til for direkte avspilling.", - "FolderTypeUnset": "Unset (mixed content)", + "FolderTypeUnset": "Ikke bestemt (variert innhold)", "FolderTypeMovies": "Filmer", "FolderTypeMusic": "Musikk", - "FolderTypeAdultVideos": "Voksen videoer", + "FolderTypeAdultVideos": "Voksen-videoer", "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Musikk videoer", - "FolderTypeHomeVideos": "Hjemme videoer", + "FolderTypeMusicVideos": "Musikk-videoer", + "FolderTypeHomeVideos": "Hjemme-videoer", "FolderTypeGames": "Spill", "FolderTypeBooks": "B\u00f8ker", "FolderTypeTvShows": "TV", @@ -538,7 +538,7 @@ "ValueOneGame": "1 spill", "ValueGameCount": "{0} spill", "ValueOneAlbum": "1 album", - "ValueAlbumCount": "{0} albumer", + "ValueAlbumCount": "{0} album", "ValueOneSong": "1 sang", "ValueSongCount": "{0} sanger", "ValueOneMusicVideo": "1 musikkvideo", @@ -546,12 +546,12 @@ "HeaderOffline": "Offline", "HeaderUnaired": "Ikke sendt", "HeaderMissing": "Mangler", - "ButtonWebsite": "Nettsted:", + "ButtonWebsite": "Nettsted", "TooltipFavorite": "Favoritt", "TooltipLike": "Liker", "TooltipDislike": "Misliker", "TooltipPlayed": "Sett", - "ValueSeriesYearToPresent": "{0}-Tilgjengelig", + "ValueSeriesYearToPresent": "{0}-N\u00e5", "ValueAwards": "Priser: {0}", "ValueBudget": "Budsjett: {0}", "ValueRevenue": "Inntjening: {0}", @@ -592,7 +592,7 @@ "HeaderOtherItems": "Andre elementer", "ButtonFullReview": "Full anmeldelse", "ValueAsRole": "som {0}", - "ValueGuestStar": "Gjeste artist", + "ValueGuestStar": "Gjesteartist", "MediaInfoSize": "St\u00f8rrelse", "MediaInfoPath": "Sti", "MediaInfoFormat": "Format", @@ -624,14 +624,14 @@ "MediaInfoRefFrames": "Ref frames", "TabPlayback": "Spill av", "TabNotifications": "Varslinger", - "TabExpert": "Expert", + "TabExpert": "Ekspert", "HeaderSelectCustomIntrosPath": "Velg tilpasset intro sti", "HeaderRateAndReview": "Ranger og anmeld", "HeaderThankYou": "Takk", "MessageThankYouForYourReview": "Takk for din anmeldelse.", "LabelYourRating": "Din vurdering:", "LabelFullReview": "Full anmeldelse:", - "LabelShortRatingDescription": "Kort vurderings sammendrag:", + "LabelShortRatingDescription": "Kort sammendrag av vurdering:", "OptionIRecommendThisItem": "Jeg anbefaler dette elementet", "WebClientTourContent": "Vis dine nylig tilf\u00f8yde medier, neste episodene og mer. De gr\u00f8nne sirklene viser hvor mange uspilte elementer du har.", "WebClientTourMovies": "Spill av filmer, trailere og mer fra hvilken som helst enhet med en nettleser", @@ -642,14 +642,14 @@ "WebClientTourCollections": "Lag dine egne samlebokser", "WebClientTourUserPreferences1": "Brukerpreferanser lar deg tilpasse m\u00e5ten biblioteket er presentert i alle Media Browser apper", "WebClientTourUserPreferences2": "Konfigurer spr\u00e5kpreferanse for lyd og undertekst en gang, for hver media nettleser app", - "WebClientTourUserPreferences3": "Utform webklient startsiden slik du \u00f8nsker", - "WebClientTourUserPreferences4": "Konfigurer bakgrunner, tema sanger og eksterne avspillere", + "WebClientTourUserPreferences3": "Utform startsiden slik du \u00f8nsker den.", + "WebClientTourUserPreferences4": "Konfigurer bakgrunner, temasanger og eksterne avspillere", "WebClientTourMobile1": "Webklienten fungerer bra p\u00e5 smarttelefoner og nettbrett ...", "WebClientTourMobile2": "og enkelt styrer andre enheter og mediabrowser apps", - "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "WebClientTourMySync": "Synkronis\u00e9r dine personlige mediefiler til dine enheter for offline bruk.", "MessageEnjoyYourStay": "Nyt oppholdet", - "DashboardTourDashboard": "The server dashboard allows you to monitor your server and your users. You'll always know who is doing what and where they are.", - "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", + "DashboardTourDashboard": "Server dashboard lar deg overv\u00e5ke serveren og brukerene. Du kan til enhver tid se hvem som gj\u00f8r hva, og hvor de er.", + "DashboardTourHelp": "Applikasjonens hjelpesystem har knapper som gir enkel tilgang til relevant dokumentasjon fra wikien.", "DashboardTourUsers": "Opprett bruker kontoer enkelt for dine venner og familie, hver med deres egne rettigheter, bibliotek tillgang, foreldre kontroll og mere til.", "DashboardTourCinemaMode": "Kino-modus bringer kinoopplevelsen direkte til din stue med muligheten til \u00e5 spille trailere og tilpassede introer f\u00f8r filmen begynner.", "DashboardTourChapters": "Aktiver generering av kapittel bilder for dine videoer for en mer behagelig presentasjon mens du ser p\u00e5.", @@ -658,10 +658,10 @@ "DashboardTourNotifications": "Send meldinger automatisk for server handlinger til dine mobile enheter, epost, etc.", "DashboardTourScheduledTasks": "Administrer enkelt operasjoner som kan ta lang tid med oppgaveplanlegging. Bestem n\u00e5r de kj\u00f8rer og hvor ofte.", "DashboardTourMobile": "Media Browser dashboard fungerer fint p\u00e5 en smart telefon og nettbrett. Administrer din server fra din h\u00e5ndflate n\u00e5r som helst, hvor som helst.", - "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "DashboardTourSync": "Synkroniser personlige mediafiler til din enhet for \u00e5 se p\u00e5 offline.", "MessageRefreshQueued": "Oppfrisk k\u00f8en", "TabDevices": "Enheter", - "TabExtras": "Extras", + "TabExtras": "Ekstra", "DeviceLastUsedByUserName": "Sist brukt av {0}", "HeaderDeleteDevice": "Slett Enhet", "DeleteDeviceConfirmation": "Er du sikker p\u00e5 at du vil slette denne enheten? Den vil gjenoppst\u00e5 neste gang en bruker logger inn med den.", @@ -674,8 +674,8 @@ "HeaderInvitationSent": "Invitasjon Sendt", "MessageInvitationSentToUser": "En epost har blitt sent til {0} med oppfordring til \u00e5 godta invitasjonen din.", "MessageInvitationSentToNewUser": "En epost har blitt sendt til {0} med en invitasjon til \u00e5 registrere seg med Media Browser.", - "HeaderConnectionFailure": "Tilkobling feiler", - "MessageUnableToConnectToServer": "We're unable to connect to the selected server right now. Please ensure it is running and try again.", + "HeaderConnectionFailure": "Tilkobling feilet", + "MessageUnableToConnectToServer": "Vi kan ikke kontakte angitt server akkurat n\u00e5. Sjekk at den er startet og pr\u00f8v igjen.", "ButtonSelectServer": "Velg server", "MessagePluginConfigurationRequiresLocalAccess": "Logg inn p\u00e5 din lokale server direkte for \u00e5 konfigurere dette programtillegget.", "MessageLoggedOutParentalControl": "Tilgangen er forel\u00f8pig begrenset. Vennligst pr\u00f8v igjen senere.", @@ -683,44 +683,44 @@ "ButtonAccept": "Godta", "ButtonReject": "Avvis", "HeaderForgotPassword": "Glemt passord", - "MessageContactAdminToResetPassword": "Please contact your system administrator to reset your password.", - "MessageForgotPasswordInNetworkRequired": "Please try again within your home network to initiate the password reset process.", - "MessageForgotPasswordFileCreated": "The following file has been created on your server and contains instructions on how to proceed:", - "MessageForgotPasswordFileExpiration": "The reset pin will expire at {0}.", - "MessageInvalidForgotPasswordPin": "An invalid or expired pin was entered. Please try again.", - "MessagePasswordResetForUsers": "Passwords have been removed for the following users:", - "HeaderInviteGuest": "Invite Guest", - "ButtonLinkMyMediaBrowserAccount": "Link my account now", - "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Media Browser account to this server.", + "MessageContactAdminToResetPassword": "Vennligst kontakte administrator for hjelp til \u00e5 resette passordet ditt.", + "MessageForgotPasswordInNetworkRequired": "Vennligst pr\u00f8v igjen fra hjemmenettet ditt for \u00e5 starte prosessen med \u00e5 gjenopprette passordet ditt.", + "MessageForgotPasswordFileCreated": "F\u00f8lgende fil er opprettet p\u00e5 serveren og inneholder instruksjoner om hvordan du kan fortsette:", + "MessageForgotPasswordFileExpiration": "PIN-koden for gjenoppretting er gyldig til {0}.", + "MessageInvalidForgotPasswordPin": "Ugyldig eller utg\u00e5tt PIN kode angitt. Vennligst pr\u00f8v igjen.", + "MessagePasswordResetForUsers": "Passordet er fjernet for f\u00f8lgende brukere:", + "HeaderInviteGuest": "Inviter gjest", + "ButtonLinkMyMediaBrowserAccount": "Link kontoen min n\u00e5", + "MessageConnectAccountRequiredToInviteGuest": "For \u00e5 kunne invitere gjester m\u00e5 du f\u00f8rst linke kontoen din p\u00e5 Media Browser til denne serveren.", "ButtonSync": "Synk", - "SyncMedia": "Sync Media", - "HeaderCancelSyncJob": "Cancel Sync", - "CancelSyncJobConfirmation": "Are you sure you wish to cancel this sync job?", + "SyncMedia": "Synkroniser media", + "HeaderCancelSyncJob": "Avbryt synkronisering", + "CancelSyncJobConfirmation": "Er du sikker p\u00e5 at du vil avbryte denne synkroniseringen?", "TabSync": "Synk", - "MessagePleaseSelectDeviceToSyncTo": "Please select a device to sync to.", - "MessageSyncJobCreated": "Sync job created.", - "LabelSyncTo": "Sync to:", - "LabelSyncJobName": "Sync job name:", - "LabelQuality": "Quality:", + "MessagePleaseSelectDeviceToSyncTo": "Velg enhet \u00e5 synkronisere til.", + "MessageSyncJobCreated": "Synkroniseringsjobb p\u00e5begynt.", + "LabelSyncTo": "Synkroniser til:", + "LabelSyncJobName": "Navn p\u00e5 synkroniseringsjobb:", + "LabelQuality": "Kvalitet:", "OptionOriginal": "Original", - "OptionHigh": "High", + "OptionHigh": "H\u00f8y", "OptionMedium": "Medium", - "OptionLow": "Low", - "HeaderSettings": "Settings", - "OptionAutomaticallySyncNewContent": "Automatically sync new content", - "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", - "OptionSyncUnwatchedVideosOnly": "Sync unwatched videos only", - "OptionSyncUnwatchedVideosOnlyHelp": "Only unwatched videos will be synced, and videos will be removed from the device as they are watched.", - "LabelItemLimit": "Item limit:", - "LabelItemLimitHelp": "Optional. Set a limit to the number of items that will be synced.", - "MessageBookPluginRequired": "Requires installation of the Bookshelf plugin", - "MessageGamePluginRequired": "Requires installation of the GameBrowser plugin", - "MessageUnsetContentHelp": "Content will be displayed as plain folders. For best results use the metadata manager to set the content types of sub-folders.", - "SyncJobItemStatusQueued": "Queued", - "SyncJobItemStatusConverting": "Converting", - "SyncJobItemStatusTransferring": "Transferring", - "SyncJobItemStatusSynced": "Synced", - "SyncJobItemStatusFailed": "Failed", - "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "OptionLow": "Lav", + "HeaderSettings": "Innstillinger", + "OptionAutomaticallySyncNewContent": "Automatisk synkroniser nytt innhold", + "OptionAutomaticallySyncNewContentHelp": "Nytt innhold lagt til i denne kategorien vil bli automatisk synkronisert til enheten.", + "OptionSyncUnwatchedVideosOnly": "Synkroniser kun usette videoer", + "OptionSyncUnwatchedVideosOnlyHelp": "Kun usette videoer blir synkronisert, og videoer blir fjernet fra enheten s\u00e5 snart de er sett.", + "LabelItemLimit": "Begrenset antall:", + "LabelItemLimitHelp": "Valgfri. Sett en grense for hvor mange enheter som skal synkroniseres.", + "MessageBookPluginRequired": "Forutsetter at programtillegget bokhylle er installert", + "MessageGamePluginRequired": "Forutsetter at programtillegget GameBrowser er installert", + "MessageUnsetContentHelp": "Innhold vises som enkle mapper. For beste resultat, bruk metadata for \u00e5 sette innholdstype for mapper.", + "SyncJobItemStatusQueued": "I k\u00f8", + "SyncJobItemStatusConverting": "Konverterer", + "SyncJobItemStatusTransferring": "Overf\u00f8rer", + "SyncJobItemStatusSynced": "Synkronisert", + "SyncJobItemStatusFailed": "Feilet", + "SyncJobItemStatusRemovedFromDevice": "Fjernet fra enheten", + "SyncJobItemStatusCancelled": "Kansellert" } \ 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 295bca63a..7ccb44fd6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -49,14 +49,14 @@ "ButtonHelp": "Hulp", "ButtonSave": "Opslaan", "ButtonDownload": "Download", - "SyncJobStatusQueued": "Queued", + "SyncJobStatusQueued": "In wachtrij", "SyncJobStatusConverting": "Converteren", "SyncJobStatusFailed": "Mislukt", "SyncJobStatusCancelled": "Afgebroken", "SyncJobStatusCompleted": "Gesynced", "SyncJobStatusReadyToTransfer": "Klaar om te Verzenden", "SyncJobStatusTransferring": "Verzenden", - "SyncJobStatusCompletedWithError": "Synced with errors", + "SyncJobStatusCompletedWithError": "Gesynchroniseerd met fouten", "SyncJobItemStatusReadyToTransfer": "Klaar om te Verzenden", "LabelCollection": "Collectie", "HeaderAddToCollection": "Toevoegen aan Collectie", @@ -70,7 +70,7 @@ "HeaderSelectCertificatePath": "Selecteer Certificaat Pad", "ConfirmMessageScheduledTaskButton": "Deze operatie loopt normaal gesproken automatisch als een geplande taak. Het kan hier ook handmatig worden uitgevoerd. Om de geplande taak te configureren, zie:", "HeaderSupporterBenefit": "Een supporter lidmaatschap biedt voordelen zoals toegang tot premium plug-ins, internet kanalen en meer. {0}Meer weten{1}.", - "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", + "LabelSyncNoTargetsHelp": "Het lijkt erop dat je momenteel geen apps hebt die synchroniseren ondersteunen.", "HeaderWelcomeToMediaBrowserServerDashboard": "Welkom bij het Media Browser Dashboard", "HeaderWelcomeToMediaBrowserWebClient": "Welkom op de Media Browser Web Client", "ButtonTakeTheTour": "Volg de tour", @@ -99,7 +99,7 @@ "HeaderSelectSubtitles": "Selecteer Ondertitels", "ButtonMarkForRemoval": "Van apparaat verwijderen", "ButtonUnmarkForRemoval": "Afbreken verwijderen van apparaat", - "LabelSyncQualityHelp": "Use high quality for the maximum supported quality by the device. Medium and low quality will reduce the allowed bitrate. Original will sync the original file, regardless of whether the device is capable of playing it or not.", + "LabelSyncQualityHelp": "Gebruik hoge kwaliteit om de maximaal ondersteunde kwaliteit van het apparaat te gebruiken. Medium en laad zal de bitrate verlagen. Origineel zal het bestand ongewijzigd synchroniseren, ongeacht op het apparaat het af kan spelen.", "LabelDefaultStream": "(Standaard)", "LabelForcedStream": "(Geforceerd)", "LabelDefaultForcedStream": "(Standaard \/ Georceerd)", @@ -545,7 +545,7 @@ "ValueMusicVideoCount": "{0} muziek video's", "HeaderOffline": "Offline", "HeaderUnaired": "Niet uitgezonden", - "HeaderMissing": "Missend", + "HeaderMissing": "Ontbreekt", "ButtonWebsite": "Website", "TooltipFavorite": "Favoriet", "TooltipLike": "Leuk", @@ -646,7 +646,7 @@ "WebClientTourUserPreferences4": "Configureer achtergronden, theme songs en externe spelers", "WebClientTourMobile1": "De web client werk perfect op smartphones en tablets...", "WebClientTourMobile2": "en kan elke andere Media Browser app bedienen", - "WebClientTourMySync": "Sync your personal media to your devices for offline viewing.", + "WebClientTourMySync": "Synchroniseer je persoonlijke media naar je apparaten om het offline te bekijken.", "MessageEnjoyYourStay": "Geniet van uw verblijf", "DashboardTourDashboard": "Het server-dashboard steld u in staat uw server en uw gebruikers te monitoren . U zult altijd weten wie wat doet en waar ze zijn.", "DashboardTourHelp": "De in-app hulp bevat handige knoppen om wiki pagina's te openen die gaan over de informatie op het scherm.", @@ -658,7 +658,7 @@ "DashboardTourNotifications": "Meldingen van de server gebeurtenissen automatisch verzenden naar uw mobiele apparaat, e-mail en meer.", "DashboardTourScheduledTasks": "Beheer eenvoudig langlopende transacties met geplande taken. Beslis zelf wanneer ze worden uitgevoerd en hoe vaak.", "DashboardTourMobile": "Het dashboard van Media Browser werkt geweldig op smartphones en tablets. Beheer je server vanuit de palm van je hand, overal en altijd.", - "DashboardTourSync": "Sync your personal media to your devices for offline viewing.", + "DashboardTourSync": "Synchroniseer je persoonlijke media naar je apparaten om het offline te bekijken.", "MessageRefreshQueued": "Vernieuwen wachtrij", "TabDevices": "Apparaten", "TabExtras": "Extra's", @@ -702,7 +702,7 @@ "LabelSyncTo": "Synchroniseer naar:", "LabelSyncJobName": "Naam synchroniseer taak:", "LabelQuality": "Kwaliteit", - "OptionOriginal": "Original", + "OptionOriginal": "Origineel", "OptionHigh": "Hoog", "OptionMedium": "Gemiddeld", "OptionLow": "Laag", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 0b32a1efc..0abf76ae2 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -640,7 +640,7 @@ "WebClientTourMetadataManager": "Clique em editar para abrir o gerenciador de metadados", "WebClientTourPlaylists": "Crie listas de reprodu\u00e7\u00e3o e mixes instant\u00e2neos e reproduza-os em qualquer dispositivo", "WebClientTourCollections": "Crie cole\u00e7\u00f5es de filmes para agrupar colet\u00e2neas", - "WebClientTourUserPreferences1": "As prefer\u00eancias do usu\u00e1rio permite que voc\u00e9 personalize como sua biblioteca \u00e9 exibida em qualquer uma das apps do Media Browser", + "WebClientTourUserPreferences1": "As prefer\u00eancias do usu\u00e1rio permitem que voc\u00ea personalize como sua biblioteca \u00e9 exibida em qualquer uma das apps do Media Browser", "WebClientTourUserPreferences2": "Configure o idioma de \u00e1udio e legendas apenas uma vez, para todas as apps do Media Browser", "WebClientTourUserPreferences3": "Defina a p\u00e1gina de in\u00edcio do cliente web, do seu gosto", "WebClientTourUserPreferences4": "Configure imagens de fundo, m\u00fasicas-tema e reprodutores externos", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fr.json b/MediaBrowser.Server.Implementations/Localization/Server/fr.json index 29af0bb4d..3a346f7e3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -822,7 +822,7 @@ "LabelOpenSubtitlesUsername": "Nom d'utilisateur Open Subtitles:", "LabelOpenSubtitlesPassword": "Mot de passe Open Subtitles:", "HeaderChapterDownloadingHelp": "Lorsque Media Browser scanne vos fichiers vid\u00e9o, il peut facilement t\u00e9l\u00e9charger les noms de chapitre depuis Internet en utilisant le plugin de chapitre tel que ChapterDb.", - "LabelPlayDefaultAudioTrack": "Utiliser la flux audio par d\u00e9faut peu importe la langue", + "LabelPlayDefaultAudioTrack": "Utiliser le flux audio par d\u00e9faut quelque soit la langue", "LabelSubtitlePlaybackMode": "Mode de sous-titres:", "LabelDownloadLanguages": "T\u00e9l\u00e9chargement de langues:", "ButtonRegister": "S'enregistrer", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/it.json b/MediaBrowser.Server.Implementations/Localization/Server/it.json index 2f1c1812b..713aa0e21 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -43,7 +43,7 @@ "HeaderDeveloperOptions": "Opzioni Sviluppatore", "OptionEnableWebClientResponseCache": "Abilita la cache del client web", "OptionDisableForDevelopmentHelp": "Configura questi parametri per sviluppatori del client web", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "OptionEnableWebClientResourceMinification": "Abilita la minimizzazione delle risorse del client web", "LabelDashboardSourcePath": "Percorso sorgente client web", "LabelDashboardSourcePathHelp": "se si sta eseguendo il server da una sorgente, specifica il percorso dell'interfaccia. Tutti i file per i client saranno presi da questo percorso", "ButtonConvertMedia": "Converti media", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nb.json b/MediaBrowser.Server.Implementations/Localization/Server/nb.json index 0e08ddf21..c154d3182 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -4,8 +4,8 @@ "LabelGithub": "Github", "LabelSwagger": "Swagger", "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Dokumentasjon", - "LabelDeveloperResources": "Utvikler Ressurser", + "LabelApiDocumentation": "API-dokumentasjon", + "LabelDeveloperResources": "Ressurser for Utviklere", "LabelBrowseLibrary": "Browse biblioteket", "LabelConfigureMediaBrowser": "Konfigurer Media Browser", "LabelOpenLibraryViewer": "\u00c5pne Biblioteket", @@ -17,126 +17,126 @@ "LabelYoureDone": "Ferdig!", "WelcomeToMediaBrowser": "Velkommen til Media Browser!", "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg ditt foretrukne spr\u00e5k.", + "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", "TellUsAboutYourself": "Fortell om deg selv", - "ButtonQuickStartGuide": "Hurtig start veiledning", + "ButtonQuickStartGuide": "Hurtigstartveiledning", "LabelYourFirstName": "Ditt fornavn", - "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashboard", + "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashbord", "UserProfilesIntro": "Media Browser inkluderer innebygd st\u00f8tte for bruker profiler som tilbyr brukere innstillinger for visning, avspillerstatus og begrensning p\u00e5 innhold.", "LabelWindowsService": "Windows Service", "AWindowsServiceHasBeenInstalled": "Windows Service har blitt installert", "WindowsServiceIntro1": "Media Browser Server kj\u00f8rer normalt som en desktop-applikasjon med et tray-ikon, men om du foretrekker at det kj\u00f8res som en bakgrunnsprosess, kan du i stedet starte den fra windows service control panel.", "WindowsServiceIntro2": "Hvis du bruker Windows, v\u00e6r oppmerksom p\u00e5 at det ikke kan kj\u00f8res samtidig som ikonet, slik at du trenger \u00e5 g\u00e5 ut av \"trayen\" for \u00e5 kj\u00f8re tjenesten. Tjenesten m\u00e5 ogs\u00e5 konfigureres med administratorrettigheter via kontrollpanelet. V\u00e6r oppmerksom p\u00e5 at p\u00e5 denne tiden tjenesten ikke er i stand til selv-oppdatering, s\u00e5 nye versjoner vil kreve manuell interaksjon.", - "WizardCompleted": "Det er alt vi trenger for n\u00e5. Media Browser har begynt \u00e5 samle inn informasjon om ditt media bibliotek. Sjekk ut noen av v\u00e5re apps, og klikk s\u00e5 Ferdig<\/b> for \u00e5 vise Server Dashboard<\/b>.", + "WizardCompleted": "Det er alt vi trenger n\u00e5. Media Browser har begynt \u00e5 samle inn informasjon om ditt mediabibliotek. Sjekk ut noen av v\u00e5re apps, og klikk s\u00e5 Ferdig<\/b> for \u00e5 vise Server Dashboard<\/b>.", "LabelConfigureSettings": "Konfigurer innstillinger", - "LabelEnableVideoImageExtraction": "Aktiver videobildet utvinning", - "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og at vi ikke klarer \u00e5 finne internettbilder for. Dette vil tilf\u00f8re noen ytterligere tid til den opprinnelige biblioteket s\u00f8king, men vil resultere i en mer tiltalende presentasjon.", + "LabelEnableVideoImageExtraction": "Aktiver utvinning av videobildet", + "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og som vi ikke klarer \u00e5 finne internettbilder for. Dette gj\u00f8r at det f\u00f8rste biblioteks\u00f8ket tar noe lenger tid, men vil resultere i en mer tiltalende presentasjon.", "LabelEnableChapterImageExtractionForMovies": "Pakk ut kapittelbilde utvinning for Filmer", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatiserte routere konfigurasjoner for enkel ekstern tilgang. Denne funksjonen s\u00f8ttes ikke av alle routere.", - "HeaderTermsOfService": "Media Browser Vilk\u00e5r for Service", - "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re service vilk\u00e5r og personvern policy f\u00f8r du fortsetter.", - "OptionIAcceptTermsOfService": "Jeg aksepterer service vilk\u00e5rene", - "ButtonPrivacyPolicy": "Personvern policy", - "ButtonTermsOfService": "Service Vilk\u00e5r", - "HeaderDeveloperOptions": "Utvikler opsjoner", - "OptionEnableWebClientResponseCache": "Aktiver web klient respons caching", - "OptionDisableForDevelopmentHelp": "Konfigurer disse ved behov for web klient utvikler form\u00e5l.", - "OptionEnableWebClientResourceMinification": "Aktiver web klient ressurs minifisering", - "LabelDashboardSourcePath": "Web klient kilde sti:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", + "LabelChapterImageExtractionForMoviesHelp": "Uthenting av kapittelbilder gj\u00f8r klientene i stand til \u00e5 vise grafiske menyer for valg av scene. Prosessen kan v\u00e6re treg, CPU-intensiv og kan kreve sv\u00e6rt mange gigabytes lagringsplass. Dette kj\u00f8res som en nattlig oppgave, og kan konfigureres under Planlagte Aktiviteter. Det anbefales ikke \u00e5 kj\u00f8re denne jobben n\u00e5r serveren brukes til annet.", + "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port-mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatisert router-konfigurasjon for enkel ekstern tilgang. Denne funksjonen st\u00f8ttes ikke av alle routere.", + "HeaderTermsOfService": "Media Browser Servicevilk\u00e5r", + "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re servicevilk\u00e5r og personvernpolicy f\u00f8r du fortsetter.", + "OptionIAcceptTermsOfService": "Jeg aksepterer servicevilk\u00e5rene", + "ButtonPrivacyPolicy": "Personvernpolicy", + "ButtonTermsOfService": "Servicevilk\u00e5r", + "HeaderDeveloperOptions": "Utvikler-innstillinger", + "OptionEnableWebClientResponseCache": "Aktiver webklient respons-caching", + "OptionDisableForDevelopmentHelp": "Konfigurer disse i forbindelse med utvikling av web-klienten.", + "OptionEnableWebClientResourceMinification": "Aktiver ressursminimering for webklient", + "LabelDashboardSourcePath": "Webklient kildesti:", + "LabelDashboardSourcePathHelp": "Hvis serveren kj\u00f8rer fra kildekode, angi sti til mappe for dashboard-ui. Alle filer for webklienten kommer fra denne mappen.", + "ButtonConvertMedia": "Konverter media", + "ButtonOrganize": "Organiser", "ButtonOk": "Ok", - "ButtonCancel": "avbryt", + "ButtonCancel": "Avbryt", "ButtonNew": "Ny", "HeaderTV": "TV", "HeaderAudio": "Lyd", "HeaderVideo": "Video", "HeaderPaths": "Stier", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Doner med PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "CategorySync": "Synk", + "HeaderEasyPinCode": "Enkel PIN-kode", + "RegisterWithPayPal": "Registrer med PayPal", + "HeaderSyncRequiresSupporterMembership": "Synkronisering krever st\u00f8ttemedlemskap", + "HeaderEnjoyDayTrial": "Hygg deg med en 14-dagers gratis pr\u00f8veperiode", + "LabelSyncTempPath": "Midlertidig fil-sti:", + "LabelSyncTempPathHelp": "Spesifiser din egen synk-mappe. Konverterte mediefiler opprettet ved synkronisering vil lagres her.", + "LabelCustomCertificatePath": "Sti for eget sertifikat:", + "LabelCustomCertificatePathHelp": "Angi ditt eget SSL-sertifikats .ptx-fil. Hvis feltet er blankt vil serveren opprette et eget selv-signert sertifikat.", + "TitleNotifications": "Beskjeder", + "ButtonDonateWithPayPal": "Don\u00e9r med PayPal", + "OptionDetectArchiveFilesAsMedia": "Behandle arkivfiler som media", + "OptionDetectArchiveFilesAsMediaHelp": "Hvis aktivert blir .rar- og .zipfiler behandlet som mediafiler.", "LabelEnterConnectUserName": "Brukernavn eller epost:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", + "LabelEnterConnectUserNameHelp": "Dette er din Media Browser online brukernavn eller passord.", + "HeaderSyncJobInfo": "Synk.jobb", + "FolderTypeMixed": "Forskjellig innhold", "FolderTypeMovies": "Filmer", "FolderTypeMusic": "Musikk", - "FolderTypeAdultVideos": "Voksen videoer", + "FolderTypeAdultVideos": "Voksen-videoer", "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Musikk videoer", - "FolderTypeHomeVideos": "Hjemme videoer", + "FolderTypeMusicVideos": "Musikk-videoer", + "FolderTypeHomeVideos": "Hjemme-videoer", "FolderTypeGames": "Spill", "FolderTypeBooks": "B\u00f8ker", "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", + "FolderTypeInherit": "Arve", + "LabelContentType": "Innholdstype:", + "TitleScheduledTasks": "Planlagt oppgaver", "HeaderSetupLibrary": "Konfigurer media-biblioteket", "ButtonAddMediaFolder": "Legg til media-mappe", - "LabelFolderType": "Mappe typpe", - "ReferToMediaLibraryWiki": "Se i media-bibliotek wikien", - "LabelCountry": "LAnd", + "LabelFolderType": "Mappetype", + "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", + "LabelCountry": "Land:", "LabelLanguage": "Spr\u00e5k:", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", - "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom media mapper vil legge dem en plass hvor de lett kan editeres.", + "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom mediemapper vil legge dem et sted hvor de lett kan editeres.", "LabelDownloadInternetMetadata": "Last ned cover og metadata fra internett", - "LabelDownloadInternetMetadataHelp": "MEdia Browser kan laste ned informasjon om mediet for en rikere presentasjon", + "LabelDownloadInternetMetadataHelp": "Media Browser kan laste ned informasjon om mediet for en mer fullstendig presentasjon", "TabPreferences": "Preferanser", "TabPassword": "Passord", "TabLibraryAccess": "Bibliotektilgang", - "TabAccess": "Access", + "TabAccess": "Tilgang", "TabImage": "Bilde", - "TabProfile": "profil", + "TabProfile": "Profil", "TabMetadata": "Metadata", "TabImages": "Bilder", "TabNotifications": "Varslinger", "TabCollectionTitles": "Titler", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som sesongen mangler", + "HeaderDeviceAccess": "Enhetstilgang", + "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", + "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", + "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", + "DeviceAccessHelp": "Dette gjelder bare for enheter som som kan unikt identifiseres og vil ikke forindre tilgang fra nettleser. Filtrering av brukerens enhet vil forhindre dem fra \u00e5 bruke nye enheter inntil de har blitt godkjent her.", + "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", - "HeaderPlaybackSettings": "Avspillings Innstillinger", + "HeaderPlaybackSettings": "Avspillingsinnstillinger", "LabelAudioLanguagePreference": "Foretrukket lydspor:", "LabelSubtitleLanguagePreference": "Foretrukket undertekst:", "OptionDefaultSubtitles": "Standard", - "OptionOnlyForcedSubtitles": "Kun tvunget undertekster", - "OptionAlwaysPlaySubtitles": "Alltid spill undertekster", - "OptionNoSubtitles": "Ingen Undertekster", - "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli lastet n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", - "OptionOnlyForcedSubtitlesHelp": "Kun undertekster marker som tvunget vil bli lastet.", - "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli lastet uavhengig lydens spr\u00e5k.", + "OptionOnlyForcedSubtitles": "Kun tvungede undertekster", + "OptionAlwaysPlaySubtitles": "Alltid vis undertekster", + "OptionNoSubtitles": "Ingen undertekster", + "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", + "OptionOnlyForcedSubtitlesHelp": "Kun undertekster markert som tvunget vil bli vist.", + "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist uavhengig lydens spr\u00e5k.", "OptionNoSubtitlesHelp": "Undertekster vil ikke bli lastet som standard.", "TabProfiles": "Profiler", "TabSecurity": "Sikkerhet", "ButtonAddUser": "Ny bruker", "ButtonAddLocalUser": "Legg til lokal bruker", "ButtonInviteUser": "Invit\u00e9r Bruker", - "ButtonSave": "lagre", - "ButtonResetPassword": "Resett passord", - "LabelNewPassword": "Nytt passord", - "LabelNewPasswordConfirm": "Bekreft nytt passord", + "ButtonSave": "Lagre", + "ButtonResetPassword": "Tilbakestill passord", + "LabelNewPassword": "Nytt passord:", + "LabelNewPasswordConfirm": "Bekreft nytt passord:", "HeaderCreatePassword": "Lag nytt passord", - "LabelCurrentPassword": "N\u00e5v\u00e6rende passord", - "LabelMaxParentalRating": "Maks tillatt sensur.", + "LabelCurrentPassword": "N\u00e5v\u00e6rende passord:", + "LabelMaxParentalRating": "Maks tillatt sensur:", "MaxParentalRatingHelp": "Innhold med h\u00f8yere aldersgrense vil bli skjult for brukeren", "LibraryAccessHelp": "Velg media mappe som skal deles med denne brukren. Administrator vil ha mulighet for \u00e5 endre alle mapper ved \u00e5 bruke metadata behandler.", "ChannelAccessHelp": "Velg kanaler som skal deler med denne brukeren. Administratorer har mulighet til \u00e5 editere p\u00e5 alle kanaler som benytter metadata behandleren.", @@ -144,26 +144,26 @@ "LabelSelectUsers": "Velg brukere:", "ButtonUpload": "Last opp", "HeaderUploadNewImage": "Last opp nytt bilde", - "LabelDropImageHere": "Slipp bilde her.", + "LabelDropImageHere": "Slipp bilde her", "ImageUploadAspectRatioHelp": "1:1 sideforhold anbefales. Kun JPG\/PNG.", - "MessageNothingHere": "Ingeting her", - "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5", + "MessageNothingHere": "Ingeting her.", + "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", "TabSuggested": "Forslag", "TabLatest": "Siste", "TabUpcoming": "Kommer", "TabShows": "Show", "TabEpisodes": "Episoder", - "TabGenres": "Sjanger", + "TabGenres": "Sjangre", "TabPeople": "Folk", "TabNetworks": "Nettverk", - "HeaderUsers": "Bruker", + "HeaderUsers": "Brukere", "HeaderFilters": "Filtre", "ButtonFilter": "Filter", "OptionFavorite": "Favoritter", "OptionLikes": "Liker", "OptionDislikes": "Misliker", "OptionActors": "Skuespillere", - "OptionGuestStars": "Gjeste-opptredelser", + "OptionGuestStars": "Gjeste-opptredener", "OptionDirectors": "Regis\u00f8r", "OptionWriters": "Manus", "OptionProducers": "Produsent", @@ -171,19 +171,19 @@ "HeaderNextUp": "Neste", "NoNextUpItemsMessage": "Ingen funnet. Begyn \u00e5 se det du har", "HeaderLatestEpisodes": "Siste episoder", - "HeaderPersonTypes": "Person Typer:", + "HeaderPersonTypes": "Persontyper:", "TabSongs": "Sanger", "TabAlbums": "Album", "TabArtists": "Artister", "TabAlbumArtists": "Album Artister", "TabMusicVideos": "Musikk-videoer", "ButtonSort": "Sorter", - "HeaderSortBy": "Sorter etter", + "HeaderSortBy": "Sorter etter:", "HeaderSortOrder": "Sorter Etter:", "OptionPlayed": "Sett", "OptionUnplayed": "Ikke sett", - "OptionAscending": "Oppover", - "OptionDescending": "Nedover", + "OptionAscending": "\u00d8kende", + "OptionDescending": "Synkende", "OptionRuntime": "Spilletid", "OptionReleaseDate": "Uttgitt dato", "OptionPlayCount": "Antall avspillinger", @@ -192,24 +192,24 @@ "OptionAlbumArtist": "Album Artist", "OptionArtist": "Artist", "OptionAlbum": "Album", - "OptionTrackName": "L\u00e5navn", + "OptionTrackName": "L\u00e5tnavn", "OptionCommunityRating": "Community Rangering", "OptionNameSort": "Navn", "OptionFolderSort": "Mapper", "OptionBudget": "Budsjett", "OptionRevenue": "Inntjening", "OptionPoster": "Plakat", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", + "OptionPosterCard": "Plakatkort", + "OptionBackdrop": "Bakgrunn", "OptionTimeline": "Tidslinje", "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", + "OptionThumbCard": "Thumb-kort", "OptionBanner": "Banner", - "OptionCriticRating": "Kritiker Vurdering", + "OptionCriticRating": "Kritikervurdering", "OptionVideoBitrate": "Video bitrate", - "OptionResumable": "Fortsettelse", + "OptionResumable": "Kan fortsettes", "ScheduledTasksHelp": "Klikk p\u00e5 en oppgave for \u00e5 tilpasse tidsplan", - "ScheduledTasksTitle": "Tidsplan Oppgaver", + "ScheduledTasksTitle": "Planlagte Oppgaver", "TabMyPlugins": "Mine programtillegg", "TabCatalog": "Katalog", "PluginsTitle": "Programtillegg", @@ -219,18 +219,18 @@ "HeaderLatestSongs": "Siste l\u00e5ter", "HeaderRecentlyPlayed": "Nylig avspilt", "HeaderFrequentlyPlayed": "Ofte avspilt", - "DevBuildWarning": "Dev builds er \u00e5 anses som p\u00e5 kanten. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", - "LabelVideoType": "Video-type", + "DevBuildWarning": "Dev builds er \u00e5 anses som ustabile. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", + "LabelVideoType": "Video-type:", "OptionBluray": "Bluray", - "OptionDvd": "Dvd", + "OptionDvd": "DVD", "OptionIso": "ISO", - "Option3D": "3d", + "Option3D": "3D", "LabelFeatures": "Funksjoner:", "LabelService": "Service:", "LabelStatus": "Status:", "LabelVersion": "Versjon:", "LabelLastResult": "Siste resultat:", - "OptionHasSubtitles": "undertekster", + "OptionHasSubtitles": "Undertekster", "OptionHasTrailer": "Trailer", "OptionHasThemeSong": "Temasang", "OptionHasThemeVideo": "Temavideo", @@ -241,16 +241,16 @@ "LabelArtistsHelp": "Skill flere med semikolon ;", "HeaderLatestMovies": "Siste Filmer", "HeaderLatestTrailers": "Siste Trailers", - "OptionHasSpecialFeatures": "Spesial Funksjoner", - "OptionImdbRating": "IMDB Rangering", + "OptionHasSpecialFeatures": "Spesialfunksjoner", + "OptionImdbRating": "IMDb Rangering", "OptionParentalRating": "Foreldresensur", - "OptionPremiereDate": "premieredato", - "TabBasic": "Basic", + "OptionPremiereDate": "Premieredato", + "TabBasic": "Enkel", "TabAdvanced": "Avansert", "HeaderStatus": "Status", "OptionContinuing": "Fortsetter", "OptionEnded": "Avsluttet", - "HeaderAirDays": "Lanseringsdager", + "HeaderAirDays": "Vises dager", "OptionSunday": "S\u00f8ndag", "OptionMonday": "Mandag", "OptionTuesday": "Tirsdag", @@ -260,50 +260,50 @@ "OptionSaturday": "L\u00f8rdag", "HeaderManagement": "Strying", "LabelManagement": "Administrasjon", - "OptionMissingImdbId": "Mangler IMDb id", - "OptionMissingTvdbId": "Mangler TVDB id", + "OptionMissingImdbId": "Mangler IMDb ID", + "OptionMissingTvdbId": "Mangler TVDB ID", "OptionMissingOverview": "Mangler oversikt", - "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r Mismatch", + "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r mismatch", "TabGeneral": "Genrelt", "TitleSupport": "Support", "TabLog": "Logg", "TabAbout": "Om", "TabSupporterKey": "Supporter-n\u00f8kkel", "TabBecomeSupporter": "Bli en supporter", - "MediaBrowserHasCommunity": "Media Browser har ett blomstrende fellesskap av brukere og bidragsytere.", - "CheckoutKnowledgeBase": "Sjekk ut v\u00e5r kunnskaps base for \u00e5 hjelpe deg med \u00e5 f\u00e5 best utbytte av Media Browser", + "MediaBrowserHasCommunity": "Media Browser har et blomstrende fellesskap av brukere og bidragsytere.", + "CheckoutKnowledgeBase": "Sjekk ut v\u00e5r kunnskapsbase for \u00e5 hjelpe deg med \u00e5 f\u00e5 best utbytte av Media Browser", "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", "VisitTheCommunity": "Bes\u00f8k oss", "VisitMediaBrowserWebsite": "Bes\u00f8k Media Browsers nettside", - "VisitMediaBrowserWebsiteLong": "Bes\u00f8k Media Browser sin side for \u00e5 f\u00e5 de siste nyhetene og for \u00e5 f\u00f8lge med p\u00e5 utviklerbloggen.", + "VisitMediaBrowserWebsiteLong": "Bes\u00f8k Media Browsers nettside for \u00e5 f\u00e5 de siste nyhetene og for \u00e5 f\u00f8lge med p\u00e5 utviklerbloggen.", "OptionHideUser": "Skjul brukere fra logginn-skjermen", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", "OptionDisableUser": "Deaktiver denne brukeren", - "OptionDisableUserHelp": "Hvis avsl\u00e5tt, serveren vil ikke godta noen forbindelser fra denne brukeren. eksisterende forbindelser vil bli br\u00e5tt avsluttet.", + "OptionDisableUserHelp": "Hvis avsl\u00e5tt vil ikke serveren godta noen forbindelser fra denne brukeren. Eksisterende forbindelser vil avsluttes umiddelbart.", "HeaderAdvancedControl": "Avansert Kontroll", "LabelName": "Navn", - "ButtonHelp": "Help", + "ButtonHelp": "Hjelp", "OptionAllowUserToManageServer": "TIllatt denne brukeren \u00e5 administrere serveren", - "HeaderFeatureAccess": "Funksjon Tilgang", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", + "HeaderFeatureAccess": "Funksjonstilgang", + "OptionAllowMediaPlayback": "Tillate avspilling av media", + "OptionAllowBrowsingLiveTv": "Tillate Live TV", + "OptionAllowDeleteLibraryContent": "Tillate sletting av media", + "OptionAllowManageLiveTv": "Tillate administrasjon av Live TV", "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Mangler Tmdb id", + "OptionAllowRemoteSharedDevices": "Tillate fjernstyring av delte enheter", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner \u00e5 styre dem.", + "HeaderRemoteControl": "Fjernstyring", + "OptionMissingTmdbId": "Mangler Tmdb ID", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionMetascore": "Metascore", "ButtonSelect": "Velg", - "ButtonGroupVersions": "Gruppe Versjoner", - "ButtonAddToCollection": "Add to Collection", + "ButtonGroupVersions": "Gruppeversjoner", + "ButtonAddToCollection": "Legg til samling", "PismoMessage": "Utnytte Pismo File Mount gjennom en donert lisens.", "TangibleSoftwareMessage": "Utnytte konkrete l\u00f8sninger Java \/ C # omformere gjennom en donert lisens.", "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Vennligst gi st\u00f8tte til andre gratis produkter vi benytter:", + "PleaseSupportOtherProduces": "Vennligst gi st\u00f8tte til andre gratisprodukter vi benytter:", "VersionNumber": "Versjon {0}", "TabPaths": "Stier", "TabServer": "Server", @@ -314,47 +314,47 @@ "OptionBeta": "Beta", "OptionDev": "Dev (Ustabil)", "LabelAllowServerAutoRestart": "Tillat at serveren restartes automatisk for \u00e5 gjennomf\u00f8re oppdateringer", - "LabelAllowServerAutoRestartHelp": "Serveren vil kun restartes i inaktiv perioder, n\u00e5r ingen brukere er aktive.", + "LabelAllowServerAutoRestartHelp": "Serveren vil kun restartes i inaktive perioder, n\u00e5r ingen brukere er aktive.", "LabelEnableDebugLogging": "Sl\u00e5 p\u00e5 debug logging.", "LabelRunServerAtStartup": "Start server ved maskin-oppstart", "LabelRunServerAtStartupHelp": "Dette vil starte ikonet ved oppstart av Windows. For \u00e5 starte Windows-tjeneste, fjerner du denne markering og kj\u00f8rer tjenesten fra kontrollpanelet i Windows. V\u00e6r oppmerksom p\u00e5 at du ikke kan kj\u00f8re begge p\u00e5 samme tid, s\u00e5 du m\u00e5 g\u00e5 ut av ikonet f\u00f8r du starter tjenesten.", "ButtonSelectDirectory": "Velg Katalog", "LabelCustomPaths": "Angi egendefinerte stier der du \u00f8nsker. La feltene st\u00e5 tomme for \u00e5 bruke standardinnstillingene.", "LabelCachePath": "Buffer sti:", - "LabelCachePathHelp": "Definer en tilpasset lokalisering for server cashe filer, som bilder.", + "LabelCachePathHelp": "Definer en tilpasset lokalisering for server cache filer, som bilder.", "LabelImagesByNamePath": "Bilder etter navn sti:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelImagesByNamePathHelp": "Angi en egen katalog for nedlastede bilder for skuespiller, sjanger og studio.", "LabelMetadataPath": "Metadata sti:", "LabelMetadataPathHelp": "Definer en tilpasset lokalisering for nedlastede artwork og metadata, hvis ikke skjer lagring innen media mappene.", - "LabelTranscodingTempPath": "Transcoding midlertidig sti", + "LabelTranscodingTempPath": "Sti for midlertidig transcoding:", "LabelTranscodingTempPathHelp": "Denne mappen inneholder fungerende filer som blir brukt av transcoderen. Spesifiser en tilpasset sti eller la det st\u00e5 tomt for \u00e5 benytte serverens standard sti.", - "TabBasics": "Basic", + "TabBasics": "Basics", "TabTV": "TV", "TabGames": "Spill", "TabMusic": "Musikk", "TabOthers": "Andre", - "HeaderExtractChapterImagesFor": "Pakk ut kapittel bilder for:", + "HeaderExtractChapterImagesFor": "Pakk ut kapittelbilder for:", "OptionMovies": "Filmer", "OptionEpisodes": "Episoder", "OptionOtherVideos": "Andre Videoer", "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdates": "Skru p\u00e5 automatiske oppdateringer", "LabelAutomaticUpdatesTmdb": "Aktiver automatisk oppdateringer fra TheMovieDB.org", "LabelAutomaticUpdatesTvdb": "Aktiver automatisk oppdateringer fra TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "Hvis aktivert vil nye bilder bli nedlastet automatisk n\u00e5r de blir lagt til fanar.tv. Eksisterende bilder vil ikke bli erstattet.", + "LabelAutomaticUpdatesFanartHelp": "Hvis aktivert vil nye bilder bli nedlastet automatisk n\u00e5r de blir lagt til fanart.tv. Eksisterende bilder vil ikke bli erstattet.", "LabelAutomaticUpdatesTmdbHelp": "Hvis aktivert vil nye bilder bli nedlastet automatisk n\u00e5r de blir lagt til i TheMovieDB.org. Ekisterende bilder vil ikke bli erstattet.", "LabelAutomaticUpdatesTvdbHelp": "Hvis aktivert vil nye bilder bli nedlastet automatisk n\u00e5r de blir lagt til i TheTVDB.com. Ekisterende bilder vil ikke bli erstattet.", - "LabelFanartApiKey": "Personal api key:", - "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", - "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelFanartApiKey": "Personlig API-n\u00f8kkel:", + "LabelFanartApiKeyHelp": "Foresp\u00f8rsler for fanart uten personlig API-n\u00f8kkel vil gi resultater som ble godkjent for over 7 dager siden. Med en personlig API-n\u00f8kkel synker dette til 48 timer, og med et fanart VIP-medlemskap synker det ytterliger til ca. 10 minutter.", + "ExtractChapterImagesHelp": "Ved \u00e5 hente ut kapittelbilder kan klientene vise grafiske menyer for valg av sccene. Denne prosessen kan v\u00e6re treg, CPU-intensiv og krever flerfoldige gigabytes med plass. Prosessen kj\u00f8res n\u00e5r videoer scannes, og kan ogs\u00e5 kj\u00f8res om natten. Dette er konfigurerbart under Planlagte Aktiviteter. Det er ikke anbefalt \u00e5 kj\u00f8re dette mens serveren er i bruk til visning av media.", "LabelMetadataDownloadLanguage": "Foretrukket nedlastingsspr\u00e5k:", "ButtonAutoScroll": "Auto-scroll", "LabelImageSavingConvention": "Bilde besparende konvensjon:", - "LabelImageSavingConventionHelp": "Media Browser gjengjenner bilder fra de fleste media applikasjonene. Ved valg av dine nedlastings konvensjoner er nyttig hvis du i tillegg benytter andre produkter.", + "LabelImageSavingConventionHelp": "Media Browser gjenkjenner bilder fra de fleste media applikasjonene. Ved valg av dine nedlastings konvensjoner er nyttig hvis du i tillegg benytter andre produkter.", "OptionImageSavingCompatible": "Kompatibel - Media Browser\/Kodi\/Plex", "OptionImageSavingStandard": "Standard - MB2", "ButtonSignIn": "Logg inn", - "TitleSignIn": "Logg Inn", + "TitleSignIn": "Logg inn", "HeaderPleaseSignIn": "Vennligst Logg inn", "LabelUser": "Bruker:", "LabelPassword": "Passord:", @@ -388,8 +388,8 @@ "OptionRecordOnlyNewEpisodes": "Ta opptak kun av nye episoder", "HeaderDays": "Dager", "HeaderActiveRecordings": "Aktive opptak", - "HeaderLatestRecordings": "Siste Opptak", - "HeaderAllRecordings": "Alle Opptak", + "HeaderLatestRecordings": "Siste opptak", + "HeaderAllRecordings": "Alle opptak", "ButtonPlay": "Spill", "ButtonEdit": "Rediger", "ButtonRecord": "Opptak", @@ -401,7 +401,7 @@ "LabelNumberOfGuideDays": "Antall dager av guide data som skal lastes ned", "LabelNumberOfGuideDaysHelp": "Nedlasting av guide data for flere dager gir muligheten for \u00e5 planlegge i forveien og for \u00e5 se flere listinger. Dette vil ogs\u00e5 ta lengre tid for nedlasting. Auto vil velge basert p\u00e5 antall kanaler.", "LabelActiveService": "Aktive Tjenester:", - "LabelActiveServiceHelp": "Flere TV programtillegg kan bli installert, men kun en kan v\u00e6re aktiv.", + "LabelActiveServiceHelp": "Flere TV programtillegg kan bli installert, men kun \u00e9n kan v\u00e6re aktiv av gangen.", "OptionAutomatic": "Auto", "LiveTvPluginRequired": "En Live TV tilbyder trengs for \u00e5 kunne fortsette.", "LiveTvPluginRequiredHelp": "Vennligst installer en av v\u00e5re tilgjengelige programtillegg, f.eks Next Pvr eller ServerWmc.", @@ -416,21 +416,21 @@ "OptionDownloadArtImage": "Art", "OptionDownloadPrimaryImage": "Prim\u00e6r", "HeaderFetchImages": "Hent Bilder:", - "HeaderImageSettings": "Bilde Innstillinger", + "HeaderImageSettings": "Bildeinnstillinger", "TabOther": "Andre", "LabelMaxBackdropsPerItem": "Maks antall av backdrops for hvert element:", "LabelMaxScreenshotsPerItem": "Maks antall av screenshots for hvert element:", "LabelMinBackdropDownloadWidth": "Minimum backdrop nedlastings bredde:", "LabelMinScreenshotDownloadWidth": "Minimum nedlasted screenshot bredde:", - "ButtonAddScheduledTaskTrigger": "Add Trigger", - "HeaderAddScheduledTaskTrigger": "Add Trigger", - "ButtonAdd": "Legg Til", + "ButtonAddScheduledTaskTrigger": "Legg til trigger", + "HeaderAddScheduledTaskTrigger": "Legg til trigger", + "ButtonAdd": "Legg til", "LabelTriggerType": "Trigger Type:", "OptionDaily": "Daglig", "OptionWeekly": "Ukentlig", - "OptionOnInterval": "P\u00e5 ett intervall", - "OptionOnAppStartup": "Ved applikasjon oppstart", - "OptionAfterSystemEvent": "Etter ett system hendelse", + "OptionOnInterval": "P\u00e5 intervall", + "OptionOnAppStartup": "Ved applikasjonens oppstart", + "OptionAfterSystemEvent": "Etter systemhendelse", "LabelDay": "Dag:", "LabelTime": "Tid:", "LabelEvent": "Hendelse:", @@ -444,9 +444,9 @@ "TitleMediaLibrary": "Media-bibliotek", "TabFolders": "Mapper", "TabPathSubstitution": "Sti erstatter", - "LabelSeasonZeroDisplayName": "Sesong 0 visningsnavn", + "LabelSeasonZeroDisplayName": "Sesong 0 visningsnavn:", "LabelEnableRealtimeMonitor": "Aktiver sanntids monitorering", - "LabelEnableRealtimeMonitorHelp": "Endinger vil bli prossesert umiddelbart, til st\u00f8ttede file systemer.", + "LabelEnableRealtimeMonitorHelp": "Endinger vil bli prossesert umiddelbart, til st\u00f8ttede filsystemer.", "ButtonScanLibrary": "S\u00f8k Gjennom Bibliotek", "HeaderNumberOfPlayers": "Spillere:", "OptionAnyNumberOfPlayers": "Noen", @@ -454,13 +454,13 @@ "Option2Player": "2+", "Option3Player": "3+", "Option4Player": "4+", - "HeaderMediaFolders": "Media Mapper", - "HeaderThemeVideos": "Tema Videoer", - "HeaderThemeSongs": "Tema Sanger", + "HeaderMediaFolders": "Mediemapper", + "HeaderThemeVideos": "Temavideoer", + "HeaderThemeSongs": "Temasanger", "HeaderScenes": "Scener", "HeaderAwardsAndReviews": "Priser og anmeldelser", "HeaderSoundtracks": "Lydspor", - "HeaderMusicVideos": "Musikk Videoer", + "HeaderMusicVideos": "Musikkvideoer", "HeaderSpecialFeatures": "Spesielle Funksjoner", "HeaderCastCrew": "Mannskap", "HeaderAdditionalParts": "Tilleggsdeler", @@ -468,30 +468,30 @@ "ButtonPlayTrailer": "Trailer", "LabelMissing": "Mangler", "LabelOffline": "Offline", - "PathSubstitutionHelp": "Sti erstatninger er brukt for \u00e5 kartlegge en bane p\u00e5 serveren til en bane som kundene er i stand til \u00e5 f\u00e5 tilgang. Ved \u00e5 la kundene direkte tilgang til media p\u00e5 serveren kan de v\u00e6re i stand til \u00e5 spille dem direkte over nettverket, og unng\u00e5 \u00e5 bruke server ressurser til \u00e5 streame og omkode dem.", + "PathSubstitutionHelp": "Sti erstatninger er brukt for \u00e5 koble en katalog p\u00e5 serveren til en katalog som brukeren har tilgang til. Ved \u00e5 gi brukerne direkte tilgang til media p\u00e5 serveren kan de v\u00e6re i stand til \u00e5 spille dem direkte over nettverket, og unng\u00e5 \u00e5 bruke serverens ressurser til \u00e5 streame og transcode dem.", "HeaderFrom": "Fra", "HeaderTo": "Til", "LabelFrom": "Fra:", "LabelFromHelp": "Eksempel: D:\\Filmer (P\u00e5 serveren)", "LabelTo": "Til:", - "LabelToHelp": "Eksempel: \\\\MinServerFilmer (en sti som klienter kan f\u00e5 tilgang til)", + "LabelToHelp": "Eksempel: \\\\MinServer\\Filmer (en sti som klienter kan f\u00e5 tilgang til)", "ButtonAddPathSubstitution": "Legg til erstatter", "OptionSpecialEpisode": "Spesielle", "OptionMissingEpisode": "Mangler Episoder", "OptionUnairedEpisode": "Kommende Episoder", "OptionEpisodeSortName": "Episode Etter Navn", - "OptionSeriesSortName": "Serie Navn", + "OptionSeriesSortName": "Serienavn", "OptionTvdbRating": "Tvdb Rangering", - "HeaderTranscodingQualityPreference": "\u00d8nsket kvalitet for transkoding", - "OptionAutomaticTranscodingHelp": "Serveren vil bestemme kvalitet og hastighet", + "HeaderTranscodingQualityPreference": "\u00d8nsket kvalitet for transcoding", + "OptionAutomaticTranscodingHelp": "Serveren bestemmer kvalitet og hastighet", "OptionHighSpeedTranscodingHelp": "Lavere kvalitet, men raskere encoding", "OptionHighQualityTranscodingHelp": "H\u00f8yere kvalitet, men saktere encoding", - "OptionMaxQualityTranscodingHelp": "Beste kvalitet med saktere encoding og h\u00f8y CPU bruk", + "OptionMaxQualityTranscodingHelp": "Beste kvalitet med saktere encoding og h\u00f8y CPU-bruk", "OptionHighSpeedTranscoding": "H\u00f8yere hastighet", "OptionHighQualityTranscoding": "H\u00f8yere kvalitet", "OptionMaxQualityTranscoding": "Maks kvalitet", - "OptionEnableDebugTranscodingLogging": "Sl\u00e5 p\u00e5 debug transcoding logging", - "OptionEnableDebugTranscodingLoggingHelp": "Dette vil lage veldig lange log filer og er kun anbefalt for feils\u00f8king.", + "OptionEnableDebugTranscodingLogging": "Sl\u00e5 p\u00e5 debug-logging av transcoding", + "OptionEnableDebugTranscodingLoggingHelp": "Dette vil lage veldig store log-filer og er kun anbefalt ved feils\u00f8king.", "EditCollectionItemsHelp": "Legg til eller fjern hvilken som helst film, serie, album, bok eller spill som du \u00f8nsker \u00e5 gruppere innen denne samlingen.", "HeaderAddTitles": "Legg til Titler", "LabelEnableDlnaPlayTo": "Sl\u00e5 p\u00e5 DLNA Play To", @@ -501,52 +501,52 @@ "LabelEnableDlnaClientDiscoveryInterval": "Klient oppdaterings interval (Sekunder)", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bestemmer varigheten i sekunder mellom SSDP s\u00f8k utf\u00f8rt av Media Browser.", "HeaderCustomDlnaProfiles": "Tilpassede Profiler", - "HeaderSystemDlnaProfiles": "System Profiler", - "CustomDlnaProfilesHelp": "Lag en tilpasset profil for \u00e5 sette en ny enhet til \u00e5 overkj\u00f8re en system profil.", - "SystemDlnaProfilesHelp": "System profiler er read-only. Endinger til ett system profil vil bli lagret til en ny tilpasset profil.", + "HeaderSystemDlnaProfiles": "Systemprofiler", + "CustomDlnaProfilesHelp": "Lag en tilpasset profil for \u00e5 sette en ny enhet til \u00e5 overstyre en system profil.", + "SystemDlnaProfilesHelp": "Systemprofiler er read-only. Endinger p\u00e5 en systemprofil vil bli lagret til en ny tilpasset profil.", "TitleDashboard": "Dashbord", "TabHome": "Hjem", "TabInfo": "Info", "HeaderLinks": "Lenker", - "HeaderSystemPaths": "System Stier", + "HeaderSystemPaths": "Systemstier", "LinkCommunity": "Samfunn", "LinkGithub": "Github", - "LinkApi": "Api", - "LinkApiDocumentation": "Api Dokumentasjon", + "LinkApi": "API", + "LinkApiDocumentation": "API Dokumentasjon", "LabelFriendlyServerName": "Vennlig server navn:", "LabelFriendlyServerNameHelp": "Dette navnet vil bli brukt for \u00e5 identifisere denne serveren. Hvis feltet er tomt, vil maskinens navn bli brukt.", - "LabelPreferredDisplayLanguage": "Foretrukket skjerm spr\u00e5k:", + "LabelPreferredDisplayLanguage": "Foretrukket spr\u00e5k:", "LabelPreferredDisplayLanguageHelp": "Oversetting av Media Browser er ett p\u00e5g\u00e5ende prosjekt og er enda ikke fullstendig ferdig.", "LabelReadHowYouCanContribute": "Les mer om hvordan du kan bidra.", "HeaderNewCollection": "Ny Samling", "ButtonSubmit": "Send", "ButtonCreate": "Opprett", - "LabelCustomCss": "Custom css:", - "LabelCustomCssHelp": "Apply your own custom css to the web interface.", - "LabelLocalHttpServerPortNumber": "Local http port number:", - "LabelLocalHttpServerPortNumberHelp": "tcp port nummeret som Media Browser sin https server skal bindes mot.", - "LabelPublicHttpPort": "Public http port number:", - "LabelPublicHttpPortHelp": "The public port number that should be mapped to the local http port.", - "LabelPublicHttpsPort": "Public https port number:", - "LabelPublicHttpsPortHelp": "The public port number that should be mapped to the local https port.", - "LabelEnableHttps": "Report https as external address", - "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address. This may break clients that do not yet support https.", - "LabelHttpsPort": "Local https port number:", - "LabelHttpsPortHelp": "The tcp port number that Media Browser's https server should bind to.", - "LabelWebSocketPortNumber": "Web socker port nummer:", - "LabelEnableAutomaticPortMap": "Aktiver automatisk port mapping", - "LabelEnableAutomaticPortMapHelp": "Fors\u00f8k automatisk mapping av den offentlige port til den lokale port via UPnP. Dette kan fungerer d\u00e5rlig med noen ruter modeller.", - "LabelExternalDDNS": "External WAN Address:", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Media Browser apps will use it when connecting remotely. Leave empty for automatic detection.", + "LabelCustomCss": "Tilpass CSS:", + "LabelCustomCssHelp": "Bruk din egen CSS p\u00e5 web-grensesnittet.", + "LabelLocalHttpServerPortNumber": "Lokal HTTP port:", + "LabelLocalHttpServerPortNumberHelp": "TCP port nummeret som Media Browsers https server skal bindes mot.", + "LabelPublicHttpPort": "Offentlig HTTP port:", + "LabelPublicHttpPortHelp": "Den offentlige porten som kobles til den lokale porten.", + "LabelPublicHttpsPort": "Offentlig HTTPS port:", + "LabelPublicHttpsPortHelp": "Den offentlige porten som den lokale porten kobles til.", + "LabelEnableHttps": "Oppgi HTTPS som ekstern adresse", + "LabelEnableHttpsHelp": "Hvis denne er aktivert vil serveren oppgi en HTTPS URL som sin eksterne adresse. Dette kan \u00f8delegge for klienter som enda ikke st\u00f8tter HTTPS.", + "LabelHttpsPort": "Lokal HTTPS port:", + "LabelHttpsPortHelp": "TCP port som Media Browsers HTTPS server skal benytte.", + "LabelWebSocketPortNumber": "Web socket portnummer:", + "LabelEnableAutomaticPortMap": "Aktiver automatisk portmapping", + "LabelEnableAutomaticPortMapHelp": "Fors\u00f8k automatisk mapping av den offentlige port til den lokale port via UPnP. Dette fungerer ikke med alle rutere.", + "LabelExternalDDNS": "Ekstern WAN-adresse:", + "LabelExternalDDNSHelp": "Hvis du har en dynamisk DNS, angi denne her. Media Browser applikasjoneer bruker den n\u00e5r de kobler til fra utsiden. La dette feltet v\u00e6re tomt for automatisk innhenting.", "TabResume": "Forsette", "TabWeather": "V\u00e6r", - "TitleAppSettings": "App Innstillinger", - "LabelMinResumePercentage": "Minimum fortsettelses prosent:", - "LabelMaxResumePercentage": "Maksimum fortsettelses prosent:", + "TitleAppSettings": "App-innstillinger", + "LabelMinResumePercentage": "Minimum fortsettelsesprosent:", + "LabelMaxResumePercentage": "Maksimum fortsettelsesprosent:", "LabelMinResumeDuration": "Minmimum fortsettelses varighet (sekunder)", "LabelMinResumePercentageHelp": "Titler blir antatt som ikke avspilt hvis de stopper f\u00f8r denne tiden", "LabelMaxResumePercentageHelp": "Titler blir antatt som fullstendig avspilt hvis de stopper etter denne tiden", - "LabelMinResumeDurationHelp": "Titler kortere enn dette vil ikke forsette.", + "LabelMinResumeDurationHelp": "Titler kortere enn dette kan ikke fortsettes.", "TitleAutoOrganize": "Auto-Organisering", "TabActivityLog": "Aktivitetslog", "HeaderName": "Navn", @@ -558,7 +558,7 @@ "LabelCompleted": "Fullf\u00f8rt", "LabelFailed": "Feilet", "LabelSkipped": "Hoppet over", - "HeaderEpisodeOrganization": "Episode Organisering", + "HeaderEpisodeOrganization": "Organisering av episoder", "LabelSeries": "Serie:", "LabelSeasonNumber": "Sesong nummer:", "LabelEpisodeNumber": "Episode nummer:", @@ -567,12 +567,12 @@ "HeaderSupportTheTeam": "St\u00f8tt Media Browser Teamet", "LabelSupportAmount": "Sum (USD)", "HeaderSupportTheTeamHelp": "Bidra til \u00e5 sikre fortsatt utvikling av dette prosjektet ved \u00e5 donere. En del av alle donasjoner vil v\u00e6re bidratt til andre gratis verkt\u00f8y vi er avhengige av.", - "ButtonEnterSupporterKey": "Skriv supporter n\u00f8kkel", - "DonationNextStep": "N\u00e5r du er ferdig, kan du g\u00e5 tilbake og skriv inn din support n\u00f8kkel, som du vil motta p\u00e5 e-post.", - "AutoOrganizeHelp": "Auto-organisere monitorerer dine nedlastingsmapper for nye filer og flytter dem til medie kataloger.", - "AutoOrganizeTvHelp": "TV file organisering vil kun legge til episoder til eksisterende episoder. Den vil ikke lage nye serie mapper.", - "OptionEnableEpisodeOrganization": "Aktiver ny episode organisering", - "LabelWatchFolder": "Se p\u00e5 Mappe:", + "ButtonEnterSupporterKey": "Skriv supportn\u00f8kkel", + "DonationNextStep": "N\u00e5r du er ferdig, kan du g\u00e5 tilbake og skriv inn din supportn\u00f8kkel, som du vil motta p\u00e5 e-post.", + "AutoOrganizeHelp": "Auto-organisere monitorerer dine nedlastingsmapper for nye filer og flytter dem til riktig mediakatalog.", + "AutoOrganizeTvHelp": "TV organisering vil kun legge til episoder til eksisterende serier. Den vil ikke lage nye serie-mapper.", + "OptionEnableEpisodeOrganization": "Aktiver organisering av ny episode", + "LabelWatchFolder": "Se p\u00e5 mappe:", "LabelWatchFolderHelp": "Serveren vil hente denne mappen under 'Organiser nye mediefiler' planlagte oppgaven.", "ButtonViewScheduledTasks": "Se p\u00e5 planlagte oppgaver", "LabelMinFileSizeForOrganize": "Minimum fil st\u00f8rrelse (MB):", @@ -599,8 +599,8 @@ "HeaderHelpImproveMediaBrowser": "Hjelp \u00e5 forbedre Media Browser", "HeaderRunningTasks": "Kj\u00f8rende oppgaver", "HeaderActiveDevices": "Aktive enheter", - "HeaderPendingInstallations": "ventede installasjoner", - "HeaderServerInformation": "Server Information", + "HeaderPendingInstallations": "Installeringer i k\u00f8", + "HeaderServerInformation": "Serverinformasjon", "ButtonRestartNow": "Restart N\u00e5", "ButtonRestart": "Restart", "ButtonShutdown": "Sl\u00e5 Av", @@ -611,64 +611,64 @@ "ServerUpToDate": "Media Browser Server er oppdatert", "LabelComponentsUpdated": "F\u00f8lgende komponenter har blitt installert eller oppdatert:", "MessagePleaseRestartServerToFinishUpdating": "Vennligst restart serveren for \u00e5 fullf\u00f8re installasjon av oppdateringer.", - "LabelDownMixAudioScale": "Lyd boost n\u00e5r downmixing:", + "LabelDownMixAudioScale": "Lyd boost ved downmixing:", "LabelDownMixAudioScaleHelp": "Boost lyd n\u00e5r downmixing. Set til 1 for \u00e5 bevare orginal volum verdi.", - "ButtonLinkKeys": "Overf\u00f8r N\u00f8kkel", - "LabelOldSupporterKey": "Gammel supporter n\u00f8kkel", - "LabelNewSupporterKey": "Ny supporter n\u00f8kkel", - "HeaderMultipleKeyLinking": "Overf\u00f8r til ny N\u00f8kkel", - "MultipleKeyLinkingHelp": "Bruk dette skjemaet hvis du har mottatt en ny support n\u00f8kkel for \u00e5 overf\u00f8re gamle n\u00f8kkel registreringer til din nye.", - "LabelCurrentEmailAddress": "Gjeldende email adresse", + "ButtonLinkKeys": "Overf\u00f8r n\u00f8kkel", + "LabelOldSupporterKey": "Gammel supportern\u00f8kkel", + "LabelNewSupporterKey": "Ny supportern\u00f8kkel", + "HeaderMultipleKeyLinking": "Overf\u00f8r til ny n\u00f8kkel", + "MultipleKeyLinkingHelp": "Bruk dette skjemaet hvis du har mottatt en ny supportn\u00f8kkel for \u00e5 overf\u00f8re gamle n\u00f8kkelregistreringer til din nye.", + "LabelCurrentEmailAddress": "Gjeldende epostadresse", "LabelCurrentEmailAddressHelp": "Den aktuelle e-postadressen som den nye n\u00f8kkelen ble sendt.", "HeaderForgotKey": "Glemt N\u00f8kkel", - "LabelEmailAddress": "e-postadresse", - "LabelSupporterEmailAddress": "e-postadressen som ble brukt for \u00e5 kj\u00f8pe n\u00f8kkelen.", + "LabelEmailAddress": "Epostadresse", + "LabelSupporterEmailAddress": "Epostadressen som ble brukt for \u00e5 kj\u00f8pe n\u00f8kkelen.", "ButtonRetrieveKey": "Motta N\u00f8kkel", - "LabelSupporterKey": "Supporter N\u00f8kkel (Lim inn fra e-postadresse)", - "LabelSupporterKeyHelp": "Skriv inn din supporter n\u00f8kkel for \u00e5 kunne nyte flere fordeler som samfunnet har utviklet for Media Browser.", - "MessageInvalidKey": "Supporter n\u00f8kkel mangler eller er feil.", - "ErrorMessageInvalidKey": "For eventuelt premiuminnhold for \u00e5 bli registrert, m\u00e5 du ogs\u00e5 v\u00e6re en Media Browser Supporter. Vennligst doner og st\u00f8tt det videre-utviklede av kjerneproduktet. Takk.", - "HeaderDisplaySettings": "Visnings Innstillinger", + "LabelSupporterKey": "Supporter N\u00f8kkel (Lim inn fra mottatt epost)", + "LabelSupporterKeyHelp": "Skriv inn din supporter n\u00f8kkel for \u00e5 kunne nyte flere fordeler som utviklerne har laget for Media Browser.", + "MessageInvalidKey": "Supportern\u00f8kkel mangler eller er feil.", + "ErrorMessageInvalidKey": "For \u00e5 registrere premium innhold m\u00e5 du v\u00e6re en Media Browser Supporter. Vennligst don\u00e9r og st\u00f8tt videre utvikling av kMedia Server. Takk skal du ha!", + "HeaderDisplaySettings": "Visnings innstillinger", "TabPlayTo": "Spill Til", "LabelEnableDlnaServer": "Sl\u00e5 p\u00e5 Dlna server", - "LabelEnableDlnaServerHelp": "Tillat UPnP enheter p\u00e5 ditt nettverk for \u00e5 s\u00f8ke gjennom spill Media Browser innhold.", + "LabelEnableDlnaServerHelp": "Tillat UPnP-enheter p\u00e5 ditt nettverk \u00e5 s\u00f8ke gjennom og \u00e5 spille innhold p\u00e5 Media Browser.", "LabelEnableBlastAliveMessages": "Spreng levende meldinger", - "LabelEnableBlastAliveMessagesHelp": "Sl\u00e5 p\u00e5 hvis serveren ikke detekterer p\u00e5litelighet fra andre UPnP enheter p\u00e5 ditt nettverk.", - "LabelBlastMessageInterval": "Levende meldinger invertall (sekunder)", + "LabelEnableBlastAliveMessagesHelp": "Sl\u00e5 p\u00e5 hvis serveren ikke regelmessig blir oppdaget av andre UPnP-enheter p\u00e5 ditt nettverk.", + "LabelBlastMessageInterval": "Intervall mellom keepalive meldinger (sekunder)", "LabelBlastMessageIntervalHelp": "Avgj\u00f8r tiden i sekunder mellom server levende meldinger.", "LabelDefaultUser": "Standard bruker:", "LabelDefaultUserHelp": "Avgj\u00f8r hvilket bruker bibliotek som skal bli vist p\u00e5 koblede enheter. Dette kan bli overskrevet for hver enhet som bruker profiler.", "TitleDlna": "DLNA", "TitleChannels": "Kanaler", - "HeaderServerSettings": "Server Innstillinger", - "LabelWeatherDisplayLocation": "V\u00e6r-visning lokalisering:", + "HeaderServerSettings": "Serverinnstillinger", + "LabelWeatherDisplayLocation": "Omr\u00e5de for v\u00e6rvisning:", "LabelWeatherDisplayLocationHelp": "US zip kode \/ By, Stat, Land \/ By, Land", - "LabelWeatherDisplayUnit": "V\u00e6r-visning enhet:", + "LabelWeatherDisplayUnit": "V\u00e6r-visning C eller F:", "OptionCelsius": "Celsius", "OptionFahrenheit": "Fahrenheit", "HeaderRequireManualLogin": "Krev manuell brukernavn oppf\u00f8ring for:", - "HeaderRequireManualLoginHelp": "N\u00e5r deaktiverte brukere kan presentere en innloggingskjerm med ett visuelt utvalg av brukere.", + "HeaderRequireManualLoginHelp": "N\u00e5r deaktiverte kan brukere vises en innloggingskjerm med et visuelt utvalg av brukere.", "OptionOtherApps": "Andre applikasjoner", "OptionMobileApps": "Mobile applikasjoner", - "HeaderNotificationList": "Klikk p\u00e5 en varsling for \u00e5 konfigurere dens sending-alternativer.", - "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig", - "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert", - "NotificationOptionPluginUpdateInstalled": "Programtillegg oppdatering installert", + "HeaderNotificationList": "Klikk p\u00e5 en varsling for \u00e5 konfigurere dennes sending-alternativer.", + "NotificationOptionApplicationUpdateAvailable": "Oppdatering tilgjengelig", + "NotificationOptionApplicationUpdateInstalled": "Oppdatering installert", + "NotificationOptionPluginUpdateInstalled": "Oppdatert programtillegg installert", "NotificationOptionPluginInstalled": "Programtillegg installert", "NotificationOptionPluginUninstalled": "Programtillegg er fjernet", - "NotificationOptionVideoPlayback": "Video avspilling startet", - "NotificationOptionAudioPlayback": "Lyd avspilling startet", - "NotificationOptionGamePlayback": "Spill avspilling startet", - "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet", - "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet", - "NotificationOptionGamePlaybackStopped": "Spill avspilling stoppet", - "NotificationOptionTaskFailed": "Tidsplan oppgave feilet", + "NotificationOptionVideoPlayback": "Videoavspilling startet", + "NotificationOptionAudioPlayback": "Lydavspilling startet", + "NotificationOptionGamePlayback": "Spill startet", + "NotificationOptionVideoPlaybackStopped": "Videoavspilling stoppet", + "NotificationOptionAudioPlaybackStopped": "Lydavspilling stoppet", + "NotificationOptionGamePlaybackStopped": "Spill stoppet", + "NotificationOptionTaskFailed": "Planlagt oppgave feilet", "NotificationOptionInstallationFailed": "Installasjon feilet", "NotificationOptionNewLibraryContent": "Nytt innhold er lagt til", "NotificationOptionNewLibraryContentMultiple": "Nytt innhold lagt til (flere)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "SendNotificationHelp": "Som standard blir varslinger sent til dashbord innboksen. Bla igjennom programtillegg katalogen for \u00e5 installere valgfrie varslings-alternativer.", - "NotificationOptionServerRestartRequired": "Server omstart beh\u00f8ves", + "NotificationOptionCameraImageUploaded": "Bilde fra kamera lastet opp", + "SendNotificationHelp": "Som standard blir varslinger sent til dashbordets innboks. Bla igjennom katalog med programtillegg for \u00e5 installere valgfrie varslings-alternativer.", + "NotificationOptionServerRestartRequired": "Server m\u00e5 startes p\u00e5 nytt", "LabelNotificationEnabled": "Sl\u00e5 p\u00e5 denne varslingen", "LabelMonitorUsers": "Monitorer aktivitet fra:", "LabelSendNotificationToUsers": "Send varslingen til:", @@ -679,7 +679,7 @@ "CategoryPlugin": "Programtillegg", "LabelMessageTitle": "Meldingstittel:", "LabelAvailableTokens": "Tilgjengelige tokens:", - "AdditionalNotificationServices": "Bla gjennom programtillegg katalogen for \u00e5 installere valgfrie varslingstjenester.", + "AdditionalNotificationServices": "Bla gjennom katalogen over programtillegg for \u00e5 installere valgfrie varslingstjenester.", "OptionAllUsers": "Alle brukere:", "OptionAdminUsers": "Administratorer", "OptionCustomUsers": "Tilpasset", @@ -689,7 +689,7 @@ "ButtonArrowRight": "H\u00f8yre", "ButtonBack": "Tilbake", "ButtonInfo": "Info", - "ButtonOsd": "P\u00e5 skjermvisning", + "ButtonOsd": "Skjermmeldinger", "ButtonPageUp": "Side Opp", "ButtonPageDown": "Side Ned", "PageAbbreviation": "PG", @@ -714,21 +714,21 @@ "ButtonPause": "Pause", "ButtonNext": "Neste", "ButtonPrevious": "Forrige", - "LabelGroupMoviesIntoCollections": "Grupper filmer inni samlinger", - "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister vil filmer som tilh\u00f8rer en samling vil bli vist som ett grupperende element.", - "NotificationOptionPluginError": "Programtillegg feil", + "LabelGroupMoviesIntoCollections": "Grupp\u00e9r filmer i samlinger", + "LabelGroupMoviesIntoCollectionsHelp": "Ved visning av filmlister vil filmer som tilh\u00f8rer en samling bli vist som ett gruppeelement.", + "NotificationOptionPluginError": "Programtillegg feilet", "ButtonVolumeUp": "Volum opp", "ButtonVolumeDown": "Volum ned", "ButtonMute": "Mute", "HeaderLatestMedia": "Siste Media", "OptionSpecialFeatures": "Spesielle Funksjoner", "HeaderCollections": "Samlinger", - "LabelProfileCodecsHelp": "Separert med komma. Dette feltet kan forbli tomt for \u00e5 gjelde alle kodeker.", + "LabelProfileCodecsHelp": "Separert med komma. Dette feltet kan forbli tomt for \u00e5 gjelde alle codecs.", "LabelProfileContainersHelp": "Separert med komma. Dette feltet kan forbli tomt for \u00e5 gjelde alle kontainere.", - "HeaderResponseProfile": "Respons Profil", + "HeaderResponseProfile": "Responsprofil", "LabelType": "Type:", "LabelPersonRole": "Rolle:", - "LabelPersonRoleHelp": "Rolle er generelt kun aktuelt for skuespillere.", + "LabelPersonRoleHelp": "Rolle er vanligvis kun tilgjengelig for skuespillere.", "LabelProfileContainer": "Kontainer:", "LabelProfileVideoCodecs": "Video kodek:", "LabelProfileAudioCodecs": "Lyd kodek:", @@ -1333,24 +1333,24 @@ "HeaderForgotPassword": "Glemt passord", "TitleForgotPassword": "Glemt passord", "TitlePasswordReset": "Resett passord", - "LabelPasswordRecoveryPinCode": "Pin code:", + "LabelPasswordRecoveryPinCode": "PIN-kode:", "HeaderPasswordReset": "Resett passord", - "HeaderParentalRatings": "Parental Ratings", - "HeaderVideoTypes": "Video Types", - "HeaderYears": "Years", - "HeaderAddTag": "Add Tag", - "LabelBlockContentWithTags": "Block content with tags:", + "HeaderParentalRatings": "Foreldresensur", + "HeaderVideoTypes": "Videotyper", + "HeaderYears": "\u00c5r", + "HeaderAddTag": "Legg til tag", + "LabelBlockContentWithTags": "Blokker innhold med f\u00f8lgende tags:", "LabelTag": "Tag:", - "LabelEnableSingleImageInDidlLimit": "Limit to single embedded image", - "LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.", - "TabActivity": "Activity", - "TitleSync": "Sync", - "OptionAllowSyncContent": "Allow Sync", - "OptionAllowContentDownloading": "Allow media downloading", - "NameSeasonUnknown": "Season Unknown", - "NameSeasonNumber": "Season {0}", - "LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)", - "TabJobs": "Jobs", + "LabelEnableSingleImageInDidlLimit": "Maksimalt et innebygd bilde", + "LabelEnableSingleImageInDidlLimitHelp": "Noen enheter vil ikke vise bildene korrekt hvis flere bilder er innebygget i Didl.", + "TabActivity": "Aktivitet", + "TitleSync": "Synk", + "OptionAllowSyncContent": "Tillat synk", + "OptionAllowContentDownloading": "Tillat nedlasting av media", + "NameSeasonUnknown": "Ukjent sesong", + "NameSeasonNumber": "Sesong {0}", + "LabelNewUserNameHelp": "Brukernavn kan inneholder internasjonale bokstaver (a-z), tall (0-9), bindestrek (-), understrek (_), apostrof (') og punktum (.)", + "TabJobs": "Jobber", "TabSyncJobs": "Sync Jobs", "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well." diff --git a/MediaBrowser.Server.Implementations/Localization/Server/nl.json b/MediaBrowser.Server.Implementations/Localization/Server/nl.json index 213b61df2..040e3b8d5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -288,7 +288,7 @@ "OptionAllowMediaPlayback": "Media afspelen toestaan", "OptionAllowBrowsingLiveTv": "Live TV toegang toestaan", "OptionAllowDeleteLibraryContent": "Media verwijderen toestaan", - "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowManageLiveTv": "Sta Live TV opname beheer toe", "OptionAllowRemoteControlOthers": "Op afstand besturen van andere gebruikers toestaan", "OptionAllowRemoteSharedDevices": "Op afstand besturen van gedeelde apparaten toestaan", "OptionAllowRemoteSharedDevicesHelp": "Dlna apparaten worden als gedeeld apparaat gezien totdat een gebruiker deze gaat gebruiken.", @@ -885,13 +885,13 @@ "OptionCommunityMostWatchedSort": "Meest bekeken", "TabNextUp": "Volgend", "HeaderBecomeMediaBrowserSupporter": "Word een Media Browser Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "TextEnjoyBonusFeatures": "Geniet van Bonus Features", "MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.", "MessageNoCollectionsAvailable": "Collecties maken het u mogelijk om Films, Series, Albums, Boeken en Games te groeperen. Klik op de + knop om Collecties aan te maken.", "MessageNoPlaylistsAvailable": "Met afspeellijsten kunt u een lijst maken waarvan de items achter elkaar afgespeeld worden. Om een item toe te voegen klikt u met rechts of tik en houd het vast om het te selecteren, klik vervolgens op Toevoegen aan afspeellijst.", "MessageNoPlaylistItemsAvailable": "De afspeellijst is momenteel leeg.", "ButtonDismiss": "Afwijzen", - "ButtonEditOtherUserPreferences": "Edit this user's profile, image and personal preferences.", + "ButtonEditOtherUserPreferences": "Wijzig het profiel, afbeelding en persoonlijke voorkeuren van deze gebruiker.", "LabelChannelStreamQuality": "Voorkeurs kwaliteit internet stream:", "LabelChannelStreamQualityHelp": "Bij weinig beschikbare bandbreedte kan het verminderen van de kwaliteit betere streams opleveren.", "OptionBestAvailableStreamQuality": "Best beschikbaar", @@ -950,9 +950,9 @@ "LabelProtocolInfo": "Protocol info:", "LabelProtocolInfoHelp": "De waarde die wordt gebruikt bij het reageren op GetProtocolInfo verzoeken van het apparaat.", "TabNfo": "Nfo", - "HeaderKodiMetadataHelp": "Media Browser includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", + "HeaderKodiMetadataHelp": "Media Browser ondersteund NFO metadata bestanden. Gebruik het tabblad geavanceerd om het gebruik NFO metadata aan of uit te zetten.", "LabelKodiMetadataUser": "Synchroniseer gekeken informatie toe aan NFO's voor (gebruiker):", - "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Media Browser and Nfo files.", + "LabelKodiMetadataUserHelp": "Inschakelen om de bekijk gegevens tussen Media Browser en NFO bestanden te synchroniseren.", "LabelKodiMetadataDateFormat": "Uitgave datum formaat:", "LabelKodiMetadataDateFormatHelp": "Alle datums in NFO's zullen gelezen en geschreven worden met dit formaat.", "LabelKodiMetadataSaveImagePaths": "Bewaar afbeeldingspaden in NFO-bestanden", @@ -1101,7 +1101,7 @@ "MessageApplicationUpdated": "Media Browser Server is bijgewerkt", "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd", "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserDownloadingItemWithValues": "{0} download {1}", "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart", "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt", "AppDeviceValues": "App: {0}, Apparaat: {1}", @@ -1119,9 +1119,9 @@ "ViewTypeLiveTvRecordingGroups": "Opnamen", "ViewTypeLiveTvChannels": "Kanalen", "LabelEasyPinCode": "Eenvoudige pincode:", - "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Media Browser apps, and can also be used for easy in-network sign in.", - "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", - "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Media Browser apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", + "EasyPasswordHelp": "Je easy pin code wordt gebruikt voor offline toegang met ondersteunende Media Browser apps en kan ook gebruikt worden voor eenvoudige aanmelding.", + "LabelInNetworkSignInWithEasyPassword": "Schakel eenvoudige lokale aanmelding in met mijn easy pin code", + "LabelInNetworkSignInWithEasyPasswordHelp": "Als dit ingeschakeld is is het mogelijk om lokaal met je easy pin code Media Browser apps aan te melden. Je gewone wachtwoord is alleen nodig bij toegang buitenshuis. Als de easy pin code leeg is kan je lokaal zonder wachtwoord aanmelden.", "HeaderPassword": "Wachtwoord", "HeaderLocalAccess": "Lokale toegang", "HeaderViewOrder": "Weergave volgorde", @@ -1353,5 +1353,5 @@ "TabJobs": "Opdrachten", "TabSyncJobs": "Sync Opdrachten", "LabelTagFilterMode": "Mode:", - "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well." + "LabelTagFilterAllowModeHelp": "Als toegestane tags worden gebruikt in een diep geneste mappenstructuur, zal getagde inhoud vereisen dat de bovenliggende mappen ook getagd zijn." } \ No newline at end of file From 7fd26410a9c49e84a146dfd77a2732b2330c3834 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 23 Feb 2015 13:55:38 -0500 Subject: [PATCH 017/169] added connection manager events --- MediaBrowser.Server.Implementations/Library/UserManager.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 59fecc857..bf8792461 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -192,10 +192,10 @@ namespace MediaBrowser.Server.Implementations.Library public bool IsValidUsername(string username) { // Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.) - return username.All(IsValidCharacter); + return username.All(IsValidUsernameCharacter); } - private bool IsValidCharacter(char i) + private bool IsValidUsernameCharacter(char i) { return char.IsLetterOrDigit(i) || char.Equals(i, '-') || char.Equals(i, '_') || char.Equals(i, '\'') || char.Equals(i, '.'); @@ -213,7 +213,7 @@ namespace MediaBrowser.Server.Implementations.Library foreach (var c in username) { - if (IsValidCharacter(c)) + if (IsValidUsernameCharacter(c)) { builder.Append(c); } From 17ea0217f57f4439d65edcfd2091f1bb47570438 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 25 Feb 2015 13:11:49 -0500 Subject: [PATCH 018/169] handle incomplete local metadata --- .../Manager/MetadataService.cs | 10 +++++++++- .../Movies/MovieMetadataService.cs | 17 +++++++++++++++++ .../TV/SeriesMetadataService.cs | 17 +++++++++++++++++ .../LiveTv/LiveTvDtoService.cs | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index ab6cb89a6..523d39375 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -397,7 +397,10 @@ namespace MediaBrowser.Providers.Manager refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport; // Only one local provider allowed per item - hasLocalMetadata = true; + if (IsFullLocalMetadata(localItem.Item)) + { + hasLocalMetadata = true; + } successfulProviderCount++; break; } @@ -473,6 +476,11 @@ namespace MediaBrowser.Providers.Manager return refreshResult; } + protected virtual bool IsFullLocalMetadata(TItemType item) + { + return true; + } + private async Task ImportUserData(TItemType item, List userDataList, CancellationToken cancellationToken) { var hasUserData = item as IHasUserData; diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index af9970b69..172ae6814 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -33,5 +33,22 @@ namespace MediaBrowser.Providers.Movies target.TmdbCollectionName = source.TmdbCollectionName; } } + + protected override bool IsFullLocalMetadata(Movie item) + { + if (string.IsNullOrWhiteSpace(item.Name)) + { + return false; + } + if (string.IsNullOrWhiteSpace(item.Overview)) + { + return false; + } + if (!item.ProductionYear.HasValue) + { + return false; + } + return base.IsFullLocalMetadata(item); + } } } diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index df06525c1..a5959f0b7 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -74,5 +74,22 @@ namespace MediaBrowser.Providers.TV await provider.Run(item, CancellationToken.None).ConfigureAwait(false); } } + + protected override bool IsFullLocalMetadata(Series item) + { + if (string.IsNullOrWhiteSpace(item.Name)) + { + return false; + } + if (string.IsNullOrWhiteSpace(item.Overview)) + { + return false; + } + if (!item.ProductionYear.HasValue) + { + return false; + } + return base.IsFullLocalMetadata(item); + } } } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index f1bb5c13a..6473d10d6 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -442,7 +442,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv return null; } - private const string InternalVersionNumber = "3"; + private const string InternalVersionNumber = "4"; public Guid GetInternalChannelId(string serviceName, string externalId) { From 5b9999eccff26db4f285179ed0b682f46f6dad81 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 25 Feb 2015 15:55:01 -0500 Subject: [PATCH 019/169] Prototype 2 of max task length for scheduled tasks. --- .../ScheduledTasks/ScheduledTaskWorker.cs | 18 ++++++--- .../ScheduledTasks/TaskManager.cs | 39 +++++++++++-------- .../MediaBrowser.Common.csproj | 1 + .../ScheduledTasks/DailyTrigger.cs | 13 ++++++- .../ScheduledTasks/ITaskManager.cs | 11 ++++-- .../ScheduledTasks/ITaskTrigger.cs | 11 +++++- .../ScheduledTasks/IntervalTrigger.cs | 13 ++++++- .../ScheduledTasks/StartupTrigger.cs | 13 ++++++- .../ScheduledTasks/SystemEventTrigger.cs | 13 ++++++- .../ScheduledTasks/TaskExecutionOptions.cs | 16 ++++++++ .../ScheduledTasks/WeeklyTrigger.cs | 13 ++++++- 11 files changed, 124 insertions(+), 37 deletions(-) create mode 100644 MediaBrowser.Common/ScheduledTasks/TaskExecutionOptions.cs diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 4d6cc1608..78dcea493 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -313,7 +313,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// /// The source of the event. /// The instance containing the event data. - async void trigger_Triggered(object sender, EventArgs e) + async void trigger_Triggered(object sender, GenericEventArgs e) { var trigger = (ITaskTrigger)sender; @@ -340,11 +340,12 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// /// Executes the task /// + /// Task options. /// Task. /// Cannot execute a Task that is already running - public async Task Execute() + public async Task Execute(TaskExecutionOptions options) { - var task = ExecuteInternal(); + var task = ExecuteInternal(options); _currentTask = task; @@ -358,7 +359,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks } } - private async Task ExecuteInternal() + private async Task ExecuteInternal(TaskExecutionOptions options) { // Cancel the current execution, if any if (CurrentCancellationTokenSource != null) @@ -383,7 +384,14 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks try { - await ExecuteTask(CurrentCancellationTokenSource.Token, progress).ConfigureAwait(false); + var localTask = ScheduledTask.Execute(CurrentCancellationTokenSource.Token, progress); + + if (options != null && options.MaxRuntimeMs.HasValue) + { + CurrentCancellationTokenSource.CancelAfter(options.MaxRuntimeMs.Value); + } + + await localTask.ConfigureAwait(false); status = TaskCompletionStatus.Completed; } diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs index 5a3ac53dc..a77efe855 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/TaskManager.cs @@ -29,7 +29,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// /// The _task queue /// - private readonly List _taskQueue = new List(); + private readonly SortedDictionary _taskQueue = new SortedDictionary(); /// /// Gets or sets the json serializer. @@ -69,13 +69,14 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// Cancels if running and queue. /// /// - public void CancelIfRunningAndQueue() + /// Task options. + public void CancelIfRunningAndQueue(TaskExecutionOptions options) where T : IScheduledTask { var task = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)); ((ScheduledTaskWorker)task).CancelIfRunning(); - QueueScheduledTask(); + QueueScheduledTask(options); } /// @@ -93,30 +94,33 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks /// Queues the scheduled task. /// /// - public void QueueScheduledTask() + /// Task options + public void QueueScheduledTask(TaskExecutionOptions options) where T : IScheduledTask { var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == typeof(T)); - QueueScheduledTask(scheduledTask); + QueueScheduledTask(scheduledTask, options); } /// /// Queues the scheduled task. /// /// The task. - public void QueueScheduledTask(IScheduledTask task) + /// The task options. + public void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options) { var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == task.GetType()); - QueueScheduledTask(scheduledTask); + QueueScheduledTask(scheduledTask, options); } /// /// Queues the scheduled task. /// /// The task. - private void QueueScheduledTask(IScheduledTaskWorker task) + /// The task options. + private void QueueScheduledTask(IScheduledTaskWorker task, TaskExecutionOptions options) { var type = task.ScheduledTask.GetType(); @@ -125,17 +129,18 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks // If it's idle just execute immediately if (task.State == TaskState.Idle) { - Execute(task); + Execute(task, options); return; } - if (!_taskQueue.Contains(type)) + if (!_taskQueue.ContainsKey(type)) { Logger.Info("Queueing task {0}", type.Name); - _taskQueue.Add(type); + _taskQueue.Add(type, options); } else { + _taskQueue[type] = options; Logger.Info("Task already queued: {0}", type.Name); } } @@ -181,9 +186,9 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks ((ScheduledTaskWorker)task).Cancel(); } - public Task Execute(IScheduledTaskWorker task) + public Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options) { - return ((ScheduledTaskWorker)task).Execute(); + return ((ScheduledTaskWorker)task).Execute(options); } /// @@ -224,15 +229,15 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks // Execute queued tasks lock (_taskQueue) { - foreach (var type in _taskQueue.ToList()) + foreach (var enqueuedType in _taskQueue.ToList()) { - var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == type); + var scheduledTask = ScheduledTasks.First(t => t.ScheduledTask.GetType() == enqueuedType.Key); if (scheduledTask.State == TaskState.Idle) { - Execute(scheduledTask); + Execute(scheduledTask, enqueuedType.Value); - _taskQueue.Remove(type); + _taskQueue.Remove(enqueuedType.Key); } } } diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index c46dd4a4f..ad0c0cecd 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -86,6 +86,7 @@ + diff --git a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs index bfecadee7..2f935607b 100644 --- a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// The timer. private Timer Timer { get; set; } + /// + /// Gets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + public TaskExecutionOptions TaskOptions { get; set; } + /// /// Stars waiting for the trigger action /// @@ -58,7 +67,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Occurs when [triggered]. /// - public event EventHandler Triggered; + public event EventHandler> Triggered; /// /// Called when [triggered]. @@ -67,7 +76,7 @@ namespace MediaBrowser.Common.ScheduledTasks { if (Triggered != null) { - Triggered(this, EventArgs.Empty); + Triggered(this, new GenericEventArgs(TaskOptions)); } } } diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs index 01dc355c3..9b3f18274 100644 --- a/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs +++ b/MediaBrowser.Common/ScheduledTasks/ITaskManager.cs @@ -17,7 +17,8 @@ namespace MediaBrowser.Common.ScheduledTasks /// Cancels if running and queue. /// /// - void CancelIfRunningAndQueue() + /// Task options. + void CancelIfRunningAndQueue(TaskExecutionOptions options = null) where T : IScheduledTask; /// @@ -31,14 +32,16 @@ namespace MediaBrowser.Common.ScheduledTasks /// Queues the scheduled task. /// /// - void QueueScheduledTask() + /// Task options. + void QueueScheduledTask(TaskExecutionOptions options = null) where T : IScheduledTask; /// /// Queues the scheduled task. /// /// The task. - void QueueScheduledTask(IScheduledTask task); + /// The task run options. + void QueueScheduledTask(IScheduledTask task, TaskExecutionOptions options = null); /// /// Adds the tasks. @@ -47,7 +50,7 @@ namespace MediaBrowser.Common.ScheduledTasks void AddTasks(IEnumerable tasks); void Cancel(IScheduledTaskWorker task); - Task Execute(IScheduledTaskWorker task); + Task Execute(IScheduledTaskWorker task, TaskExecutionOptions options = null); event EventHandler> TaskExecuting; event EventHandler TaskCompleted; diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs index 66701650e..d30111316 100644 --- a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs @@ -1,4 +1,5 @@ using System; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -10,7 +11,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Fires when the trigger condition is satisfied and the task should run /// - event EventHandler Triggered; + event EventHandler> Triggered; /// /// Stars waiting for the trigger action @@ -22,5 +23,13 @@ namespace MediaBrowser.Common.ScheduledTasks /// Stops waiting for the trigger action /// void Stop(); + + /// + /// Gets or sets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + TaskExecutionOptions TaskOptions { get; set; } } } \ No newline at end of file diff --git a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs index cac6d1fa3..455a70d7e 100644 --- a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// The timer. private Timer Timer { get; set; } + /// + /// Gets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + public TaskExecutionOptions TaskOptions { get; set; } + /// /// Stars waiting for the trigger action /// @@ -53,7 +62,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Occurs when [triggered]. /// - public event EventHandler Triggered; + public event EventHandler> Triggered; /// /// Called when [triggered]. @@ -62,7 +71,7 @@ namespace MediaBrowser.Common.ScheduledTasks { if (Triggered != null) { - Triggered(this, EventArgs.Empty); + Triggered(this, new GenericEventArgs(TaskOptions)); } } } diff --git a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs index 17e4628d0..a58fa22b9 100644 --- a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -10,6 +11,14 @@ namespace MediaBrowser.Common.ScheduledTasks { public int DelayMs { get; set; } + /// + /// Gets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + public TaskExecutionOptions TaskOptions { get; set; } + public StartupTrigger() { DelayMs = 3000; @@ -39,7 +48,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Occurs when [triggered]. /// - public event EventHandler Triggered; + public event EventHandler> Triggered; /// /// Called when [triggered]. @@ -48,7 +57,7 @@ namespace MediaBrowser.Common.ScheduledTasks { if (Triggered != null) { - Triggered(this, EventArgs.Empty); + Triggered(this, new GenericEventArgs(TaskOptions)); } } } diff --git a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs index 7f86a5a2f..a40dc6b5c 100644 --- a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs @@ -2,6 +2,7 @@ using Microsoft.Win32; using System; using System.Threading.Tasks; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -16,6 +17,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// The system event. public SystemEvent SystemEvent { get; set; } + /// + /// Gets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + public TaskExecutionOptions TaskOptions { get; set; } + /// /// Stars waiting for the trigger action /// @@ -57,7 +66,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Occurs when [triggered]. /// - public event EventHandler Triggered; + public event EventHandler> Triggered; /// /// Called when [triggered]. @@ -66,7 +75,7 @@ namespace MediaBrowser.Common.ScheduledTasks { if (Triggered != null) { - Triggered(this, EventArgs.Empty); + Triggered(this, new GenericEventArgs(TaskOptions)); } } } diff --git a/MediaBrowser.Common/ScheduledTasks/TaskExecutionOptions.cs b/MediaBrowser.Common/ScheduledTasks/TaskExecutionOptions.cs new file mode 100644 index 000000000..830e55f08 --- /dev/null +++ b/MediaBrowser.Common/ScheduledTasks/TaskExecutionOptions.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MediaBrowser.Common.ScheduledTasks +{ + /// + /// A class that encomposases all common task run properties. + /// + public class TaskExecutionOptions + { + public int? MaxRuntimeMs { get; set; } + } +} diff --git a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs index cfb3f1fab..a3818f83f 100644 --- a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs @@ -1,5 +1,6 @@ using System; using System.Threading; +using MediaBrowser.Model.Events; namespace MediaBrowser.Common.ScheduledTasks { @@ -20,6 +21,14 @@ namespace MediaBrowser.Common.ScheduledTasks /// The day of week. public DayOfWeek DayOfWeek { get; set; } + /// + /// Gets the execution properties of this task. + /// + /// + /// The execution properties of this task. + /// + public TaskExecutionOptions TaskOptions { get; set; } + /// /// Gets or sets the timer. /// @@ -88,7 +97,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// Occurs when [triggered]. /// - public event EventHandler Triggered; + public event EventHandler> Triggered; /// /// Called when [triggered]. @@ -97,7 +106,7 @@ namespace MediaBrowser.Common.ScheduledTasks { if (Triggered != null) { - Triggered(this, EventArgs.Empty); + Triggered(this, new GenericEventArgs(TaskOptions)); } } } From 016f2791d63706de09cc77228c6282c06574d611 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 26 Feb 2015 13:24:38 -0500 Subject: [PATCH 020/169] remove dead throttle code --- .../Playback/BaseStreamingService.cs | 34 +++------ .../BaseProgressiveStreamingService.cs | 69 +++++++++---------- MediaBrowser.Api/Playback/StreamRequest.cs | 1 - .../Net/StaticResultOptions.cs | 5 -- .../Encoder/BaseEncoder.cs | 18 ----- .../HttpServer/HttpResultFactory.cs | 8 --- .../HttpServer/RangeRequestWriter.cs | 12 ---- .../HttpServer/StreamWriter.cs | 12 ---- 8 files changed, 40 insertions(+), 119 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 49d5f1c8d..bab0d1a6e 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -877,14 +877,6 @@ namespace MediaBrowser.Api.Playback return "copy"; } - private bool SupportsThrottleWithStream - { - get - { - return false; - } - } - /// /// Gets the input argument. /// @@ -908,23 +900,15 @@ namespace MediaBrowser.Api.Playback private string GetInputPathArgument(string transcodingJobId, StreamState state) { - if (state.InputProtocol == MediaProtocol.File && - state.RunTimeTicks.HasValue && - state.VideoType == VideoType.VideoFile && - !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) - { - if (state.RunTimeTicks.Value >= TimeSpan.FromMinutes(5).Ticks && state.IsInputVideo) - { - if (SupportsThrottleWithStream) - { - var url = "http://localhost:" + ServerConfigurationManager.Configuration.HttpServerPortNumber.ToString(UsCulture) + "/videos/" + state.Request.Id + "/stream?static=true&Throttle=true&mediaSourceId=" + state.Request.MediaSourceId; - - url += "&transcodingJobId=" + transcodingJobId; - - return string.Format("\"{0}\"", url); - } - } - } + //if (state.InputProtocol == MediaProtocol.File && + // state.RunTimeTicks.HasValue && + // state.VideoType == VideoType.VideoFile && + // !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) + //{ + // if (state.RunTimeTicks.Value >= TimeSpan.FromMinutes(5).Ticks && state.IsInputVideo) + // { + // } + //} var protocol = state.InputProtocol; diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index 9dbe3389e..09f1ab567 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -153,49 +153,12 @@ namespace MediaBrowser.Api.Playback.Progressive using (state) { - var job = string.IsNullOrEmpty(request.TranscodingJobId) ? - null : - ApiEntryPoint.Instance.GetTranscodingJob(request.TranscodingJobId); - - var limits = new List(); - if (state.InputBitrate.HasValue) - { - // Bytes per second - limits.Add((state.InputBitrate.Value / 8)); - } - if (state.InputFileSize.HasValue && state.RunTimeTicks.HasValue) - { - var totalSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds; - - if (totalSeconds > 1) - { - var timeBasedLimit = state.InputFileSize.Value / totalSeconds; - limits.Add(Convert.ToInt64(timeBasedLimit)); - } - } - - // Take the greater of the above to methods, just to be safe - var throttleLimit = limits.Count > 0 ? limits.First() : 0; - - // Pad to play it safe - var bytesPerSecond = Convert.ToInt64(1.05 * throttleLimit); - - // Don't even start evaluating this until at least two minutes have content have been consumed - var targetGap = throttleLimit * 120; - return ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions { ResponseHeaders = responseHeaders, ContentType = contentType, IsHeadRequest = isHeadRequest, - Path = state.MediaPath, - Throttle = request.Throttle, - - ThrottleLimit = bytesPerSecond, - - MinThrottlePosition = targetGap, - - ThrottleCallback = (l1, l2) => ThrottleCallack(l1, l2, bytesPerSecond, job) + Path = state.MediaPath }); } } @@ -238,6 +201,36 @@ namespace MediaBrowser.Api.Playback.Progressive private long ThrottleCallack(long currentBytesPerSecond, long bytesWritten, long originalBytesPerSecond, TranscodingJob job) { + //var job = string.IsNullOrEmpty(request.TranscodingJobId) ? + //null : + //ApiEntryPoint.Instance.GetTranscodingJob(request.TranscodingJobId); + + //var limits = new List(); + //if (state.InputBitrate.HasValue) + //{ + // // Bytes per second + // limits.Add((state.InputBitrate.Value / 8)); + //} + //if (state.InputFileSize.HasValue && state.RunTimeTicks.HasValue) + //{ + // var totalSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds; + + // if (totalSeconds > 1) + // { + // var timeBasedLimit = state.InputFileSize.Value / totalSeconds; + // limits.Add(Convert.ToInt64(timeBasedLimit)); + // } + //} + + //// Take the greater of the above to methods, just to be safe + //var throttleLimit = limits.Count > 0 ? limits.First() : 0; + + //// Pad to play it safe + //var bytesPerSecond = Convert.ToInt64(1.05 * throttleLimit); + + //// Don't even start evaluating this until at least two minutes have content have been consumed + //var targetGap = throttleLimit * 120; + var bytesDownloaded = job.BytesDownloaded ?? 0; var transcodingPositionTicks = job.TranscodingPositionTicks ?? 0; var downloadPositionTicks = job.DownloadPositionTicks ?? 0; diff --git a/MediaBrowser.Api/Playback/StreamRequest.cs b/MediaBrowser.Api/Playback/StreamRequest.cs index dc22fc754..907b17b24 100644 --- a/MediaBrowser.Api/Playback/StreamRequest.cs +++ b/MediaBrowser.Api/Playback/StreamRequest.cs @@ -72,7 +72,6 @@ namespace MediaBrowser.Api.Playback public string Params { get; set; } public string ClientTime { get; set; } - public bool Throttle { get; set; } public string TranscodingJobId { get; set; } } diff --git a/MediaBrowser.Controller/Net/StaticResultOptions.cs b/MediaBrowser.Controller/Net/StaticResultOptions.cs index 5bb2c9a5c..6a104554a 100644 --- a/MediaBrowser.Controller/Net/StaticResultOptions.cs +++ b/MediaBrowser.Controller/Net/StaticResultOptions.cs @@ -18,11 +18,6 @@ namespace MediaBrowser.Controller.Net public IDictionary ResponseHeaders { get; set; } - public bool Throttle { get; set; } - public long ThrottleLimit { get; set; } - public long MinThrottlePosition { get; set; } - public Func ThrottleCallback { get; set; } - public Action OnComplete { get; set; } public StaticResultOptions() diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index ffae8612e..ead080c60 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -452,24 +452,6 @@ namespace MediaBrowser.MediaEncoding.Encoder private string GetInputPathArgument(EncodingJob job) { - //if (job.InputProtocol == MediaProtocol.File && - // job.RunTimeTicks.HasValue && - // job.VideoType == VideoType.VideoFile && - // !string.Equals(job.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) - //{ - // if (job.RunTimeTicks.Value >= TimeSpan.FromMinutes(5).Ticks && job.IsInputVideo) - // { - // if (SupportsThrottleWithStream) - // { - // var url = "http://localhost:" + ServerConfigurationManager.Configuration.HttpServerPortNumber.ToString(UsCulture) + "/videos/" + job.Request.Id + "/stream?static=true&Throttle=true&mediaSourceId=" + job.Request.MediaSourceId; - - // url += "&transcodingJobId=" + transcodingJobId; - - // return string.Format("\"{0}\"", url); - // } - // } - //} - var protocol = job.InputProtocol; var inputPath = new[] { job.MediaPath }; diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs index 681d3ac5e..ecf58e4a6 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs @@ -461,10 +461,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer { return new RangeRequestWriter(rangeHeader, stream, contentType, isHeadRequest) { - Throttle = options.Throttle, - ThrottleLimit = options.ThrottleLimit, - MinThrottlePosition = options.MinThrottlePosition, - ThrottleCallback = options.ThrottleCallback, OnComplete = options.OnComplete }; } @@ -480,10 +476,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer return new StreamWriter(stream, contentType, _logger) { - Throttle = options.Throttle, - ThrottleLimit = options.ThrottleLimit, - MinThrottlePosition = options.MinThrottlePosition, - ThrottleCallback = options.ThrottleCallback, OnComplete = options.OnComplete }; } diff --git a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs index cdd4c6d7c..8c72f9e7e 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/RangeRequestWriter.cs @@ -24,10 +24,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer private long RangeLength { get; set; } private long TotalContentLength { get; set; } - public bool Throttle { get; set; } - public long ThrottleLimit { get; set; } - public long MinThrottlePosition; - public Func ThrottleCallback { get; set; } public Action OnComplete { get; set; } /// @@ -165,14 +161,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// The response stream. public void WriteTo(Stream responseStream) { - if (Throttle) - { - responseStream = new ThrottledStream(responseStream, ThrottleLimit) - { - MinThrottlePosition = MinThrottlePosition, - ThrottleCallback = ThrottleCallback - }; - } WriteToInternal(responseStream); } diff --git a/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs b/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs index 1db14e887..fe662542e 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/StreamWriter.cs @@ -35,10 +35,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer get { return _options; } } - public bool Throttle { get; set; } - public long ThrottleLimit { get; set; } - public long MinThrottlePosition; - public Func ThrottleCallback { get; set; } public Action OnComplete { get; set; } /// @@ -82,14 +78,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer /// The response stream. public void WriteTo(Stream responseStream) { - if (Throttle) - { - responseStream = new ThrottledStream(responseStream, ThrottleLimit) - { - MinThrottlePosition = MinThrottlePosition, - ThrottleCallback = ThrottleCallback - }; - } WriteToInternal(responseStream); } From 28ffeb5121247ced3fc7d764242e41b92837f740 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 26 Feb 2015 15:06:42 -0500 Subject: [PATCH 021/169] sync updates --- .../Sync/ICloudSyncProvider.cs | 17 ++++-- .../Sync/IServerSyncProvider.cs | 37 +++++-------- .../Subtitles/SubtitleEncoder.cs | 6 +-- ...MediaBrowser.Server.Implementations.csproj | 2 +- .../Sync/CloudSyncProvider.cs | 22 ++++---- .../Sync/MediaSync.cs | 54 ++++++++++--------- .../packages.config | 2 +- .../MediaBrowser.ServerApplication.csproj | 2 +- .../packages.config | 2 +- .../Savers/BaseNfoSaver.cs | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 14 files changed, 82 insertions(+), 76 deletions(-) diff --git a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs b/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs index dd7fda2c5..8f03aea0a 100644 --- a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs @@ -1,5 +1,7 @@ using MediaBrowser.Model.Sync; +using System; using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; @@ -23,13 +25,22 @@ namespace MediaBrowser.Controller.Sync /// /// Transfers the item file. /// - /// The server identifier. - /// The item identifier. /// The input file. /// The path parts. /// The target. + /// The progress. /// The cancellation token. /// Task. - Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken); + Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + + /// + /// Gets the file. + /// + /// The path parts. + /// The target. + /// The progress. + /// The cancellation token. + /// Task<Stream>. + Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index d11dd9d73..b3e74ee7d 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Model.Sync; -using System.Collections.Generic; +using System; +using System.IO; using System.Threading; using System.Threading.Tasks; @@ -7,35 +8,25 @@ namespace MediaBrowser.Controller.Sync { public interface IServerSyncProvider : ISyncProvider { - /// - /// Gets the server item ids. - /// - /// The server identifier. - /// The target. - /// The cancellation token. - /// Task<List<System.String>>. - Task> GetServerItemIds(string serverId, SyncTarget target, CancellationToken cancellationToken); - - /// - /// Removes the item. - /// - /// The server identifier. - /// The item identifier. - /// The target. - /// The cancellation token. - /// Task. - Task DeleteItem(string serverId, string itemId, SyncTarget target, CancellationToken cancellationToken); - /// /// Transfers the file. /// - /// The server identifier. - /// The item identifier. /// The input file. /// The path parts. /// The target. + /// The progress. /// The cancellation token. /// Task. - Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken); + Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + + /// + /// Gets the file. + /// + /// The path parts. + /// The target. + /// The progress. + /// The cancellation token. + /// Task<Stream>. + Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index b9cad27e0..7d74c51ba 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -773,7 +773,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles { try { - using (var file = new FileStream(path, FileMode.Open)) + using (var file = _fileSystem.GetFileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var detector = new CharsetDetector(); detector.Feed(file); @@ -797,12 +797,12 @@ namespace MediaBrowser.MediaEncoding.Subtitles return null; } - private static Encoding GetFileEncoding(string srcFile) + private Encoding GetFileEncoding(string srcFile) { // *** Detect byte order mark if any - otherwise assume default var buffer = new byte[5]; - using (var file = new FileStream(srcFile, FileMode.Open)) + using (var file = _fileSystem.GetFileStream(srcFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { file.Read(buffer, 0, 5); } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 509a274ee..5ceaa5f5b 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.2\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.3\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs index 37caa561e..1ef9d4b15 100644 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs @@ -4,6 +4,7 @@ using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Sync; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -39,21 +40,18 @@ namespace MediaBrowser.Server.Implementations.Sync return null; } - public Task> GetServerItemIds(string serverId, SyncTarget target, CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public Task DeleteItem(string serverId, string itemId, SyncTarget target, CancellationToken cancellationToken) - { - throw new NotImplementedException(); - } - - public Task TransferItemFile(string serverId, string itemId, string inputFile, string[] pathParts, SyncTarget target, CancellationToken cancellationToken) + public Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken) { var provider = GetProvider(target); - return provider.TransferItemFile(serverId, itemId, inputFile, pathParts, target, cancellationToken); + return provider.SendFile(inputFile, pathParts, target, progress, cancellationToken); + } + + public Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken) + { + var provider = GetProvider(target); + + return provider.GetFile(pathParts, target, progress, cancellationToken); } } } diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 349e6aa1d..764652bbf 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.Server.Implementations.Sync _appHost = appHost; } - public async Task Sync(IServerSyncProvider provider, + public async Task Sync(IServerSyncProvider provider, SyncTarget target, IProgress progress, CancellationToken cancellationToken) @@ -53,28 +53,28 @@ namespace MediaBrowser.Server.Implementations.Sync SyncTarget target, CancellationToken cancellationToken) { - var localIds = await provider.GetServerItemIds(serverId, target, cancellationToken).ConfigureAwait(false); + //var localIds = await provider.GetServerItemIds(serverId, target, cancellationToken).ConfigureAwait(false); - var result = await _syncManager.SyncData(new SyncDataRequest - { - TargetId = target.Id, - LocalItemIds = localIds + //var result = await _syncManager.SyncData(new SyncDataRequest + //{ + // TargetId = target.Id, + // LocalItemIds = localIds - }).ConfigureAwait(false); + //}).ConfigureAwait(false); - cancellationToken.ThrowIfCancellationRequested(); + //cancellationToken.ThrowIfCancellationRequested(); - foreach (var itemIdToRemove in result.ItemIdsToRemove) - { - try - { - await RemoveItem(provider, serverId, itemIdToRemove, target, cancellationToken).ConfigureAwait(false); - } - catch (Exception ex) - { - _logger.ErrorException("Error deleting item from sync target. Id: {0}", ex, itemIdToRemove); - } - } + //foreach (var itemIdToRemove in result.ItemIdsToRemove) + //{ + // try + // { + // await RemoveItem(provider, serverId, itemIdToRemove, target, cancellationToken).ConfigureAwait(false); + // } + // catch (Exception ex) + // { + // _logger.ErrorException("Error deleting item from sync target. Id: {0}", ex, itemIdToRemove); + // } + //} } private async Task GetNewMedia(IServerSyncProvider provider, @@ -83,8 +83,8 @@ namespace MediaBrowser.Server.Implementations.Sync IProgress progress, CancellationToken cancellationToken) { - var jobItems = await _syncManager.GetReadySyncItems(target.Id).ConfigureAwait(false); - + var jobItems = await _syncManager.GetReadySyncItems(target.Id).ConfigureAwait(false); + var numComplete = 0; double startingPercent = 0; double percentPerItem = 1; @@ -138,8 +138,7 @@ namespace MediaBrowser.Server.Implementations.Sync { string[] pathParts = GetPathParts(serverId, libraryItem); - await provider.TransferItemFile(serverId, libraryItem.Id, internalSyncJobItem.OutputPath, pathParts, target, cancellationToken) - .ConfigureAwait(false); + await SendFile(provider, internalSyncJobItem.OutputPath, pathParts, target, cancellationToken).ConfigureAwait(false); progress.Report(92); @@ -171,12 +170,19 @@ namespace MediaBrowser.Server.Implementations.Sync SyncTarget target, CancellationToken cancellationToken) { - return provider.DeleteItem(serverId, itemId, target, cancellationToken); + return Task.FromResult(true); + //return provider.DeleteItem(serverId, itemId, target, cancellationToken); } private string[] GetPathParts(string serverId, BaseItemDto item) { return null; } + + private async Task SendFile(IServerSyncProvider provider, string inputPath, string[] path, SyncTarget target, CancellationToken cancellationToken) + { + await provider.SendFile(inputPath, path, target, new Progress(), cancellationToken) + .ConfigureAwait(false); + } } } diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 41df1b471..0112d0f75 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 6f569718e..9750a4e45 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -62,7 +62,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.2\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.3\lib\net45\ImageMagickSharp.dll ..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index ab51c30cc..cfe7938de 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 5455709e9..7aa33b053 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -214,7 +214,7 @@ namespace MediaBrowser.XbmcMetadata.Savers } } - using (var filestream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) + using (var filestream = FileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) { stream.CopyTo(filestream); } diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 6d9ead15a..09da16b55 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.576 + 3.0.577 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 305db5a1f..6841953ad 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.576 + 3.0.577 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 9305fe51c..0e3d483eb 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.576 + 3.0.577 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 cc7979590..f0883cc17 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.576 + 3.0.577 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 - + From f0594dea772a06e16bf1d5938836b4b3ec906424 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 27 Feb 2015 12:43:06 -0500 Subject: [PATCH 022/169] stub out process throttle --- MediaBrowser.Api/MediaBrowser.Api.csproj | 1 + .../BaseProgressiveStreamingService.cs | 91 ---------- .../Playback/TranscodingThrottler.cs | 157 ++++++++++++++++++ .../ApiClient/ConnectionOptions.cs | 6 + MediaBrowser.Model/Dlna/StreamBuilder.cs | 18 +- MediaBrowser.Model/Dlna/StreamInfo.cs | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 10 files changed, 183 insertions(+), 104 deletions(-) create mode 100644 MediaBrowser.Api/Playback/TranscodingThrottler.cs diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index 271305921..fc48e9a3a 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -81,6 +81,7 @@ + diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index 09f1ab567..bc1c86eee 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -197,97 +197,6 @@ namespace MediaBrowser.Api.Playback.Progressive } } - private readonly long _gapLengthInTicks = TimeSpan.FromMinutes(3).Ticks; - - private long ThrottleCallack(long currentBytesPerSecond, long bytesWritten, long originalBytesPerSecond, TranscodingJob job) - { - //var job = string.IsNullOrEmpty(request.TranscodingJobId) ? - //null : - //ApiEntryPoint.Instance.GetTranscodingJob(request.TranscodingJobId); - - //var limits = new List(); - //if (state.InputBitrate.HasValue) - //{ - // // Bytes per second - // limits.Add((state.InputBitrate.Value / 8)); - //} - //if (state.InputFileSize.HasValue && state.RunTimeTicks.HasValue) - //{ - // var totalSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds; - - // if (totalSeconds > 1) - // { - // var timeBasedLimit = state.InputFileSize.Value / totalSeconds; - // limits.Add(Convert.ToInt64(timeBasedLimit)); - // } - //} - - //// Take the greater of the above to methods, just to be safe - //var throttleLimit = limits.Count > 0 ? limits.First() : 0; - - //// Pad to play it safe - //var bytesPerSecond = Convert.ToInt64(1.05 * throttleLimit); - - //// Don't even start evaluating this until at least two minutes have content have been consumed - //var targetGap = throttleLimit * 120; - - var bytesDownloaded = job.BytesDownloaded ?? 0; - var transcodingPositionTicks = job.TranscodingPositionTicks ?? 0; - var downloadPositionTicks = job.DownloadPositionTicks ?? 0; - - var path = job.Path; - - if (bytesDownloaded > 0 && transcodingPositionTicks > 0) - { - // Progressive Streaming - byte-based consideration - - try - { - var bytesTranscoded = job.BytesTranscoded ?? new FileInfo(path).Length; - - // Estimate the bytes the transcoder should be ahead - double gapFactor = _gapLengthInTicks; - gapFactor /= transcodingPositionTicks; - var targetGap = bytesTranscoded * gapFactor; - - var gap = bytesTranscoded - bytesDownloaded; - - if (gap < targetGap) - { - //Logger.Debug("Not throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); - return 0; - } - - //Logger.Debug("Throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); - } - catch - { - //Logger.Error("Error getting output size"); - } - } - else if (downloadPositionTicks > 0 && transcodingPositionTicks > 0) - { - // HLS - time-based consideration - - var targetGap = _gapLengthInTicks; - var gap = transcodingPositionTicks - downloadPositionTicks; - - if (gap < targetGap) - { - //Logger.Debug("Not throttling transcoder gap {0} target gap {1}", gap, targetGap); - return 0; - } - - //Logger.Debug("Throttling transcoder gap {0} target gap {1}", gap, targetGap); - } - else - { - //Logger.Debug("No throttle data for " + path); - } - - return originalBytesPerSecond; - } - /// /// Gets the static remote stream result. /// diff --git a/MediaBrowser.Api/Playback/TranscodingThrottler.cs b/MediaBrowser.Api/Playback/TranscodingThrottler.cs new file mode 100644 index 000000000..81848c017 --- /dev/null +++ b/MediaBrowser.Api/Playback/TranscodingThrottler.cs @@ -0,0 +1,157 @@ +using MediaBrowser.Model.Logging; +using System; +using System.IO; +using System.Threading; + +namespace MediaBrowser.Api.Playback +{ + public class TranscodingThrottler : IDisposable + { + private readonly TranscodingJob _job; + private readonly ILogger _logger; + private Timer _timer; + + public void Start() + { + _timer = new Timer(TimerCallback, null, 1000, 1000); + } + + private void TimerCallback(object state) + { + if (IsThrottleAllowed(_job)) + { + PauseTranscoding(); + } + else + { + UnpauseTranscoding(); + } + } + + private void PauseTranscoding() + { + _logger.Debug("Sending pause command to ffmpeg"); + _job.Process.StandardInput.WriteLine("p"); + } + + private void UnpauseTranscoding() + { + _logger.Debug("Sending unpause command to ffmpeg"); + _job.Process.StandardInput.WriteLine("u"); + } + + private readonly long _gapLengthInTicks = TimeSpan.FromMinutes(2).Ticks; + + public TranscodingThrottler(TranscodingJob job, ILogger logger) + { + _job = job; + _logger = logger; + } + + private bool IsThrottleAllowed(TranscodingJob job) + { + //var job = string.IsNullOrEmpty(request.TranscodingJobId) ? + //null : + //ApiEntryPoint.Instance.GetTranscodingJob(request.TranscodingJobId); + + //var limits = new List(); + //if (state.InputBitrate.HasValue) + //{ + // // Bytes per second + // limits.Add((state.InputBitrate.Value / 8)); + //} + //if (state.InputFileSize.HasValue && state.RunTimeTicks.HasValue) + //{ + // var totalSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds; + + // if (totalSeconds > 1) + // { + // var timeBasedLimit = state.InputFileSize.Value / totalSeconds; + // limits.Add(Convert.ToInt64(timeBasedLimit)); + // } + //} + + //// Take the greater of the above to methods, just to be safe + //var throttleLimit = limits.Count > 0 ? limits.First() : 0; + + //// Pad to play it safe + //var bytesPerSecond = Convert.ToInt64(1.05 * throttleLimit); + + //// Don't even start evaluating this until at least two minutes have content have been consumed + //var targetGap = throttleLimit * 120; + + var bytesDownloaded = job.BytesDownloaded ?? 0; + var transcodingPositionTicks = job.TranscodingPositionTicks ?? 0; + var downloadPositionTicks = job.DownloadPositionTicks ?? 0; + + var path = job.Path; + + if (downloadPositionTicks > 0 && transcodingPositionTicks > 0) + { + // HLS - time-based consideration + + var targetGap = _gapLengthInTicks; + var gap = transcodingPositionTicks - downloadPositionTicks; + + if (gap < targetGap) + { + //Logger.Debug("Not throttling transcoder gap {0} target gap {1}", gap, targetGap); + return false; + } + + //Logger.Debug("Throttling transcoder gap {0} target gap {1}", gap, targetGap); + return true; + } + + if (bytesDownloaded > 0 && transcodingPositionTicks > 0) + { + // Progressive Streaming - byte-based consideration + + try + { + var bytesTranscoded = job.BytesTranscoded ?? new FileInfo(path).Length; + + // Estimate the bytes the transcoder should be ahead + double gapFactor = _gapLengthInTicks; + gapFactor /= transcodingPositionTicks; + var targetGap = bytesTranscoded * gapFactor; + + var gap = bytesTranscoded - bytesDownloaded; + + if (gap < targetGap) + { + //Logger.Debug("Not throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); + return false; + } + + //Logger.Debug("Throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); + return true; + } + catch + { + //Logger.Error("Error getting output size"); + } + } + else + { + //Logger.Debug("No throttle data for " + path); + } + + return false; + } + + public void Dispose() + { + DisposeTimer(); + } + + private void DisposeTimer() + { + if (_timer != null) + { + _timer.Dispose(); + _timer = null; + } + } + } +} diff --git a/MediaBrowser.Model/ApiClient/ConnectionOptions.cs b/MediaBrowser.Model/ApiClient/ConnectionOptions.cs index 445eaa04e..e12676311 100644 --- a/MediaBrowser.Model/ApiClient/ConnectionOptions.cs +++ b/MediaBrowser.Model/ApiClient/ConnectionOptions.cs @@ -13,11 +13,17 @@ namespace MediaBrowser.Model.ApiClient /// /// true if [report capabilities]; otherwise, false. public bool ReportCapabilities { get; set; } + /// + /// Gets or sets a value indicating whether [update date last accessed]. + /// + /// true if [update date last accessed]; otherwise, false. + public bool UpdateDateLastAccessed { get; set; } public ConnectionOptions() { EnableWebSocket = true; ReportCapabilities = true; + UpdateDateLastAccessed = true; } } } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 6fa29a533..a40e4feb3 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -267,7 +267,7 @@ namespace MediaBrowser.Model.Dlna if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile); + SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile, options.Context); playlistItem.SubtitleDeliveryMethod = subtitleProfile.Method; playlistItem.SubtitleFormat = subtitleProfile.Format; @@ -292,7 +292,7 @@ namespace MediaBrowser.Model.Dlna { if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile); + SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile, options.Context); playlistItem.SubtitleDeliveryMethod = subtitleProfile.Method; playlistItem.SubtitleFormat = subtitleProfile.Format; @@ -527,7 +527,7 @@ namespace MediaBrowser.Model.Dlna { if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile); + SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile, options.Context); if (subtitleProfile.Method != SubtitleDeliveryMethod.External && subtitleProfile.Method != SubtitleDeliveryMethod.Embed) { @@ -538,14 +538,20 @@ namespace MediaBrowser.Model.Dlna return IsAudioEligibleForDirectPlay(item, maxBitrate); } - public static SubtitleProfile GetSubtitleProfile(MediaStream subtitleStream, DeviceProfile deviceProfile) + public static SubtitleProfile GetSubtitleProfile(MediaStream subtitleStream, DeviceProfile deviceProfile, EncodingContext context) { // Look for an external profile that matches the stream type (text/graphical) foreach (SubtitleProfile profile in deviceProfile.SubtitleProfiles) { - if (subtitleStream.SupportsExternalStream) + if (profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) { - if (profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) + if (subtitleStream.SupportsExternalStream) + { + return profile; + } + + // For sync we can handle the longer extraction times + if (context == EncodingContext.Static && subtitleStream.IsTextSubtitleStream) { return profile; } diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 57a3899d4..f0854c3f8 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -262,7 +262,7 @@ namespace MediaBrowser.Model.Dlna private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream) { - SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile); + SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile, Context); if (subtitleProfile.Method != SubtitleDeliveryMethod.External) { diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 09da16b55..6852922e4 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.577 + 3.0.578 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 6841953ad..f3053fd60 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.577 + 3.0.578 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 0e3d483eb..bb4ad23c8 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.577 + 3.0.578 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 f0883cc17..fa6e4020f 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.577 + 3.0.578 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 - + From 2bf2d5fd769788cade10a84fc7a4a4af23c23cf1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 08:42:47 -0500 Subject: [PATCH 023/169] cloud sync updates --- MediaBrowser.Api/Images/ImageService.cs | 2 +- .../Playback/TranscodingThrottler.cs | 50 +--- .../Drawing/IImageProcessor.cs | 6 +- .../MediaBrowser.Controller.csproj | 2 +- .../Sync/ICloudSyncProvider.cs | 46 ---- .../Sync/IServerSyncProvider.cs | 54 +++- .../Sync/ISyncDataProvider.cs | 41 +++ MediaBrowser.Controller/Sync/ISyncProvider.cs | 7 - MediaBrowser.Dlna/Didl/DidlBuilder.cs | 2 +- MediaBrowser.Model/Users/UserPolicy.cs | 2 + .../Photos/PhotoProvider.cs | 2 +- .../Drawing/ImageProcessor.cs | 7 +- .../Dto/DtoService.cs | 5 +- .../Localization/Server/server.json | 6 +- ...MediaBrowser.Server.Implementations.csproj | 6 +- .../Sync/AppSyncProvider.cs | 2 +- .../Sync/CloudSyncProfile.cs | 118 +++++++++ .../Sync/CloudSyncProvider.cs | 57 ---- .../Sync/FolderSync/FolderSyncDataProvider.cs | 31 +++ .../Sync/FolderSync/FolderSyncProvider.cs | 142 ++++++++++ .../Sync/IHasSyncProfile.cs | 15 ++ .../Sync/MediaSync.cs | 249 +++++++++++++++--- .../Sync/MultiProviderSync.cs | 69 +++++ .../Sync/SyncManager.cs | 21 +- 24 files changed, 732 insertions(+), 210 deletions(-) delete mode 100644 MediaBrowser.Controller/Sync/ICloudSyncProvider.cs create mode 100644 MediaBrowser.Controller/Sync/ISyncDataProvider.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs delete mode 100644 MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncDataProvider.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/IHasSyncProfile.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index e29bbf674..0a39b51c3 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -318,7 +318,7 @@ namespace MediaBrowser.Api.Images try { - var size = _imageProcessor.GetImageSize(info.Path, info.DateModified); + var size = _imageProcessor.GetImageSize(info); width = Convert.ToInt32(size.Width); height = Convert.ToInt32(size.Height); diff --git a/MediaBrowser.Api/Playback/TranscodingThrottler.cs b/MediaBrowser.Api/Playback/TranscodingThrottler.cs index 81848c017..50c213655 100644 --- a/MediaBrowser.Api/Playback/TranscodingThrottler.cs +++ b/MediaBrowser.Api/Playback/TranscodingThrottler.cs @@ -13,11 +13,17 @@ namespace MediaBrowser.Api.Playback public void Start() { - _timer = new Timer(TimerCallback, null, 1000, 1000); + _timer = new Timer(TimerCallback, null, 5000, 5000); } private void TimerCallback(object state) { + if (_job.HasExited) + { + DisposeTimer(); + return; + } + if (IsThrottleAllowed(_job)) { PauseTranscoding(); @@ -50,36 +56,6 @@ namespace MediaBrowser.Api.Playback private bool IsThrottleAllowed(TranscodingJob job) { - //var job = string.IsNullOrEmpty(request.TranscodingJobId) ? - //null : - //ApiEntryPoint.Instance.GetTranscodingJob(request.TranscodingJobId); - - //var limits = new List(); - //if (state.InputBitrate.HasValue) - //{ - // // Bytes per second - // limits.Add((state.InputBitrate.Value / 8)); - //} - //if (state.InputFileSize.HasValue && state.RunTimeTicks.HasValue) - //{ - // var totalSeconds = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalSeconds; - - // if (totalSeconds > 1) - // { - // var timeBasedLimit = state.InputFileSize.Value / totalSeconds; - // limits.Add(Convert.ToInt64(timeBasedLimit)); - // } - //} - - //// Take the greater of the above to methods, just to be safe - //var throttleLimit = limits.Count > 0 ? limits.First() : 0; - - //// Pad to play it safe - //var bytesPerSecond = Convert.ToInt64(1.05 * throttleLimit); - - //// Don't even start evaluating this until at least two minutes have content have been consumed - //var targetGap = throttleLimit * 120; - var bytesDownloaded = job.BytesDownloaded ?? 0; var transcodingPositionTicks = job.TranscodingPositionTicks ?? 0; var downloadPositionTicks = job.DownloadPositionTicks ?? 0; @@ -95,11 +71,11 @@ namespace MediaBrowser.Api.Playback if (gap < targetGap) { - //Logger.Debug("Not throttling transcoder gap {0} target gap {1}", gap, targetGap); + //_logger.Debug("Not throttling transcoder gap {0} target gap {1}", gap, targetGap); return false; } - //Logger.Debug("Throttling transcoder gap {0} target gap {1}", gap, targetGap); + //_logger.Debug("Throttling transcoder gap {0} target gap {1}", gap, targetGap); return true; } @@ -120,21 +96,21 @@ namespace MediaBrowser.Api.Playback if (gap < targetGap) { - //Logger.Debug("Not throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); + //_logger.Debug("Not throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); return false; } - //Logger.Debug("Throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); + //_logger.Debug("Throttling transcoder gap {0} target gap {1} bytes downloaded {2}", gap, targetGap, bytesDownloaded); return true; } catch { - //Logger.Error("Error getting output size"); + //_logger.Error("Error getting output size"); } } else { - //Logger.Debug("No throttle data for " + path); + //_logger.Debug("No throttle data for " + path); } return false; diff --git a/MediaBrowser.Controller/Drawing/IImageProcessor.cs b/MediaBrowser.Controller/Drawing/IImageProcessor.cs index 8ac7d56d2..6fafc2b46 100644 --- a/MediaBrowser.Controller/Drawing/IImageProcessor.cs +++ b/MediaBrowser.Controller/Drawing/IImageProcessor.cs @@ -2,7 +2,6 @@ using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; -using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -30,10 +29,9 @@ namespace MediaBrowser.Controller.Drawing /// /// Gets the size of the image. /// - /// The path. - /// The image date modified. + /// The information. /// ImageSize. - ImageSize GetImageSize(string path, DateTime imageDateModified); + ImageSize GetImageSize(ItemImageInfo info); /// /// Adds the parts. diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index e9531e057..603cb02e0 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -341,8 +341,8 @@ - + diff --git a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs b/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs deleted file mode 100644 index 8f03aea0a..000000000 --- a/MediaBrowser.Controller/Sync/ICloudSyncProvider.cs +++ /dev/null @@ -1,46 +0,0 @@ -using MediaBrowser.Model.Sync; -using System; -using System.Collections.Generic; -using System.IO; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Controller.Sync -{ - public interface ICloudSyncProvider - { - /// - /// Gets the name. - /// - /// The name. - string Name { get; } - - /// - /// Gets the synchronize targets. - /// - /// The user identifier. - /// IEnumerable<SyncTarget>. - IEnumerable GetSyncTargets(string userId); - - /// - /// Transfers the item file. - /// - /// The input file. - /// The path parts. - /// The target. - /// The progress. - /// The cancellation token. - /// Task. - Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); - - /// - /// Gets the file. - /// - /// The path parts. - /// The target. - /// The progress. - /// The cancellation token. - /// Task<Stream>. - Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); - } -} diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index b3e74ee7d..9ee83acbf 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Model.Sync; using System; +using System.Collections.Generic; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -12,21 +13,66 @@ namespace MediaBrowser.Controller.Sync /// Transfers the file. /// /// The input file. - /// The path parts. + /// The path. /// The target. /// The progress. /// The cancellation token. /// Task. - Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + Task SendFile(string inputFile, string path, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + + /// + /// Deletes the file. + /// + /// The path. + /// The target. + /// The cancellation token. + /// Task. + Task DeleteFile(string path, SyncTarget target, CancellationToken cancellationToken); /// /// Gets the file. /// - /// The path parts. + /// The path. /// The target. /// The progress. /// The cancellation token. /// Task<Stream>. - Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + Task GetFile(string path, SyncTarget target, IProgress progress, CancellationToken cancellationToken); + + /// + /// Gets the full path. + /// + /// The path. + /// The target. + /// System.String. + string GetFullPath(IEnumerable path, SyncTarget target); + + /// + /// Gets the parent directory path. + /// + /// The path. + /// The target. + /// System.String. + string GetParentDirectoryPath(string path, SyncTarget target); + + /// + /// Gets the file system entries. + /// + /// The path. + /// The target. + /// Task<List<DeviceFileInfo>>. + Task> GetFileSystemEntries(string path, SyncTarget target); + + /// + /// Gets the data provider. + /// + /// ISyncDataProvider. + ISyncDataProvider GetDataProvider(); + + /// + /// Gets all synchronize targets. + /// + /// IEnumerable<SyncTarget>. + IEnumerable GetAllSyncTargets(); } } diff --git a/MediaBrowser.Controller/Sync/ISyncDataProvider.cs b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs new file mode 100644 index 000000000..cf698dd3c --- /dev/null +++ b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs @@ -0,0 +1,41 @@ +using MediaBrowser.Model.Sync; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace MediaBrowser.Controller.Sync +{ + public interface ISyncDataProvider + { + /// + /// Gets the server item ids. + /// + /// The target. + /// The server identifier. + /// Task<List<System.String>>. + Task> GetServerItemIds(SyncTarget target, string serverId); + + /// + /// Adds the or update. + /// + /// The target. + /// The item. + /// Task. + Task AddOrUpdate(SyncTarget target, LocalItem item); + + /// + /// Deletes the specified identifier. + /// + /// The target. + /// The identifier. + /// Task. + Task Delete(SyncTarget target, string id); + + /// + /// Gets the specified identifier. + /// + /// The target. + /// The identifier. + /// Task<LocalItem>. + Task Get(SyncTarget target, string id); + } +} diff --git a/MediaBrowser.Controller/Sync/ISyncProvider.cs b/MediaBrowser.Controller/Sync/ISyncProvider.cs index 6f24eac1a..ba6e54d45 100644 --- a/MediaBrowser.Controller/Sync/ISyncProvider.cs +++ b/MediaBrowser.Controller/Sync/ISyncProvider.cs @@ -18,13 +18,6 @@ namespace MediaBrowser.Controller.Sync /// The user identifier. /// IEnumerable<SyncTarget>. IEnumerable GetSyncTargets(string userId); - - /// - /// Gets the device profile. - /// - /// The target. - /// DeviceProfile. - DeviceProfile GetDeviceProfile(SyncTarget target); } public interface IHasUniqueTargetIds diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs index af7c8dbed..b2eedad7c 100644 --- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs +++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs @@ -930,7 +930,7 @@ namespace MediaBrowser.Dlna.Didl try { - var size = _imageProcessor.GetImageSize(imageInfo.Path, imageInfo.DateModified); + var size = _imageProcessor.GetImageSize(imageInfo); width = Convert.ToInt32(size.Width); height = Convert.ToInt32(size.Height); diff --git a/MediaBrowser.Model/Users/UserPolicy.cs b/MediaBrowser.Model/Users/UserPolicy.cs index 410cdc51f..7efc2cf6f 100644 --- a/MediaBrowser.Model/Users/UserPolicy.cs +++ b/MediaBrowser.Model/Users/UserPolicy.cs @@ -59,6 +59,8 @@ namespace MediaBrowser.Model.Users public string[] EnabledFolders { get; set; } public bool EnableAllFolders { get; set; } + public int InvalidLoginAttemptCount { get; set; } + public UserPolicy() { EnableLiveTvManagement = true; diff --git a/MediaBrowser.Providers/Photos/PhotoProvider.cs b/MediaBrowser.Providers/Photos/PhotoProvider.cs index 3eaef59fb..96160dcc4 100644 --- a/MediaBrowser.Providers/Photos/PhotoProvider.cs +++ b/MediaBrowser.Providers/Photos/PhotoProvider.cs @@ -146,7 +146,7 @@ namespace MediaBrowser.Providers.Photos try { - var size = _imageProcessor.GetImageSize(imageInfo.Path, imageInfo.DateModified); + var size = _imageProcessor.GetImageSize(imageInfo); item.Width = Convert.ToInt32(size.Width); item.Height = Convert.ToInt32(size.Height); diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index 85eadd73c..c484a60db 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -414,6 +414,11 @@ namespace MediaBrowser.Server.Implementations.Drawing return GetImageSize(path, File.GetLastWriteTimeUtc(path)); } + public ImageSize GetImageSize(ItemImageInfo info) + { + return GetImageSize(info.Path, info.DateModified); + } + /// /// Gets the size of the image. /// @@ -421,7 +426,7 @@ namespace MediaBrowser.Server.Implementations.Drawing /// The image date modified. /// ImageSize. /// path - public ImageSize GetImageSize(string path, DateTime imageDateModified) + private ImageSize GetImageSize(string path, DateTime imageDateModified) { if (string.IsNullOrEmpty(path)) { diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index b15809738..75037159c 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1598,14 +1598,11 @@ namespace MediaBrowser.Server.Implementations.Dto var path = imageInfo.Path; - // See if we can avoid a file system lookup by looking for the file in ResolveArgs - var dateModified = imageInfo.DateModified; - ImageSize size; try { - size = _imageProcessor.GetImageSize(path, dateModified); + size = _imageProcessor.GetImageSize(imageInfo); } catch (FileNotFoundException) { diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index dc80778da..5f221a7be 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1114,7 +1114,7 @@ "MessageApplicationUpdated": "Media Browser Server has been updated", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "AppDeviceValues": "App: {0}, Device: {1}", @@ -1369,5 +1369,7 @@ "TabJobs": "Jobs", "TabSyncJobs": "Sync Jobs", "LabelTagFilterMode": "Mode:", - "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well." + "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", + "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", + "MessageReenableUser": "See below to reenable" } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 5ceaa5f5b..40aaa299f 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -303,8 +303,12 @@ - + + + + + diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index d35ff8fc4..29ac74e82 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -8,7 +8,7 @@ using System.Linq; namespace MediaBrowser.Server.Implementations.Sync { - public class AppSyncProvider : ISyncProvider, IHasUniqueTargetIds + public class AppSyncProvider : ISyncProvider, IHasUniqueTargetIds, IHasSyncProfile { private readonly IDeviceManager _deviceManager; diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs new file mode 100644 index 000000000..babdf3f80 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs @@ -0,0 +1,118 @@ +using MediaBrowser.Model.Dlna; + +namespace MediaBrowser.Server.Implementations.Sync +{ + public class CloudSyncProfile : DeviceProfile + { + public CloudSyncProfile(bool supportsAc3, bool supportsDca) + { + Name = "Cloud Sync"; + + MaxStreamingBitrate = 20000000; + MaxStaticBitrate = 20000000; + + var mkvAudio = "aac,mp3"; + var mp4Audio = "aac"; + + if (supportsAc3) + { + mkvAudio += ",ac3"; + mp4Audio += ",ac3"; + } + + if (supportsDca) + { + mkvAudio += ",dca"; + } + + DirectPlayProfiles = new[] + { + new DirectPlayProfile + { + Container = "mkv", + VideoCodec = "h264,mpeg4", + AudioCodec = mkvAudio, + Type = DlnaProfileType.Video + }, + new DirectPlayProfile + { + Container = "mp4,mov,m4v", + VideoCodec = "h264,mpeg4", + AudioCodec = mp4Audio, + Type = DlnaProfileType.Video + } + }; + + ContainerProfiles = new ContainerProfile[] { }; + + CodecProfiles = new[] + { + new CodecProfile + { + Type = CodecType.Video, + Conditions = new [] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.VideoBitDepth, + Value = "8", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.Height, + Value = "1080", + IsRequired = false + }, + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.RefFrames, + Value = "12", + IsRequired = false + } + } + } + }; + + SubtitleProfiles = new[] + { + new SubtitleProfile + { + Format = "srt", + Method = SubtitleDeliveryMethod.External + } + }; + + TranscodingProfiles = new[] + { + new TranscodingProfile + { + Container = "mp3", + AudioCodec = "mp3", + Type = DlnaProfileType.Audio, + Context = EncodingContext.Static + }, + + new TranscodingProfile + { + Container = "mp4", + Type = DlnaProfileType.Video, + AudioCodec = "aac", + VideoCodec = "h264", + Context = EncodingContext.Static + }, + + new TranscodingProfile + { + Container = "jpeg", + Type = DlnaProfileType.Photo, + Context = EncodingContext.Static + } + }; + + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs deleted file mode 100644 index 1ef9d4b15..000000000 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs +++ /dev/null @@ -1,57 +0,0 @@ -using MediaBrowser.Common; -using MediaBrowser.Controller.Sync; -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Sync; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Server.Implementations.Sync -{ - public class CloudSyncProvider : IServerSyncProvider - { - private readonly ICloudSyncProvider[] _providers = {}; - - public CloudSyncProvider(IApplicationHost appHost) - { - _providers = appHost.GetExports().ToArray(); - } - - public IEnumerable GetSyncTargets(string userId) - { - return _providers.SelectMany(i => i.GetSyncTargets(userId)); - } - - public DeviceProfile GetDeviceProfile(SyncTarget target) - { - return new DeviceProfile(); - } - - public string Name - { - get { return "Cloud Sync"; } - } - - private ICloudSyncProvider GetProvider(SyncTarget target) - { - return null; - } - - public Task SendFile(string inputFile, string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken) - { - var provider = GetProvider(target); - - return provider.SendFile(inputFile, pathParts, target, progress, cancellationToken); - } - - public Task GetFile(string[] pathParts, SyncTarget target, IProgress progress, CancellationToken cancellationToken) - { - var provider = GetProvider(target); - - return provider.GetFile(pathParts, target, progress, cancellationToken); - } - } -} diff --git a/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncDataProvider.cs b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncDataProvider.cs new file mode 100644 index 000000000..b9008d87e --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncDataProvider.cs @@ -0,0 +1,31 @@ +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Sync; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Sync.FolderSync +{ + public class FolderSyncDataProvider : ISyncDataProvider + { + public Task> GetServerItemIds(SyncTarget target, string serverId) + { + throw new NotImplementedException(); + } + + public Task AddOrUpdate(SyncTarget target, LocalItem item) + { + throw new NotImplementedException(); + } + + public Task Delete(SyncTarget target, string id) + { + throw new NotImplementedException(); + } + + public Task Get(SyncTarget target, string id) + { + throw new NotImplementedException(); + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs new file mode 100644 index 000000000..9cf234106 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs @@ -0,0 +1,142 @@ +using MediaBrowser.Common.Configuration; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Sync; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Sync.FolderSync +{ + public class FolderSyncProvider : IServerSyncProvider + { + private readonly IApplicationPaths _appPaths; + private readonly IUserManager _userManager; + + public FolderSyncProvider(IApplicationPaths appPaths, IUserManager userManager) + { + _appPaths = appPaths; + _userManager = userManager; + } + + public Task SendFile(string inputFile, string path, SyncTarget target, IProgress progress, CancellationToken cancellationToken) + { + return Task.Run(() => File.Copy(inputFile, path, true), cancellationToken); + } + + public Task DeleteFile(string path, SyncTarget target, CancellationToken cancellationToken) + { + return Task.Run(() => File.Delete(path), cancellationToken); + } + + public Task GetFile(string path, SyncTarget target, IProgress progress, CancellationToken cancellationToken) + { + return Task.FromResult((Stream)File.OpenRead(path)); + } + + public string GetFullPath(IEnumerable paths, SyncTarget target) + { + var account = GetSyncAccounts() + .FirstOrDefault(i => string.Equals(i.Id, target.Id, StringComparison.OrdinalIgnoreCase)); + + if (account == null) + { + throw new ArgumentException("Invalid SyncTarget supplied."); + } + + var list = paths.ToList(); + list.Insert(0, account.Path); + + return Path.Combine(list.ToArray()); + } + + public string GetParentDirectoryPath(string path, SyncTarget target) + { + return Path.GetDirectoryName(path); + } + + public Task> GetFileSystemEntries(string path, SyncTarget target) + { + List files; + + try + { + files = new DirectoryInfo(path).EnumerateFiles("*", SearchOption.TopDirectoryOnly).ToList(); + } + catch (DirectoryNotFoundException) + { + files = new List(); + } + + return Task.FromResult(files.Select(i => new DeviceFileInfo + { + Name = i.Name, + Path = i.FullName + + }).ToList()); + } + + public ISyncDataProvider GetDataProvider() + { + // If single instances are needed, manage them here + return new FolderSyncDataProvider(); + } + + public string Name + { + get { return "Folder Sync"; } + } + + public IEnumerable GetSyncTargets(string userId) + { + return GetSyncAccounts() + .Where(i => i.UserIds.Contains(userId, StringComparer.OrdinalIgnoreCase)) + .Select(GetSyncTarget); + } + + public IEnumerable GetAllSyncTargets() + { + return GetSyncAccounts().Select(GetSyncTarget); + } + + private SyncTarget GetSyncTarget(SyncAccount account) + { + return new SyncTarget + { + Id = account.Id, + Name = account.Name + }; + } + + private IEnumerable GetSyncAccounts() + { + // Dummy this up + return _userManager + .Users + .Select(i => new SyncAccount + { + Id = i.Id.ToString("N"), + UserIds = new List { i.Id.ToString("N") }, + Path = Path.Combine(_appPaths.DataPath, "foldersync", i.Id.ToString("N")), + Name = i.Name + "'s Folder Sync" + }); + } + + // An internal class to manage all configured Folder Sync accounts for differnet users + class SyncAccount + { + public string Id { get; set; } + public string Name { get; set; } + public string Path { get; set; } + public List UserIds { get; set; } + + public SyncAccount() + { + UserIds = new List(); + } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/IHasSyncProfile.cs b/MediaBrowser.Server.Implementations/Sync/IHasSyncProfile.cs new file mode 100644 index 000000000..b7e9daf49 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/IHasSyncProfile.cs @@ -0,0 +1,15 @@ +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Sync; + +namespace MediaBrowser.Server.Implementations.Sync +{ + public interface IHasSyncProfile + { + /// + /// Gets the device profile. + /// + /// The target. + /// DeviceProfile. + DeviceProfile GetDeviceProfile(SyncTarget target); + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 764652bbf..0407510a8 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -1,10 +1,18 @@ -using MediaBrowser.Common.Progress; +using MediaBrowser.Common.IO; +using MediaBrowser.Common.Progress; using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Sync; using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; using System.Threading; using System.Threading.Tasks; @@ -15,22 +23,25 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly ISyncManager _syncManager; private readonly IServerApplicationHost _appHost; private readonly ILogger _logger; + private readonly IFileSystem _fileSystem; - public MediaSync(ILogger logger, ISyncManager syncManager, IServerApplicationHost appHost) + public MediaSync(ILogger logger, ISyncManager syncManager, IServerApplicationHost appHost, IFileSystem fileSystem) { _logger = logger; _syncManager = syncManager; _appHost = appHost; + _fileSystem = fileSystem; } public async Task Sync(IServerSyncProvider provider, + ISyncDataProvider dataProvider, SyncTarget target, IProgress progress, CancellationToken cancellationToken) { var serverId = _appHost.SystemId; - await SyncData(provider, serverId, target, cancellationToken).ConfigureAwait(false); + await SyncData(provider, dataProvider, serverId, target, cancellationToken).ConfigureAwait(false); progress.Report(3); var innerProgress = new ActionableProgress(); @@ -40,44 +51,46 @@ namespace MediaBrowser.Server.Implementations.Sync totalProgress += 1; progress.Report(totalProgress); }); - await GetNewMedia(provider, target, serverId, innerProgress, cancellationToken); + await GetNewMedia(provider, dataProvider, target, serverId, innerProgress, cancellationToken); // Do the data sync twice so the server knows what was removed from the device - await SyncData(provider, serverId, target, cancellationToken).ConfigureAwait(false); + await SyncData(provider, dataProvider, serverId, target, cancellationToken).ConfigureAwait(false); progress.Report(100); } private async Task SyncData(IServerSyncProvider provider, + ISyncDataProvider dataProvider, string serverId, SyncTarget target, CancellationToken cancellationToken) { - //var localIds = await provider.GetServerItemIds(serverId, target, cancellationToken).ConfigureAwait(false); + var localIds = await dataProvider.GetServerItemIds(target, serverId).ConfigureAwait(false); - //var result = await _syncManager.SyncData(new SyncDataRequest - //{ - // TargetId = target.Id, - // LocalItemIds = localIds + var result = await _syncManager.SyncData(new SyncDataRequest + { + TargetId = target.Id, + LocalItemIds = localIds - //}).ConfigureAwait(false); + }).ConfigureAwait(false); - //cancellationToken.ThrowIfCancellationRequested(); + cancellationToken.ThrowIfCancellationRequested(); - //foreach (var itemIdToRemove in result.ItemIdsToRemove) - //{ - // try - // { - // await RemoveItem(provider, serverId, itemIdToRemove, target, cancellationToken).ConfigureAwait(false); - // } - // catch (Exception ex) - // { - // _logger.ErrorException("Error deleting item from sync target. Id: {0}", ex, itemIdToRemove); - // } - //} + foreach (var itemIdToRemove in result.ItemIdsToRemove) + { + try + { + await RemoveItem(provider, dataProvider, serverId, itemIdToRemove, target, cancellationToken).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error deleting item from device. Id: {0}", ex, itemIdToRemove); + } + } } private async Task GetNewMedia(IServerSyncProvider provider, + ISyncDataProvider dataProvider, SyncTarget target, string serverId, IProgress progress, @@ -106,7 +119,7 @@ namespace MediaBrowser.Server.Implementations.Sync progress.Report(totalProgress); }); - await GetItem(provider, target, serverId, jobItem, innerProgress, cancellationToken).ConfigureAwait(false); + await GetItem(provider, dataProvider, target, serverId, jobItem, innerProgress, cancellationToken).ConfigureAwait(false); numComplete++; startingPercent = numComplete; @@ -117,6 +130,7 @@ namespace MediaBrowser.Server.Implementations.Sync } private async Task GetItem(IServerSyncProvider provider, + ISyncDataProvider dataProvider, SyncTarget target, string serverId, SyncedItem jobItem, @@ -129,6 +143,8 @@ namespace MediaBrowser.Server.Implementations.Sync var fileTransferProgress = new ActionableProgress(); fileTransferProgress.RegisterAction(pct => progress.Report(pct * .92)); + var localItem = CreateLocalItem(provider, target, libraryItem, serverId, jobItem.OriginalFileName); + await _syncManager.ReportSyncJobItemTransferBeginning(internalSyncJobItem.Id); var transferSuccess = false; @@ -136,9 +152,10 @@ namespace MediaBrowser.Server.Implementations.Sync try { - string[] pathParts = GetPathParts(serverId, libraryItem); + await SendFile(provider, internalSyncJobItem.OutputPath, localItem, target, cancellationToken).ConfigureAwait(false); - await SendFile(provider, internalSyncJobItem.OutputPath, pathParts, target, cancellationToken).ConfigureAwait(false); + // Create db record + await dataProvider.AddOrUpdate(target, localItem).ConfigureAwait(false); progress.Report(92); @@ -164,25 +181,189 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private Task RemoveItem(IServerSyncProvider provider, + private async Task RemoveItem(IServerSyncProvider provider, + ISyncDataProvider dataProvider, string serverId, string itemId, SyncTarget target, CancellationToken cancellationToken) { - return Task.FromResult(true); - //return provider.DeleteItem(serverId, itemId, target, cancellationToken); + var localId = GetLocalId(serverId, itemId); + var localItem = await dataProvider.Get(target, localId); + + if (localItem == null) + { + return; + } + + var files = await GetFiles(provider, localItem, target); + + foreach (var file in files) + { + await provider.DeleteFile(file.Path, target, cancellationToken).ConfigureAwait(false); + } + + await dataProvider.Delete(target, localId).ConfigureAwait(false); } - private string[] GetPathParts(string serverId, BaseItemDto item) + private Task SendFile(IServerSyncProvider provider, string inputPath, LocalItem item, SyncTarget target, CancellationToken cancellationToken) { - return null; + return provider.SendFile(inputPath, item.LocalPath, target, new Progress(), cancellationToken); } - private async Task SendFile(IServerSyncProvider provider, string inputPath, string[] path, SyncTarget target, CancellationToken cancellationToken) + private string GetLocalId(string serverId, string itemId) { - await provider.SendFile(inputPath, path, target, new Progress(), cancellationToken) - .ConfigureAwait(false); + var bytes = Encoding.UTF8.GetBytes(serverId + itemId); + bytes = CreateMD5(bytes); + return BitConverter.ToString(bytes, 0, bytes.Length).Replace("-", string.Empty); + } + + private byte[] CreateMD5(byte[] value) + { + using (var provider = MD5.Create()) + { + return provider.ComputeHash(value); + } + } + + public LocalItem CreateLocalItem(IServerSyncProvider provider, SyncTarget target, BaseItemDto libraryItem, string serverId, string originalFileName) + { + var path = GetDirectoryPath(provider, libraryItem, serverId); + path.Add(GetLocalFileName(provider, libraryItem, originalFileName)); + + var localPath = provider.GetFullPath(path, target); + + foreach (var mediaSource in libraryItem.MediaSources) + { + mediaSource.Path = localPath; + mediaSource.Protocol = MediaProtocol.File; + } + + return new LocalItem + { + Item = libraryItem, + ItemId = libraryItem.Id, + ServerId = serverId, + LocalPath = localPath, + Id = GetLocalId(serverId, libraryItem.Id) + }; + } + + private List GetDirectoryPath(IServerSyncProvider provider, BaseItemDto item, string serverId) + { + var parts = new List + { + serverId + }; + + if (item.IsType("episode")) + { + parts.Add("TV"); + parts.Add(item.SeriesName); + + if (!string.IsNullOrWhiteSpace(item.SeasonName)) + { + parts.Add(item.SeasonName); + } + } + else if (item.IsVideo) + { + parts.Add("Videos"); + parts.Add(item.Name); + } + else if (item.IsAudio) + { + parts.Add("Music"); + + if (!string.IsNullOrWhiteSpace(item.AlbumArtist)) + { + parts.Add(item.AlbumArtist); + } + + if (!string.IsNullOrWhiteSpace(item.Album)) + { + parts.Add(item.Album); + } + } + else if (string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase)) + { + parts.Add("Photos"); + + if (!string.IsNullOrWhiteSpace(item.Album)) + { + parts.Add(item.Album); + } + } + + return parts.Select(i => GetValidFilename(provider, i)).ToList(); + } + + private string GetLocalFileName(IServerSyncProvider provider, BaseItemDto item, string originalFileName) + { + var filename = originalFileName; + + if (string.IsNullOrEmpty(filename)) + { + filename = item.Name; + } + + return GetValidFilename(provider, filename); + } + + private string GetValidFilename(IServerSyncProvider provider, string filename) + { + // We can always add this method to the sync provider if it's really needed + return _fileSystem.GetValidFilename(filename); + } + + private async Task> GetFiles(IServerSyncProvider provider, LocalItem item, SyncTarget target) + { + var path = item.LocalPath; + path = provider.GetParentDirectoryPath(path, target); + + var list = await provider.GetFileSystemEntries(path, target).ConfigureAwait(false); + + var itemFiles = new List(); + + var name = Path.GetFileNameWithoutExtension(item.LocalPath); + + foreach (var file in list.Where(f => f.Name.Contains(name))) + { + var itemFile = new ItemFileInfo + { + Path = file.Path, + Name = file.Name + }; + + if (IsSubtitleFile(file.Name)) + { + itemFile.Type = ItemFileType.Subtitles; + } + else if (!IsImageFile(file.Name)) + { + itemFile.Type = ItemFileType.Media; + } + + itemFiles.Add(itemFile); + } + + return itemFiles; + } + + private static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg", ".webp" }; + private bool IsImageFile(string path) + { + var ext = Path.GetExtension(path) ?? string.Empty; + + return SupportedImageExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase); + } + + private static readonly string[] SupportedSubtitleExtensions = { ".srt", ".vtt" }; + private bool IsSubtitleFile(string path) + { + var ext = Path.GetExtension(path) ?? string.Empty; + + return SupportedSubtitleExtensions.Contains(ext, StringComparer.OrdinalIgnoreCase); } } } diff --git a/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs b/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs new file mode 100644 index 000000000..cbfa82f1d --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs @@ -0,0 +1,69 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Common.Progress; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Sync; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Server.Implementations.Sync +{ + public class MultiProviderSync + { + private readonly ISyncManager _syncManager; + private readonly IServerApplicationHost _appHost; + private readonly ILogger _logger; + private readonly IFileSystem _fileSystem; + + public MultiProviderSync(ISyncManager syncManager, IServerApplicationHost appHost, ILogger logger, IFileSystem fileSystem) + { + _syncManager = syncManager; + _appHost = appHost; + _logger = logger; + _fileSystem = fileSystem; + } + + public async Task Sync(IEnumerable providers, IProgress progress, CancellationToken cancellationToken) + { + var targets = providers + .SelectMany(i => i.GetAllSyncTargets().Select(t => new Tuple(i, t))) + .ToList(); + + var numComplete = 0; + double startingPercent = 0; + double percentPerItem = 1; + if (targets.Count > 0) + { + percentPerItem /= targets.Count; + } + + foreach (var target in targets) + { + cancellationToken.ThrowIfCancellationRequested(); + + var currentPercent = startingPercent; + var innerProgress = new ActionableProgress(); + innerProgress.RegisterAction(pct => + { + var totalProgress = pct * percentPerItem; + totalProgress += currentPercent; + progress.Report(totalProgress); + }); + + await new MediaSync(_logger, _syncManager, _appHost, _fileSystem) + .Sync(target.Item1, target.Item1.GetDataProvider(), target.Item2, innerProgress, cancellationToken) + .ConfigureAwait(false); + + numComplete++; + startingPercent = numComplete; + startingPercent /= targets.Count; + startingPercent *= 100; + progress.Report(startingPercent); + } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index a2fd92bf5..912967020 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -429,13 +429,6 @@ namespace MediaBrowser.Server.Implementations.Sync return (providerId + "-" + target.Id).GetMD5().ToString("N"); } - private ISyncProvider GetSyncProvider(SyncTarget target) - { - var providerId = target.Id.Split(new[] { '-' }, 2).First(); - - return _providers.First(i => string.Equals(providerId, GetSyncProviderId(i))); - } - private string GetSyncProviderId(ISyncProvider provider) { return (provider.GetType().Name).GetMD5().ToString("N"); @@ -547,7 +540,7 @@ namespace MediaBrowser.Server.Implementations.Sync { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { - return provider.GetDeviceProfile(target); + return GetDeviceProfile(provider, target); } } } @@ -555,6 +548,18 @@ namespace MediaBrowser.Server.Implementations.Sync return null; } + public DeviceProfile GetDeviceProfile(ISyncProvider provider, SyncTarget target) + { + var hasProfile = provider as IHasSyncProfile; + + if (hasProfile != null) + { + return hasProfile.GetDeviceProfile(target); + } + + return new CloudSyncProfile(true, false); + } + public async Task ReportSyncJobItemTransferred(string id) { var jobItem = _repo.GetJobItem(id); From 42b07f0e03762abd1d943e82970e8beba4a1dad8 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 08:43:06 -0500 Subject: [PATCH 024/169] support lockout after several unsuccessful login attempts --- .../Configuration/UserConfiguration.cs | 12 -------- .../Library/UserManager.cs | 30 +++++++++++++------ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs index aa49ee50d..a78161140 100644 --- a/MediaBrowser.Model/Configuration/UserConfiguration.cs +++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs @@ -33,20 +33,12 @@ namespace MediaBrowser.Model.Configuration public bool DisplayMissingEpisodes { get; set; } public bool DisplayUnairedEpisodes { get; set; } - public bool EnableLiveTvManagement { get; set; } - public bool EnableLiveTvAccess { get; set; } - - public bool EnableMediaPlayback { get; set; } - public bool EnableContentDeletion { get; set; } - public bool GroupMoviesIntoBoxSets { get; set; } public string[] DisplayChannelsWithinViews { get; set; } public string[] ExcludeFoldersFromGrouping { get; set; } - public UnratedItem[] BlockUnratedItems { get; set; } - public SubtitlePlaybackMode SubtitleMode { get; set; } public bool DisplayCollectionsView { get; set; } public bool DisplayFoldersView { get; set; } @@ -69,14 +61,10 @@ namespace MediaBrowser.Model.Configuration public UserConfiguration() { PlayDefaultAudioTrack = true; - EnableLiveTvManagement = true; - EnableMediaPlayback = true; - EnableLiveTvAccess = true; LatestItemsExcludes = new string[] { }; OrderedViews = new string[] { }; DisplayChannelsWithinViews = new string[] { }; - BlockUnratedItems = new UnratedItem[] { }; ExcludeFoldersFromGrouping = new string[] { }; DisplayCollectionsView = true; diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index bf8792461..0f160bc2e 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -259,6 +259,11 @@ namespace MediaBrowser.Server.Implementations.Library { user.LastActivityDate = user.LastLoginDate = DateTime.UtcNow; await UpdateUser(user).ConfigureAwait(false); + await UpdateInvalidLoginAttemptCount(user, 0).ConfigureAwait(false); + } + else + { + await UpdateInvalidLoginAttemptCount(user, user.Policy.InvalidLoginAttemptCount + 1).ConfigureAwait(false); } _logger.Info("Authentication request for {0} {1}.", user.Name, (success ? "has succeeded" : "has been denied")); @@ -266,6 +271,22 @@ namespace MediaBrowser.Server.Implementations.Library return success; } + private async Task UpdateInvalidLoginAttemptCount(User user, int newValue) + { + if (user.Policy.InvalidLoginAttemptCount != newValue || newValue > 0) + { + user.Policy.InvalidLoginAttemptCount = newValue; + + if (newValue >= 3) + { + _logger.Debug("Disabling user {0} due to {1} unsuccessful login attempts.", user.Name, newValue.ToString(CultureInfo.InvariantCulture)); + user.Policy.IsDisabled = true; + } + + await UpdateUserPolicy(user, user.Policy, false).ConfigureAwait(false); + } + } + private string GetPasswordHash(User user) { return string.IsNullOrEmpty(user.Password) @@ -332,11 +353,6 @@ namespace MediaBrowser.Server.Implementations.Library { if (!user.Configuration.HasMigratedToPolicy) { - user.Policy.BlockUnratedItems = user.Configuration.BlockUnratedItems; - user.Policy.EnableContentDeletion = user.Configuration.EnableContentDeletion; - user.Policy.EnableLiveTvAccess = user.Configuration.EnableLiveTvAccess; - user.Policy.EnableLiveTvManagement = user.Configuration.EnableLiveTvManagement; - user.Policy.EnableMediaPlayback = user.Configuration.EnableMediaPlayback; user.Policy.IsAdministrator = user.Configuration.IsAdministrator; await UpdateUserPolicy(user, user.Policy, false); @@ -915,10 +931,6 @@ namespace MediaBrowser.Server.Implementations.Library } user.Configuration.IsAdministrator = user.Policy.IsAdministrator; - user.Configuration.EnableLiveTvManagement = user.Policy.EnableLiveTvManagement; - user.Configuration.EnableLiveTvAccess = user.Policy.EnableLiveTvAccess; - user.Configuration.EnableMediaPlayback = user.Policy.EnableMediaPlayback; - user.Configuration.EnableContentDeletion = user.Policy.EnableContentDeletion; await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false); } From 975f6899fe4bd580baf1c8869dd03fa7928ef743 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 09:16:10 -0500 Subject: [PATCH 025/169] update ImageMagickSharp --- .../MediaBrowser.Server.Implementations.csproj | 2 +- MediaBrowser.Server.Implementations/packages.config | 2 +- .../MediaBrowser.ServerApplication.csproj | 2 +- MediaBrowser.ServerApplication/packages.config | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 40aaa299f..fdd53b907 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.3\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.4\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 0112d0f75..c97792fe0 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 9750a4e45..984cca44b 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -62,7 +62,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.3\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.4\lib\net45\ImageMagickSharp.dll ..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index cfe7938de..5e4e31b86 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file From 76584ed984251957d28702afc19ade50057aef10 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 09:35:12 -0500 Subject: [PATCH 026/169] sync update --- MediaBrowser.Controller/Sync/IServerSyncProvider.cs | 6 ------ MediaBrowser.Controller/Sync/ISyncProvider.cs | 9 +++++++-- .../Sync/AppSyncProvider.cs | 13 +++++++++++++ .../Sync/SyncManager.cs | 11 ++++++++++- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 9ee83acbf..775a3648d 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -68,11 +68,5 @@ namespace MediaBrowser.Controller.Sync /// /// ISyncDataProvider. ISyncDataProvider GetDataProvider(); - - /// - /// Gets all synchronize targets. - /// - /// IEnumerable<SyncTarget>. - IEnumerable GetAllSyncTargets(); } } diff --git a/MediaBrowser.Controller/Sync/ISyncProvider.cs b/MediaBrowser.Controller/Sync/ISyncProvider.cs index ba6e54d45..ef34bfe69 100644 --- a/MediaBrowser.Controller/Sync/ISyncProvider.cs +++ b/MediaBrowser.Controller/Sync/ISyncProvider.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Sync; +using MediaBrowser.Model.Sync; using System.Collections.Generic; namespace MediaBrowser.Controller.Sync @@ -18,6 +17,12 @@ namespace MediaBrowser.Controller.Sync /// The user identifier. /// IEnumerable<SyncTarget>. IEnumerable GetSyncTargets(string userId); + + /// + /// Gets all synchronize targets. + /// + /// IEnumerable<SyncTarget>. + IEnumerable GetAllSyncTargets(); } public interface IHasUniqueTargetIds diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index 29ac74e82..2106fc12e 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -42,5 +42,18 @@ namespace MediaBrowser.Server.Implementations.Sync { get { return "App Sync"; } } + + public IEnumerable GetAllSyncTargets() + { + return _deviceManager.GetDevices(new DeviceQuery + { + SupportsSync = true + + }).Items.Select(i => new SyncTarget + { + Id = i.Id, + Name = i.Name + }); + } } } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 912967020..8fc3651f7 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -407,6 +407,15 @@ namespace MediaBrowser.Server.Implementations.Sync .OrderBy(i => i.Name); } + private IEnumerable GetSyncTargets(ISyncProvider provider) + { + return provider.GetAllSyncTargets().Select(i => new SyncTarget + { + Name = i.Name, + Id = GetSyncTargetId(provider, i) + }); + } + private IEnumerable GetSyncTargets(ISyncProvider provider, string userId) { return provider.GetSyncTargets(userId).Select(i => new SyncTarget @@ -536,7 +545,7 @@ namespace MediaBrowser.Server.Implementations.Sync { foreach (var provider in _providers) { - foreach (var target in GetSyncTargets(provider, null)) + foreach (var target in GetSyncTargets(provider)) { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { From 291727f624b0ec4f0476d26f915a93c3410104c7 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 09:37:38 -0500 Subject: [PATCH 027/169] updated nuget --- Nuget/MediaBrowser.Common.Internal.nuspec | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 6852922e4..88c6e9f8a 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.578 + 3.0.579 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 f3053fd60..facbe5366 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.578 + 3.0.579 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index bb4ad23c8..dab103446 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.578 + 3.0.579 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 fa6e4020f..e94d18fb5 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.578 + 3.0.579 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 - + From 3d22c486700f63034f6735bc6cf3efb2ad18af22 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 28 Feb 2015 13:47:05 -0500 Subject: [PATCH 028/169] added IProcessManager --- .../Playback/BaseStreamingService.cs | 22 +++++- .../Playback/Hls/BaseHlsService.cs | 3 +- .../Playback/Hls/DynamicHlsService.cs | 3 +- .../Playback/Hls/MpegDashService.cs | 3 +- .../Playback/Hls/VideoHlsService.cs | 3 +- .../Playback/Progressive/AudioService.cs | 3 +- .../BaseProgressiveStreamingService.cs | 3 +- .../Playback/Progressive/VideoService.cs | 3 +- MediaBrowser.Api/Playback/StreamState.cs | 24 +++++- .../Playback/TranscodingThrottler.cs | 53 ++++++++++--- .../Diagnostics/IProcessManager.cs | 28 +++++++ .../MediaBrowser.Controller.csproj | 1 + .../Library/UserManager.cs | 6 +- .../Sync/FolderSync/FolderSyncProvider.cs | 1 + .../Diagnostics/LinuxProcessManager.cs | 25 ++++++ .../Diagnostics/ProcessManager.cs | 24 ++++++ .../MediaBrowser.Server.Mono.csproj | 2 + .../Native/BaseMonoApp.cs | 13 ++++ .../ApplicationHost.cs | 2 + .../INativeApp.cs | 7 ++ .../MediaBrowser.ServerApplication.csproj | 1 + .../Native/WindowsApp.cs | 6 ++ .../Native/WindowsProcessManager.cs | 78 +++++++++++++++++++ 23 files changed, 291 insertions(+), 23 deletions(-) create mode 100644 MediaBrowser.Controller/Diagnostics/IProcessManager.cs create mode 100644 MediaBrowser.Server.Mono/Diagnostics/LinuxProcessManager.cs create mode 100644 MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs create mode 100644 MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index bab0d1a6e..a40e0f8c3 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Model.Extensions; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; @@ -70,12 +71,14 @@ namespace MediaBrowser.Api.Playback protected IDeviceManager DeviceManager { get; private set; } protected IChannelManager ChannelManager { get; private set; } protected ISubtitleEncoder SubtitleEncoder { get; private set; } + protected IProcessManager ProcessManager { get; private set; } /// /// Initializes a new instance of the class. /// - protected BaseStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager) + protected BaseStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager) { + ProcessManager = processManager; DeviceManager = deviceManager; SubtitleEncoder = subtitleEncoder; ChannelManager = channelManager; @@ -1093,9 +1096,26 @@ namespace MediaBrowser.Api.Playback } } + StartThrottler(state, transcodingJob); + return transcodingJob; } + private void StartThrottler(StreamState state, TranscodingJob transcodingJob) + { + if (state.InputProtocol == MediaProtocol.File && + state.RunTimeTicks.HasValue && + state.VideoType == VideoType.VideoFile && + !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) + { + if (state.RunTimeTicks.Value >= TimeSpan.FromMinutes(5).Ticks && state.IsInputVideo) + { + state.TranscodingThrottler = new TranscodingThrottler(transcodingJob, Logger, ProcessManager); + state.TranscodingThrottler.Start(); + } + } + } + private async void StartStreamingLog(TranscodingJob transcodingJob, StreamState state, Stream source, Stream target) { try diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 2da5c33ce..fdfa6e6d7 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; @@ -23,7 +24,7 @@ namespace MediaBrowser.Api.Playback.Hls /// public abstract class BaseHlsService : BaseStreamingService { - protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager) + protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager) { } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index e639dbdfe..1abaf5274 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -1,4 +1,5 @@ using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Model.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; @@ -63,7 +64,7 @@ namespace MediaBrowser.Api.Playback.Hls public class DynamicHlsService : BaseHlsService { - public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager) + public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager) { NetworkManager = networkManager; } diff --git a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs b/MediaBrowser.Api/Playback/Hls/MpegDashService.cs index 80451c0cc..05909402c 100644 --- a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Hls/MpegDashService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; @@ -51,7 +52,7 @@ namespace MediaBrowser.Api.Playback.Hls public class MpegDashService : BaseHlsService { - public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager) + public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager) { NetworkManager = networkManager; } diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index 8de52ea02..d27296bfd 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; @@ -57,7 +58,7 @@ namespace MediaBrowser.Api.Playback.Hls /// public class VideoHlsService : BaseHlsService { - public VideoHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager) + public VideoHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager) { } diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs index 37155b8f9..08ec13f4f 100644 --- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs +++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; @@ -32,7 +33,7 @@ namespace MediaBrowser.Api.Playback.Progressive /// public class AudioService : BaseProgressiveStreamingService { - public AudioService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, imageProcessor, httpClient) + public AudioService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager, imageProcessor, httpClient) { } diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index bc1c86eee..0af4587b6 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; @@ -29,7 +30,7 @@ namespace MediaBrowser.Api.Playback.Progressive protected readonly IImageProcessor ImageProcessor; protected readonly IHttpClient HttpClient; - protected BaseProgressiveStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager) + protected BaseProgressiveStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager) { ImageProcessor = imageProcessor; HttpClient = httpClient; diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 7e86b867f..9b161085a 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Controller.Dlna; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Library; @@ -63,7 +64,7 @@ namespace MediaBrowser.Api.Playback.Progressive /// public class VideoService : BaseProgressiveStreamingService { - public VideoService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, imageProcessor, httpClient) + public VideoService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, IChannelManager channelManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, channelManager, subtitleEncoder, deviceManager, processManager, imageProcessor, httpClient) { } diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 40e765f1a..588d3b75c 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -1,17 +1,16 @@ -using MediaBrowser.Common.Net; -using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Logging; using MediaBrowser.Model.MediaInfo; +using MediaBrowser.Model.Net; using System; using System.Collections.Generic; using System.Globalization; using System.IO; using System.Threading; -using MediaBrowser.Model.Net; namespace MediaBrowser.Api.Playback { @@ -23,6 +22,7 @@ namespace MediaBrowser.Api.Playback public string RequestedUrl { get; set; } public StreamRequest Request { get; set; } + public TranscodingThrottler TranscodingThrottler { get; set; } public VideoStreamRequest VideoRequest { @@ -125,6 +125,7 @@ namespace MediaBrowser.Api.Playback public void Dispose() { + DisposeTranscodingThrottler(); DisposeLiveStream(); DisposeLogStream(); DisposeIsoMount(); @@ -147,6 +148,23 @@ namespace MediaBrowser.Api.Playback } } + private void DisposeTranscodingThrottler() + { + if (TranscodingThrottler != null) + { + try + { + TranscodingThrottler.Dispose(); + } + catch (Exception ex) + { + _logger.ErrorException("Error disposing TranscodingThrottler", ex); + } + + TranscodingThrottler = null; + } + } + private void DisposeIsoMount() { if (IsoMount != null) diff --git a/MediaBrowser.Api/Playback/TranscodingThrottler.cs b/MediaBrowser.Api/Playback/TranscodingThrottler.cs index 50c213655..432f4667d 100644 --- a/MediaBrowser.Api/Playback/TranscodingThrottler.cs +++ b/MediaBrowser.Api/Playback/TranscodingThrottler.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Logging; +using MediaBrowser.Controller.Diagnostics; +using MediaBrowser.Model.Logging; using System; using System.IO; using System.Threading; @@ -9,11 +10,16 @@ namespace MediaBrowser.Api.Playback { private readonly TranscodingJob _job; private readonly ILogger _logger; + private readonly IProcessManager _processManager; private Timer _timer; + private bool _isPaused; public void Start() { - _timer = new Timer(TimerCallback, null, 5000, 5000); + if (_processManager.SupportsSuspension) + { + _timer = new Timer(TimerCallback, null, 5000, 5000); + } } private void TimerCallback(object state) @@ -36,22 +42,49 @@ namespace MediaBrowser.Api.Playback private void PauseTranscoding() { - _logger.Debug("Sending pause command to ffmpeg"); - _job.Process.StandardInput.WriteLine("p"); + if (!_isPaused) + { + _logger.Debug("Sending pause command to ffmpeg"); + } + + try + { + //_job.Process.StandardInput.WriteLine("p"); + _processManager.SuspendProcess(_job.Process); + _isPaused = true; + } + catch (Exception ex) + { + _logger.ErrorException("Error pausing transcoding", ex); + } } private void UnpauseTranscoding() { - _logger.Debug("Sending unpause command to ffmpeg"); - _job.Process.StandardInput.WriteLine("u"); + if (_isPaused) + { + _logger.Debug("Sending unpause command to ffmpeg"); + } + + try + { + //_job.Process.StandardInput.WriteLine("u"); + _processManager.ResumeProcess(_job.Process); + _isPaused = false; + } + catch (Exception ex) + { + _logger.ErrorException("Error unpausing transcoding", ex); + } } private readonly long _gapLengthInTicks = TimeSpan.FromMinutes(2).Ticks; - public TranscodingThrottler(TranscodingJob job, ILogger logger) + public TranscodingThrottler(TranscodingJob job, ILogger logger, IProcessManager processManager) { _job = job; _logger = logger; + _processManager = processManager; } private bool IsThrottleAllowed(TranscodingJob job) @@ -106,13 +139,11 @@ namespace MediaBrowser.Api.Playback catch { //_logger.Error("Error getting output size"); + return false; } } - else - { - //_logger.Debug("No throttle data for " + path); - } + //_logger.Debug("No throttle data for " + path); return false; } diff --git a/MediaBrowser.Controller/Diagnostics/IProcessManager.cs b/MediaBrowser.Controller/Diagnostics/IProcessManager.cs new file mode 100644 index 000000000..2e076bd88 --- /dev/null +++ b/MediaBrowser.Controller/Diagnostics/IProcessManager.cs @@ -0,0 +1,28 @@ +using System.Diagnostics; + +namespace MediaBrowser.Controller.Diagnostics +{ + /// + /// Interface IProcessManager + /// + public interface IProcessManager + { + /// + /// Gets a value indicating whether [supports suspension]. + /// + /// true if [supports suspension]; otherwise, false. + bool SupportsSuspension { get; } + + /// + /// Suspends the process. + /// + /// The process. + void SuspendProcess(Process process); + + /// + /// Resumes the process. + /// + /// The process. + void ResumeProcess(Process process); + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 603cb02e0..36809c5d3 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -104,6 +104,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 0f160bc2e..846bad214 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -277,7 +277,11 @@ namespace MediaBrowser.Server.Implementations.Library { user.Policy.InvalidLoginAttemptCount = newValue; - if (newValue >= 3) + var maxCount = user.Policy.IsAdministrator ? + 3 : + 5; + + if (newValue >= maxCount) { _logger.Debug("Disabling user {0} due to {1} unsuccessful login attempts.", user.Name, newValue.ToString(CultureInfo.InvariantCulture)); user.Policy.IsDisabled = true; diff --git a/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs index 9cf234106..3183816c8 100644 --- a/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/FolderSync/FolderSyncProvider.cs @@ -113,6 +113,7 @@ namespace MediaBrowser.Server.Implementations.Sync.FolderSync private IEnumerable GetSyncAccounts() { + return new List(); // Dummy this up return _userManager .Users diff --git a/MediaBrowser.Server.Mono/Diagnostics/LinuxProcessManager.cs b/MediaBrowser.Server.Mono/Diagnostics/LinuxProcessManager.cs new file mode 100644 index 000000000..a66365212 --- /dev/null +++ b/MediaBrowser.Server.Mono/Diagnostics/LinuxProcessManager.cs @@ -0,0 +1,25 @@ +using MediaBrowser.Controller.Diagnostics; +using System.Diagnostics; + +namespace MediaBrowser.Server.Mono.Diagnostics +{ + public class LinuxProcessManager : IProcessManager + { + public bool SupportsSuspension + { + get { return true; } + } + + public void SuspendProcess(Process process) + { + // http://jumptuck.com/2011/11/23/quick-tip-pause-process-linux/ + process.StandardInput.WriteLine("^Z"); + } + + public void ResumeProcess(Process process) + { + // http://jumptuck.com/2011/11/23/quick-tip-pause-process-linux/ + process.StandardInput.WriteLine("fg"); + } + } +} diff --git a/MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs b/MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs new file mode 100644 index 000000000..05d1a4151 --- /dev/null +++ b/MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs @@ -0,0 +1,24 @@ +using MediaBrowser.Controller.Diagnostics; +using System; +using System.Diagnostics; + +namespace MediaBrowser.Server.Mono.Diagnostics +{ + public class ProcessManager : IProcessManager + { + public void SuspendProcess(Process process) + { + throw new NotImplementedException(); + } + + public void ResumeProcess(Process process) + { + throw new NotImplementedException(); + } + + public bool SupportsSuspension + { + get { return false; } + } + } +} diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index cd010e1c1..8b4783b5c 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -74,6 +74,8 @@ Properties\SharedVersion.cs + + diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs index 1ec0109ad..139661aa2 100644 --- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs +++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs @@ -1,6 +1,8 @@ using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.IsoMounter; using MediaBrowser.Model.Logging; +using MediaBrowser.Server.Mono.Diagnostics; using MediaBrowser.Server.Mono.Networking; using MediaBrowser.Server.Startup.Common; using Mono.Unix.Native; @@ -189,5 +191,16 @@ namespace MediaBrowser.Server.Mono.Native public string sysname = string.Empty; public string machine = string.Empty; } + + + public IProcessManager GetProcessManager() + { + if (Environment.OperatingSystem == Startup.Common.OperatingSystem.Linux) + { + return new LinuxProcessManager(); + } + + return new ProcessManager(); + } } } diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index fac704b68..63d30a606 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -380,6 +380,8 @@ namespace MediaBrowser.Server.Startup.Common RegisterSingleInstance(ServerConfigurationManager); + RegisterSingleInstance(NativeApp.GetProcessManager()); + LocalizationManager = new LocalizationManager(ServerConfigurationManager, FileSystemManager, JsonSerializer); RegisterSingleInstance(LocalizationManager); diff --git a/MediaBrowser.Server.Startup.Common/INativeApp.cs b/MediaBrowser.Server.Startup.Common/INativeApp.cs index 2dbd844ba..1c4b5b1d5 100644 --- a/MediaBrowser.Server.Startup.Common/INativeApp.cs +++ b/MediaBrowser.Server.Startup.Common/INativeApp.cs @@ -1,4 +1,5 @@ using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.Reflection; @@ -84,5 +85,11 @@ namespace MediaBrowser.Server.Startup.Common /// Prevents the system stand by. /// void PreventSystemStandby(); + + /// + /// Gets the process manager. + /// + /// IProcessManager. + IProcessManager GetProcessManager(); } } diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 984cca44b..fcda32a33 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -113,6 +113,7 @@ + diff --git a/MediaBrowser.ServerApplication/Native/WindowsApp.cs b/MediaBrowser.ServerApplication/Native/WindowsApp.cs index 476fb58b9..8d25b4f72 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsApp.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsApp.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Diagnostics; using MediaBrowser.IsoMounter; using MediaBrowser.Model.Logging; using MediaBrowser.Server.Startup.Common; @@ -109,5 +110,10 @@ namespace MediaBrowser.ServerApplication.Native { Standby.PreventSystemStandby(); } + + public IProcessManager GetProcessManager() + { + return new WindowsProcessManager(); + } } } diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs new file mode 100644 index 000000000..f3497aef5 --- /dev/null +++ b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs @@ -0,0 +1,78 @@ +using MediaBrowser.Controller.Diagnostics; +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; + +namespace MediaBrowser.ServerApplication.Native +{ + public class WindowsProcessManager : IProcessManager + { + public void SuspendProcess(Process process) + { + process.Suspend(); + } + + public void ResumeProcess(Process process) + { + process.Resume(); + } + + public bool SupportsSuspension + { + get { return true; } + } + } + + public static class ProcessExtension + { + [DllImport("kernel32.dll")] + static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId); + [DllImport("kernel32.dll")] + static extern uint SuspendThread(IntPtr hThread); + [DllImport("kernel32.dll")] + static extern int ResumeThread(IntPtr hThread); + + public static void Suspend(this Process process) + { + foreach (ProcessThread thread in process.Threads) + { + var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); + if (pOpenThread == IntPtr.Zero) + { + break; + } + SuspendThread(pOpenThread); + } + } + public static void Resume(this Process process) + { + foreach (ProcessThread thread in process.Threads) + { + var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); + if (pOpenThread == IntPtr.Zero) + { + break; + } + ResumeThread(pOpenThread); + } + } + public static void Print(this Process process) + { + Console.WriteLine("{0,8} {1}", process.Id, process.ProcessName); + } + } + + [Flags] + public enum ThreadAccess : int + { + TERMINATE = (0x0001), + SUSPEND_RESUME = (0x0002), + GET_CONTEXT = (0x0008), + SET_CONTEXT = (0x0010), + SET_INFORMATION = (0x0020), + QUERY_INFORMATION = (0x0040), + SET_THREAD_TOKEN = (0x0080), + IMPERSONATE = (0x0100), + DIRECT_IMPERSONATION = (0x0200) + } +} From 0d8636d859cef5d0be4a723402926f05499210d7 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Mar 2015 00:16:29 -0500 Subject: [PATCH 029/169] update image magick sharp --- .../Library/IUserManager.cs | 1 + .../Notifications/NotificationType.cs | 3 +- .../Devices/CameraUploadsFolder.cs | 6 +++ .../Drawing/ImageProcessor.cs | 40 ++----------------- .../EntryPoints/ActivityLogEntryPoint.cs | 12 ++++++ .../Notifications/Notifications.cs | 18 ++++++++- .../Library/UserManager.cs | 13 ++++++ .../Localization/Server/server.json | 11 +++++ ...MediaBrowser.Server.Implementations.csproj | 2 +- .../Notifications/CoreNotificationTypes.cs | 11 +++++ .../Session/SessionManager.cs | 21 ++++++++-- .../packages.config | 2 +- .../MediaBrowser.ServerApplication.csproj | 2 +- .../packages.config | 2 +- .../Api/PackageCreator.cs | 1 + .../MediaBrowser.WebDashboard.csproj | 9 +++++ MediaBrowser.sln | 3 ++ 17 files changed, 111 insertions(+), 46 deletions(-) diff --git a/MediaBrowser.Controller/Library/IUserManager.cs b/MediaBrowser.Controller/Library/IUserManager.cs index 8119e5afb..a167cdbed 100644 --- a/MediaBrowser.Controller/Library/IUserManager.cs +++ b/MediaBrowser.Controller/Library/IUserManager.cs @@ -34,6 +34,7 @@ namespace MediaBrowser.Controller.Library event EventHandler> UserCreated; event EventHandler> UserConfigurationUpdated; event EventHandler> UserPasswordChanged; + event EventHandler> UserLockedOut; /// /// Gets a User by Id diff --git a/MediaBrowser.Model/Notifications/NotificationType.cs b/MediaBrowser.Model/Notifications/NotificationType.cs index 269e27a4f..f5e3624f0 100644 --- a/MediaBrowser.Model/Notifications/NotificationType.cs +++ b/MediaBrowser.Model/Notifications/NotificationType.cs @@ -19,6 +19,7 @@ namespace MediaBrowser.Model.Notifications NewLibraryContentMultiple, ServerRestartRequired, TaskFailed, - CameraImageUploaded + CameraImageUploaded, + UserLockedOut } } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Devices/CameraUploadsFolder.cs b/MediaBrowser.Server.Implementations/Devices/CameraUploadsFolder.cs index 2fe5d8f74..566f4c5f4 100644 --- a/MediaBrowser.Server.Implementations/Devices/CameraUploadsFolder.cs +++ b/MediaBrowser.Server.Implementations/Devices/CameraUploadsFolder.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; +using System; using System.IO; using System.Linq; @@ -14,6 +15,11 @@ namespace MediaBrowser.Server.Implementations.Devices public override bool IsVisible(User user) { + if (!user.Policy.EnableAllFolders && !user.Policy.EnabledFolders.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + { + return false; + } + return GetChildren(user, true).Any() && base.IsVisible(user); } diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index c484a60db..180faa6bb 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -350,9 +350,9 @@ namespace MediaBrowser.Server.Implementations.Drawing } /// - /// Increment this when indicator drawings change + /// Increment this when there's a change requiring caches to be invalidated /// - private const string IndicatorVersion = "2"; + private const string Version = "3"; /// /// Gets the cache file path based on a set of parameters @@ -371,29 +371,19 @@ namespace MediaBrowser.Server.Implementations.Drawing filename += "f=" + format; - var hasIndicator = false; - if (addPlayedIndicator) { filename += "pl=true"; - hasIndicator = true; } if (percentPlayed > 0) { filename += "p=" + percentPlayed; - hasIndicator = true; } if (unwatchedCount.HasValue) { filename += "p=" + unwatchedCount.Value; - hasIndicator = true; - } - - if (hasIndicator) - { - filename += "iv=" + IndicatorVersion; } if (!string.IsNullOrEmpty(backgroundColor)) @@ -401,6 +391,8 @@ namespace MediaBrowser.Server.Implementations.Drawing filename += "b=" + backgroundColor; } + filename += "v=" + Version; + return GetCachePath(ResizedImageCachePath, filename, "." + format.ToString().ToLower()); } @@ -671,30 +663,6 @@ namespace MediaBrowser.Server.Implementations.Drawing return enhancedImagePath; } - private ImageFormat GetFormat(string path) - { - var extension = Path.GetExtension(path); - - if (string.Equals(extension, ".png", StringComparison.OrdinalIgnoreCase)) - { - return ImageFormat.Png; - } - if (string.Equals(extension, ".gif", StringComparison.OrdinalIgnoreCase)) - { - return ImageFormat.Gif; - } - if (string.Equals(extension, ".webp", StringComparison.OrdinalIgnoreCase)) - { - return ImageFormat.Webp; - } - if (string.Equals(extension, ".bmp", StringComparison.OrdinalIgnoreCase)) - { - return ImageFormat.Bmp; - } - - return ImageFormat.Jpg; - } - /// /// Executes the image enhancers. /// diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs index 0b0661321..28883e9a2 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs @@ -86,6 +86,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints _userManager.UserPasswordChanged += _userManager_UserPasswordChanged; _userManager.UserDeleted += _userManager_UserDeleted; _userManager.UserConfigurationUpdated += _userManager_UserConfigurationUpdated; + _userManager.UserLockedOut += _userManager_UserLockedOut; //_config.ConfigurationUpdated += _config_ConfigurationUpdated; //_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated; @@ -95,6 +96,16 @@ namespace MediaBrowser.Server.Implementations.EntryPoints _appHost.ApplicationUpdated += _appHost_ApplicationUpdated; } + void _userManager_UserLockedOut(object sender, GenericEventArgs e) + { + CreateLogEntry(new ActivityLogEntry + { + Name = string.Format(_localization.GetLocalizedString("UserLockedOutWithName"), e.Argument.Name), + Type = "UserLockedOut", + UserId = e.Argument.Id.ToString("N") + }); + } + void _subManager_SubtitleDownloadFailure(object sender, SubtitleDownloadFailureEventArgs e) { CreateLogEntry(new ActivityLogEntry @@ -482,6 +493,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints _userManager.UserPasswordChanged -= _userManager_UserPasswordChanged; _userManager.UserDeleted -= _userManager_UserDeleted; _userManager.UserConfigurationUpdated -= _userManager_UserConfigurationUpdated; + _userManager.UserLockedOut -= _userManager_UserLockedOut; _config.ConfigurationUpdated -= _config_ConfigurationUpdated; _config.NamedConfigurationUpdated -= _config_NamedConfigurationUpdated; diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs index 37bca4ddb..f6a35973b 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifications.cs @@ -78,6 +78,22 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications _appHost.HasUpdateAvailableChanged += _appHost_HasUpdateAvailableChanged; _appHost.ApplicationUpdated += _appHost_ApplicationUpdated; _deviceManager.CameraImageUploaded +=_deviceManager_CameraImageUploaded; + + _userManager.UserLockedOut += _userManager_UserLockedOut; + } + + async void _userManager_UserLockedOut(object sender, GenericEventArgs e) + { + var type = NotificationType.UserLockedOut.ToString(); + + var notification = new NotificationRequest + { + NotificationType = type + }; + + notification.Variables["UserName"] = e.Argument.Name; + + await SendNotification(notification).ConfigureAwait(false); } async void _deviceManager_CameraImageUploaded(object sender, GenericEventArgs e) @@ -235,7 +251,6 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications return; } - var notification = new NotificationRequest { NotificationType = type @@ -471,6 +486,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications _appHost.ApplicationUpdated -= _appHost_ApplicationUpdated; _deviceManager.CameraImageUploaded -= _deviceManager_CameraImageUploaded; + _userManager.UserLockedOut -= _userManager_UserLockedOut; } private void DisposeLibraryUpdateTimer() diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 846bad214..00c674436 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -97,6 +97,7 @@ namespace MediaBrowser.Server.Implementations.Library /// public event EventHandler> UserUpdated; public event EventHandler> UserConfigurationUpdated; + public event EventHandler> UserLockedOut; /// /// Called when [user updated]. @@ -281,13 +282,25 @@ namespace MediaBrowser.Server.Implementations.Library 3 : 5; + var fireLockout = false; + if (newValue >= maxCount) { _logger.Debug("Disabling user {0} due to {1} unsuccessful login attempts.", user.Name, newValue.ToString(CultureInfo.InvariantCulture)); user.Policy.IsDisabled = true; + + fireLockout = true; } await UpdateUserPolicy(user, user.Policy, false).ConfigureAwait(false); + + if (fireLockout) + { + if (UserLockedOut != null) + { + EventHelper.FireEventIfNotNull(UserLockedOut, this, new GenericEventArgs(user), _logger); + } + } } } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 5f221a7be..2f593efcd 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -48,8 +48,10 @@ "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", "ButtonConvertMedia": "Convert media", "ButtonOrganize": "Organize", + "LabelPinCode": "Pin code:", "ButtonOk": "Ok", "ButtonCancel": "Cancel", + "ButtonExit": "Exit", "ButtonNew": "New", "HeaderTV": "TV", "HeaderAudio": "Audio", @@ -57,6 +59,12 @@ "HeaderPaths": "Paths", "CategorySync": "Sync", "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", "RegisterWithPayPal": "Register with PayPal", "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", @@ -670,6 +678,7 @@ "NotificationOptionNewLibraryContent": "New content added", "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", "SendNotificationHelp": "By default, notifications are delivered to the dashboard inbox. Browse the plugin catalog to install additional notification options.", "NotificationOptionServerRestartRequired": "Server restart required", "LabelNotificationEnabled": "Enable this notification", @@ -1061,6 +1070,7 @@ "OptionBox": "Box", "OptionBoxRear": "Box rear", "OptionDisc": "Disc", + "OptionIcon": "Icon", "OptionLogo": "Logo", "OptionMenu": "Menu", "OptionScreenshot": "Screenshot", @@ -1105,6 +1115,7 @@ "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", "LabelRunningTimeValue": "Running time: {0}", "LabelIpAddressValue": "Ip address: {0}", + "UserLockedOutWithName": "User {0} has been locked out", "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserCreatedWithName": "User {0} has been created", "UserPasswordChangedWithName": "Password has been changed for user {0}", diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index fdd53b907..7833058f4 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.4\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.5\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs b/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs index d8acbe06c..a33fe2147 100644 --- a/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs +++ b/MediaBrowser.Server.Implementations/Notifications/CoreNotificationTypes.cs @@ -143,6 +143,13 @@ namespace MediaBrowser.Server.Implementations.Notifications Type = NotificationType.CameraImageUploaded.ToString(), DefaultTitle = "A new camera image has been uploaded from {DeviceName}.", Variables = new List{"DeviceName"} + }, + + new NotificationTypeInfo + { + Type = NotificationType.UserLockedOut.ToString(), + DefaultTitle = "{UserName} has been locked out.", + Variables = new List{"UserName"} } }; @@ -185,6 +192,10 @@ namespace MediaBrowser.Server.Implementations.Notifications { note.Category = _localization.GetLocalizedString("CategorySync"); } + else if (note.Type.IndexOf("UserLockedOut", StringComparison.OrdinalIgnoreCase) != -1) + { + note.Category = _localization.GetLocalizedString("CategoryUser"); + } else { note.Category = _localization.GetLocalizedString("CategorySystem"); diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index d02ef9d27..3ffbf5cb9 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -399,7 +399,7 @@ namespace MediaBrowser.Server.Implementations.Session Client = clientType, DeviceId = deviceId, ApplicationVersion = appVersion, - Id = Guid.NewGuid().ToString("N") + Id = key.GetMD5().ToString("N") }; sessionInfo.DeviceName = deviceName; @@ -798,6 +798,19 @@ namespace MediaBrowser.Server.Implementations.Session return session; } + private SessionInfo GetSessionToRemoteControl(string sessionId) + { + // Accept either device id or session id + var session = Sessions.FirstOrDefault(i => string.Equals(i.Id, sessionId)); + + if (session == null) + { + throw new ResourceNotFoundException(string.Format("Session {0} not found.", sessionId)); + } + + return session; + } + public Task SendMessageCommand(string controllingSessionId, string sessionId, MessageCommand command, CancellationToken cancellationToken) { var generalCommand = new GeneralCommand @@ -818,7 +831,7 @@ namespace MediaBrowser.Server.Implementations.Session public Task SendGeneralCommand(string controllingSessionId, string sessionId, GeneralCommand command, CancellationToken cancellationToken) { - var session = GetSession(sessionId); + var session = GetSessionToRemoteControl(sessionId); var controllingSession = GetSession(controllingSessionId); AssertCanControl(session, controllingSession); @@ -828,7 +841,7 @@ namespace MediaBrowser.Server.Implementations.Session public Task SendPlayCommand(string controllingSessionId, string sessionId, PlayRequest command, CancellationToken cancellationToken) { - var session = GetSession(sessionId); + var session = GetSessionToRemoteControl(sessionId); var user = session.UserId.HasValue ? _userManager.GetUserById(session.UserId.Value) : null; @@ -955,7 +968,7 @@ namespace MediaBrowser.Server.Implementations.Session public Task SendPlaystateCommand(string controllingSessionId, string sessionId, PlaystateRequest command, CancellationToken cancellationToken) { - var session = GetSession(sessionId); + var session = GetSessionToRemoteControl(sessionId); var controllingSession = GetSession(controllingSessionId); AssertCanControl(session, controllingSession); diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index c97792fe0..b83bee17d 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index fcda32a33..019f1e977 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -62,7 +62,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.4\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.5\lib\net45\ImageMagickSharp.dll ..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index 5e4e31b86..cf01ed666 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 1e188ceae..8328cf8ab 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -421,6 +421,7 @@ namespace MediaBrowser.WebDashboard.Api "itembynamedetailpage.js", "itemdetailpage.js", "itemlistpage.js", + "kids.js", "librarypathmapping.js", "reports.js", "librarysettings.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 812deabe1..fa6413b8b 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -87,6 +87,9 @@ + + PreserveNewest + PreserveNewest @@ -114,6 +117,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -129,6 +135,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/MediaBrowser.sln b/MediaBrowser.sln index 143a3da41..f73971374 100644 --- a/MediaBrowser.sln +++ b/MediaBrowser.sln @@ -520,4 +520,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection EndGlobal From f3159f3feff6a0ef11edb50cfc456f8c43d26d79 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Mar 2015 13:48:21 -0500 Subject: [PATCH 030/169] update ProcessManager --- MediaBrowser.Api/Library/LibraryService.cs | 3 - .../MediaBrowser.Model.Portable.csproj | 6 ++ .../MediaBrowser.Model.net35.csproj | 6 ++ MediaBrowser.Model/Dlna/PlaybackErrorCode.cs | 9 +++ MediaBrowser.Model/Dlna/PlaybackException.cs | 9 +++ MediaBrowser.Model/Dlna/StreamBuilder.cs | 31 +++++++- MediaBrowser.Model/Dto/MediaSourceInfo.cs | 2 + MediaBrowser.Model/MediaBrowser.Model.csproj | 2 + .../Library/Resolvers/TV/SeriesResolver.cs | 11 ++- ...MediaBrowser.Server.Implementations.csproj | 2 +- .../packages.config | 2 +- .../MediaBrowser.Server.Mono.csproj | 1 - .../Diagnostics/ProcessManager.cs | 7 +- .../MediaBrowser.Server.Startup.Common.csproj | 1 + .../MediaBrowser.ServerApplication.csproj | 3 +- .../Native/WindowsApp.cs | 3 +- .../Native/WindowsProcessManager.cs | 78 ------------------- .../packages.config | 2 +- 18 files changed, 77 insertions(+), 101 deletions(-) create mode 100644 MediaBrowser.Model/Dlna/PlaybackErrorCode.cs create mode 100644 MediaBrowser.Model/Dlna/PlaybackException.cs rename {MediaBrowser.Server.Mono => MediaBrowser.Server.Startup.Common}/Diagnostics/ProcessManager.cs (70%) delete mode 100644 MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index 85cc879f4..4d9afa260 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -1,5 +1,4 @@ using MediaBrowser.Controller.Activity; -using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; @@ -9,11 +8,9 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Session; using MediaBrowser.Model.Activity; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; using MediaBrowser.Model.Querying; using ServiceStack; using System; diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 37057f2d7..62677f818 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -362,6 +362,12 @@ Dlna\MediaFormatProfileResolver.cs + + Dlna\PlaybackErrorCode.cs + + + Dlna\PlaybackException.cs + Dlna\ProfileCondition.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index f38a8f597..4ed8cceae 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -327,6 +327,12 @@ Dlna\MediaFormatProfileResolver.cs + + Dlna\PlaybackErrorCode.cs + + + Dlna\PlaybackException.cs + Dlna\ProfileCondition.cs diff --git a/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs b/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs new file mode 100644 index 000000000..d8d65e91a --- /dev/null +++ b/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs @@ -0,0 +1,9 @@ + +namespace MediaBrowser.Model.Dlna +{ + public enum PlaybackErrorCode + { + NotAllowed = 0, + NoCompatibleStream = 1 + } +} diff --git a/MediaBrowser.Model/Dlna/PlaybackException.cs b/MediaBrowser.Model/Dlna/PlaybackException.cs new file mode 100644 index 000000000..761fa1c90 --- /dev/null +++ b/MediaBrowser.Model/Dlna/PlaybackException.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Model.Dlna +{ + public class PlaybackException : Exception + { + public PlaybackErrorCode ErrorCode { get; set;} + } +} diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index a40e4feb3..559a543f2 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -31,7 +31,13 @@ namespace MediaBrowser.Model.Dlna List streams = new List(); foreach (MediaSourceInfo i in mediaSources) - streams.Add(BuildAudioItem(i, options)); + { + StreamInfo streamInfo = BuildAudioItem(i, options); + if (streamInfo != null) + { + streams.Add(streamInfo); + } + } foreach (StreamInfo stream in streams) { @@ -63,7 +69,13 @@ namespace MediaBrowser.Model.Dlna List streams = new List(); foreach (MediaSourceInfo i in mediaSources) - streams.Add(BuildVideoItem(i, options)); + { + StreamInfo streamInfo = BuildVideoItem(i, options); + if (streamInfo != null) + { + streams.Add(streamInfo); + } + } foreach (StreamInfo stream in streams) { @@ -97,7 +109,10 @@ namespace MediaBrowser.Model.Dlna { return stream; } - return null; + + PlaybackException error = new PlaybackException(); + error.ErrorCode = PlaybackErrorCode.NoCompatibleStream; + throw error; } private StreamInfo BuildAudioItem(MediaSourceInfo item, AudioOptions options) @@ -186,6 +201,11 @@ namespace MediaBrowser.Model.Dlna if (transcodingProfile != null) { + if (!item.SupportsTranscoding) + { + return null; + } + playlistItem.PlayMethod = PlayMethod.Transcode; playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo; playlistItem.EstimateContentLength = transcodingProfile.EstimateContentLength; @@ -290,6 +310,11 @@ namespace MediaBrowser.Model.Dlna if (transcodingProfile != null) { + if (!item.SupportsTranscoding) + { + return null; + } + if (subtitleStream != null) { SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile, options.Context); diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs index 068443238..cdc97b7ea 100644 --- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs +++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs @@ -22,6 +22,7 @@ namespace MediaBrowser.Model.Dto public long? RunTimeTicks { get; set; } public bool ReadAtNativeFramerate { get; set; } + public bool SupportsTranscoding { get; set; } public VideoType? VideoType { get; set; } @@ -45,6 +46,7 @@ namespace MediaBrowser.Model.Dto MediaStreams = new List(); RequiredHttpHeaders = new Dictionary(); PlayableStreamFileNames = new List(); + SupportsTranscoding = true; } public int? DefaultAudioStreamIndex { get; set; } diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9fd632cbd..27b5a53db 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -125,6 +125,8 @@ + + diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs index 7371ca5a9..3551b71b7 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs @@ -1,19 +1,18 @@ -using System.Collections.Generic; -using System.Linq; -using MediaBrowser.Common.IO; +using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; -using System; -using System.IO; using MediaBrowser.Model.Logging; using MediaBrowser.Naming.Common; using MediaBrowser.Naming.IO; using MediaBrowser.Naming.TV; using MediaBrowser.Server.Implementations.Logging; -using EpisodeInfo = MediaBrowser.Controller.Providers.EpisodeInfo; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV { diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 7833058f4..a265ffdf1 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.5\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.6\lib\net45\ImageMagickSharp.dll False diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index b83bee17d..8c530e015 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,6 +1,6 @@  - + diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 8b4783b5c..8f552ee36 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -75,7 +75,6 @@ Properties\SharedVersion.cs - diff --git a/MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs b/MediaBrowser.Server.Startup.Common/Diagnostics/ProcessManager.cs similarity index 70% rename from MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs rename to MediaBrowser.Server.Startup.Common/Diagnostics/ProcessManager.cs index 05d1a4151..d01756d0e 100644 --- a/MediaBrowser.Server.Mono/Diagnostics/ProcessManager.cs +++ b/MediaBrowser.Server.Startup.Common/Diagnostics/ProcessManager.cs @@ -1,5 +1,4 @@ using MediaBrowser.Controller.Diagnostics; -using System; using System.Diagnostics; namespace MediaBrowser.Server.Mono.Diagnostics @@ -8,17 +7,17 @@ namespace MediaBrowser.Server.Mono.Diagnostics { public void SuspendProcess(Process process) { - throw new NotImplementedException(); + process.PriorityClass = ProcessPriorityClass.Idle; } public void ResumeProcess(Process process) { - throw new NotImplementedException(); + process.PriorityClass = ProcessPriorityClass.Normal; } public bool SupportsSuspension { - get { return false; } + get { return true; } } } } diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj index 38e07fde4..625b29d36 100644 --- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj +++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj @@ -56,6 +56,7 @@ + diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 019f1e977..58830360e 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -62,7 +62,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.5\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.6\lib\net45\ImageMagickSharp.dll ..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll @@ -113,7 +113,6 @@ - diff --git a/MediaBrowser.ServerApplication/Native/WindowsApp.cs b/MediaBrowser.ServerApplication/Native/WindowsApp.cs index 8d25b4f72..d518a82d4 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsApp.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsApp.cs @@ -3,6 +3,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Controller.Diagnostics; using MediaBrowser.IsoMounter; using MediaBrowser.Model.Logging; +using MediaBrowser.Server.Mono.Diagnostics; using MediaBrowser.Server.Startup.Common; using MediaBrowser.ServerApplication.Networking; using System.Collections.Generic; @@ -113,7 +114,7 @@ namespace MediaBrowser.ServerApplication.Native public IProcessManager GetProcessManager() { - return new WindowsProcessManager(); + return new ProcessManager(); } } } diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs deleted file mode 100644 index f3497aef5..000000000 --- a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs +++ /dev/null @@ -1,78 +0,0 @@ -using MediaBrowser.Controller.Diagnostics; -using System; -using System.Diagnostics; -using System.Runtime.InteropServices; - -namespace MediaBrowser.ServerApplication.Native -{ - public class WindowsProcessManager : IProcessManager - { - public void SuspendProcess(Process process) - { - process.Suspend(); - } - - public void ResumeProcess(Process process) - { - process.Resume(); - } - - public bool SupportsSuspension - { - get { return true; } - } - } - - public static class ProcessExtension - { - [DllImport("kernel32.dll")] - static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId); - [DllImport("kernel32.dll")] - static extern uint SuspendThread(IntPtr hThread); - [DllImport("kernel32.dll")] - static extern int ResumeThread(IntPtr hThread); - - public static void Suspend(this Process process) - { - foreach (ProcessThread thread in process.Threads) - { - var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); - if (pOpenThread == IntPtr.Zero) - { - break; - } - SuspendThread(pOpenThread); - } - } - public static void Resume(this Process process) - { - foreach (ProcessThread thread in process.Threads) - { - var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); - if (pOpenThread == IntPtr.Zero) - { - break; - } - ResumeThread(pOpenThread); - } - } - public static void Print(this Process process) - { - Console.WriteLine("{0,8} {1}", process.Id, process.ProcessName); - } - } - - [Flags] - public enum ThreadAccess : int - { - TERMINATE = (0x0001), - SUSPEND_RESUME = (0x0002), - GET_CONTEXT = (0x0008), - SET_CONTEXT = (0x0010), - SET_INFORMATION = (0x0020), - QUERY_INFORMATION = (0x0040), - SET_THREAD_TOKEN = (0x0080), - IMPERSONATE = (0x0100), - DIRECT_IMPERSONATION = (0x0200) - } -} diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index cf01ed666..3dd0c908d 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file From 12ba57d4232eb1c38af8a47dbc0fad90ad8941cb Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Mar 2015 14:46:28 -0500 Subject: [PATCH 031/169] adjust process throttle --- .../Playback/Hls/DynamicHlsService.cs | 2 + .../MediaBrowser.ServerApplication.csproj | 1 + .../Native/WindowsApp.cs | 2 +- .../Native/WindowsProcessManager.cs | 78 +++++++++++++++++++ 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 1abaf5274..4f4f5f1cb 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -116,6 +116,7 @@ namespace MediaBrowser.Api.Playback.Hls if (File.Exists(segmentPath)) { + job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); } @@ -124,6 +125,7 @@ namespace MediaBrowser.Api.Playback.Hls { if (File.Exists(segmentPath)) { + job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); } else diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index 58830360e..e01353f80 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -113,6 +113,7 @@ + diff --git a/MediaBrowser.ServerApplication/Native/WindowsApp.cs b/MediaBrowser.ServerApplication/Native/WindowsApp.cs index d518a82d4..74abcb36c 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsApp.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsApp.cs @@ -114,7 +114,7 @@ namespace MediaBrowser.ServerApplication.Native public IProcessManager GetProcessManager() { - return new ProcessManager(); + return new WindowsProcessManager(); } } } diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs new file mode 100644 index 000000000..f3497aef5 --- /dev/null +++ b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs @@ -0,0 +1,78 @@ +using MediaBrowser.Controller.Diagnostics; +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; + +namespace MediaBrowser.ServerApplication.Native +{ + public class WindowsProcessManager : IProcessManager + { + public void SuspendProcess(Process process) + { + process.Suspend(); + } + + public void ResumeProcess(Process process) + { + process.Resume(); + } + + public bool SupportsSuspension + { + get { return true; } + } + } + + public static class ProcessExtension + { + [DllImport("kernel32.dll")] + static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId); + [DllImport("kernel32.dll")] + static extern uint SuspendThread(IntPtr hThread); + [DllImport("kernel32.dll")] + static extern int ResumeThread(IntPtr hThread); + + public static void Suspend(this Process process) + { + foreach (ProcessThread thread in process.Threads) + { + var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); + if (pOpenThread == IntPtr.Zero) + { + break; + } + SuspendThread(pOpenThread); + } + } + public static void Resume(this Process process) + { + foreach (ProcessThread thread in process.Threads) + { + var pOpenThread = OpenThread(ThreadAccess.SUSPEND_RESUME, false, (uint)thread.Id); + if (pOpenThread == IntPtr.Zero) + { + break; + } + ResumeThread(pOpenThread); + } + } + public static void Print(this Process process) + { + Console.WriteLine("{0,8} {1}", process.Id, process.ProcessName); + } + } + + [Flags] + public enum ThreadAccess : int + { + TERMINATE = (0x0001), + SUSPEND_RESUME = (0x0002), + GET_CONTEXT = (0x0008), + SET_CONTEXT = (0x0010), + SET_INFORMATION = (0x0020), + QUERY_INFORMATION = (0x0040), + SET_THREAD_TOKEN = (0x0080), + IMPERSONATE = (0x0100), + DIRECT_IMPERSONATION = (0x0200) + } +} From 2fc0686c308e74654f4f7ef9ea6cf56fb61b5ff5 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 3 Mar 2015 02:03:17 -0500 Subject: [PATCH 032/169] add date content added comparer --- MediaBrowser.Api/Playback/MediaInfoService.cs | 1 + .../Entities/Audio/Audio.cs | 2 +- MediaBrowser.Controller/Entities/Video.cs | 15 ++-- .../Library/IMediaSourceManager.cs | 18 +++++ MediaBrowser.Model/Dlna/PlaybackErrorCode.cs | 3 +- .../Drawing/ImageHeader.cs | 3 +- .../Library/MediaSourceManager.cs | 55 +++++++++++++++ ...MediaBrowser.Server.Implementations.csproj | 1 + .../Photos/BaseDynamicImageProvider.cs | 14 +++- .../Photos/DynamicImageHelpers.cs | 15 +++- .../Session/SessionManager.cs | 6 +- .../Sorting/DateLastMediaAddedComparer.cs | 70 +++++++++++++++++++ .../Sorting/DatePlayedComparer.cs | 1 - 13 files changed, 186 insertions(+), 18 deletions(-) create mode 100644 MediaBrowser.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs index 77178c8cc..330a8777c 100644 --- a/MediaBrowser.Api/Playback/MediaInfoService.cs +++ b/MediaBrowser.Api/Playback/MediaInfoService.cs @@ -13,6 +13,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Api.Playback { [Route("/Items/{Id}/MediaInfo", "GET", Summary = "Gets live playback media info for an item")] + [Route("/Items/{Id}/PlaybackInfo", "GET", Summary = "Gets live playback media info for an item")] public class GetLiveMediaInfo : IReturn { [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 902447999..d868227d9 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -239,7 +239,7 @@ namespace MediaBrowser.Controller.Entities.Audio { Id = i.Id.ToString("N"), Protocol = locationType == LocationType.Remote ? MediaProtocol.Http : MediaProtocol.File, - MediaStreams = MediaSourceManager.GetMediaStreams(new MediaStreamQuery { ItemId = i.Id }).ToList(), + MediaStreams = MediaSourceManager.GetMediaStreams(i.Id).ToList(), Name = i.Name, Path = enablePathSubstituion ? GetMappedPath(i.Path, locationType) : i.Path, RunTimeTicks = i.RunTimeTicks, diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index d4507bc33..a0c3a6cf9 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -420,12 +420,17 @@ namespace MediaBrowser.Controller.Entities return base.GetDeletePaths(); } - public virtual IEnumerable GetMediaStreams() + public IEnumerable GetMediaStreams() { - return MediaSourceManager.GetMediaStreams(new MediaStreamQuery + var mediaSource = GetMediaSources(false) + .FirstOrDefault(); + + if (mediaSource == null) { - ItemId = Id - }); + return new List(); + } + + return mediaSource.MediaStreams; } public virtual MediaStream GetDefaultVideoStream() @@ -474,7 +479,7 @@ namespace MediaBrowser.Controller.Entities private static MediaSourceInfo GetVersionInfo(bool enablePathSubstitution, Video i, MediaSourceType type) { - var mediaStreams = MediaSourceManager.GetMediaStreams(new MediaStreamQuery { ItemId = i.Id }) + var mediaStreams = MediaSourceManager.GetMediaStreams(i.Id) .ToList(); var locationType = i.LocationType; diff --git a/MediaBrowser.Controller/Library/IMediaSourceManager.cs b/MediaBrowser.Controller/Library/IMediaSourceManager.cs index 4378bc85d..5d79f613d 100644 --- a/MediaBrowser.Controller/Library/IMediaSourceManager.cs +++ b/MediaBrowser.Controller/Library/IMediaSourceManager.cs @@ -1,11 +1,29 @@ using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; namespace MediaBrowser.Controller.Library { public interface IMediaSourceManager { + /// + /// Gets the media streams. + /// + /// The item identifier. + /// IEnumerable<MediaStream>. + IEnumerable GetMediaStreams(Guid itemId); + /// + /// Gets the media streams. + /// + /// The media source identifier. + /// IEnumerable<MediaStream>. + IEnumerable GetMediaStreams(string mediaSourceId); + /// + /// Gets the media streams. + /// + /// The query. + /// IEnumerable<MediaStream>. IEnumerable GetMediaStreams(MediaStreamQuery query); } } diff --git a/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs b/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs index d8d65e91a..4ed412985 100644 --- a/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs +++ b/MediaBrowser.Model/Dlna/PlaybackErrorCode.cs @@ -4,6 +4,7 @@ namespace MediaBrowser.Model.Dlna public enum PlaybackErrorCode { NotAllowed = 0, - NoCompatibleStream = 1 + NoCompatibleStream = 1, + RateLimitExceeded = 2 } } diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs b/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs index 81d4a786a..6287d0bb8 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs @@ -62,8 +62,9 @@ namespace MediaBrowser.Server.Implementations.Drawing logger.Info("Failed to read image header for {0}. Doing it the slow way.", path); } - using (var wand = new MagickWand(path)) + using (var wand = new MagickWand()) { + wand.PingImage(path); var img = wand.CurrentImage; return new ImageSize diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index a45757d13..6ce989b02 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.Linq; @@ -47,5 +48,59 @@ namespace MediaBrowser.Server.Implementations.Library { return true; } + + public IEnumerable GetMediaStreams(string mediaSourceId) + { + var list = GetMediaStreams(new MediaStreamQuery + { + ItemId = new Guid(mediaSourceId) + }); + + return GetMediaStreamsForItem(list); + } + + public IEnumerable GetMediaStreams(Guid itemId) + { + var list = GetMediaStreams(new MediaStreamQuery + { + ItemId = itemId + }); + + return GetMediaStreamsForItem(list); + } + + private IEnumerable GetMediaStreamsForItem(IEnumerable streams) + { + var list = streams.ToList(); + + var subtitleStreams = list + .Where(i => i.Type == MediaStreamType.Subtitle) + .ToList(); + + if (subtitleStreams.Count > 0) + { + var videoStream = list.FirstOrDefault(i => i.Type == MediaStreamType.Video); + + // This is abitrary but at some point it becomes too slow to extract subtitles on the fly + // We need to learn more about when this is the case vs. when it isn't + const int maxAllowedBitrateForExternalSubtitleStream = 10000000; + + var videoBitrate = videoStream == null ? maxAllowedBitrateForExternalSubtitleStream : videoStream.BitRate ?? maxAllowedBitrateForExternalSubtitleStream; + + foreach (var subStream in subtitleStreams) + { + var supportsExternalStream = StreamSupportsExternalStream(subStream); + + if (supportsExternalStream && videoBitrate >= maxAllowedBitrateForExternalSubtitleStream) + { + supportsExternalStream = false; + } + + subStream.SupportsExternalStream = supportsExternalStream; + } + } + + return list; + } } } diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index a265ffdf1..54df9a86d 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -278,6 +278,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index e1f98c659..40b85dad1 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -108,7 +108,12 @@ namespace MediaBrowser.Server.Implementations.Photos protected Task GetThumbCollage(List items) { - return DynamicImageHelpers.GetThumbCollage(items.Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)).ToList(), + var files = items + .Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .ToList(); + + return DynamicImageHelpers.GetThumbCollage(files, FileSystem, 1600, 900, @@ -117,7 +122,12 @@ namespace MediaBrowser.Server.Implementations.Photos protected Task GetSquareCollage(List items) { - return DynamicImageHelpers.GetSquareCollage(items.Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)).ToList(), + var files = items + .Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .ToList(); + + return DynamicImageHelpers.GetSquareCollage(files, FileSystem, 800, ApplicationPaths); } diff --git a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs index c2af9cdaf..e7cd2f4d2 100644 --- a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs +++ b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs @@ -4,6 +4,7 @@ using MediaBrowser.Common.IO; using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Photos @@ -15,6 +16,11 @@ namespace MediaBrowser.Server.Implementations.Photos int width, int height, IApplicationPaths appPaths) { + if (files.Any(string.IsNullOrWhiteSpace)) + { + throw new ArgumentException("Empty file found in files list"); + } + if (files.Count < 3) { return await GetSingleImage(files, fileSystem).ConfigureAwait(false); @@ -27,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.Photos int cellHeight = height; var index = 0; - using (var wand = new MagickWand(width, height, "transparent")) + using (var wand = new MagickWand(width, height, new PixelWand(ColorName.None, 1))) { for (var row = 0; row < rows; row++) { @@ -57,6 +63,11 @@ namespace MediaBrowser.Server.Implementations.Photos IFileSystem fileSystem, int size, IApplicationPaths appPaths) { + if (files.Any(string.IsNullOrWhiteSpace)) + { + throw new ArgumentException("Empty file found in files list"); + } + if (files.Count < 4) { return await GetSingleImage(files, fileSystem).ConfigureAwait(false); @@ -68,7 +79,7 @@ namespace MediaBrowser.Server.Implementations.Photos int singleSize = size / 2; var index = 0; - using (var wand = new MagickWand(size, size, "transparent")) + using (var wand = new MagickWand(size, size, new PixelWand(ColorName.None, 1))) { for (var row = 0; row < rows; row++) { diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 3ffbf5cb9..8eef8536a 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -1579,11 +1579,7 @@ namespace MediaBrowser.Server.Implementations.Session if (!string.IsNullOrWhiteSpace(mediaSourceId)) { - info.MediaStreams = _mediaSourceManager.GetMediaStreams(new MediaStreamQuery - { - ItemId = new Guid(mediaSourceId) - - }).ToList(); + info.MediaStreams = _mediaSourceManager.GetMediaStreams(mediaSourceId).ToList(); } return info; diff --git a/MediaBrowser.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs b/MediaBrowser.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs new file mode 100644 index 000000000..68cd44ec9 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sorting/DateLastMediaAddedComparer.cs @@ -0,0 +1,70 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Querying; +using System; +using System.Linq; + +namespace MediaBrowser.Server.Implementations.Sorting +{ + public class DateLastMediaAddedComparer : IUserBaseItemComparer + { + /// + /// Gets or sets the user. + /// + /// The user. + public User User { get; set; } + + /// + /// Gets or sets the user manager. + /// + /// The user manager. + public IUserManager UserManager { get; set; } + + /// + /// Gets or sets the user data repository. + /// + /// The user data repository. + public IUserDataManager UserDataRepository { get; set; } + + /// + /// Compares the specified x. + /// + /// The x. + /// The y. + /// System.Int32. + public int Compare(BaseItem x, BaseItem y) + { + return GetDate(x).CompareTo(GetDate(y)); + } + + /// + /// Gets the date. + /// + /// The x. + /// DateTime. + private DateTime GetDate(BaseItem x) + { + var folder = x as Folder; + + if (folder != null) + { + return folder.GetRecursiveChildren(User, i => !i.IsFolder) + .Select(i => i.DateCreated) + .OrderByDescending(i => i) + .FirstOrDefault(); + } + + return x.DateCreated; + } + + /// + /// Gets the name. + /// + /// The name. + public string Name + { + get { return ItemSortBy.DateLastContentAdded; } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs b/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs index 7605a7a50..c881591be 100644 --- a/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs @@ -1,6 +1,5 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Querying; using System; From 5878190cab93a2e81418d296af69a3ec185f11bf Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 3 Mar 2015 13:48:47 -0500 Subject: [PATCH 033/169] updated nuget --- .../MediaBrowser.Model.Portable.csproj | 6 ++++ .../MediaBrowser.Model.net35.csproj | 6 ++++ MediaBrowser.Model/MediaBrowser.Model.csproj | 2 ++ .../Notifications/NotificationOptions.cs | 6 ++++ MediaBrowser.Model/Sync/LocalItemInfo.cs | 11 +++++++ MediaBrowser.Model/Sync/LocalItemQuery.cs | 19 ++++++++++++ MediaBrowser.Model/Sync/SyncDialogOptions.cs | 29 +++++++++++++++---- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +-- 11 files changed, 79 insertions(+), 12 deletions(-) create mode 100644 MediaBrowser.Model/Sync/LocalItemInfo.cs create mode 100644 MediaBrowser.Model/Sync/LocalItemQuery.cs diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 62677f818..2f5e8a5d7 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -1067,6 +1067,12 @@ Sync\LocalItem.cs + + Sync\LocalItemInfo.cs + + + Sync\LocalItemQuery.cs + Sync\SyncCategory.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index 4ed8cceae..f15e752ff 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -1026,6 +1026,12 @@ Sync\LocalItem.cs + + Sync\LocalItemInfo.cs + + + Sync\LocalItemQuery.cs + Sync\SyncCategory.cs diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 27b5a53db..0bfd0d3fd 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -376,6 +376,8 @@ + + diff --git a/MediaBrowser.Model/Notifications/NotificationOptions.cs b/MediaBrowser.Model/Notifications/NotificationOptions.cs index 7d80f3177..e57955c9e 100644 --- a/MediaBrowser.Model/Notifications/NotificationOptions.cs +++ b/MediaBrowser.Model/Notifications/NotificationOptions.cs @@ -64,6 +64,12 @@ namespace MediaBrowser.Model.Notifications Type = NotificationType.PluginError.ToString(), Enabled = true, SendToUserMode = SendToUserType.Admins + }, + new NotificationOption + { + Type = NotificationType.UserLockedOut.ToString(), + Enabled = true, + SendToUserMode = SendToUserType.Admins } }; } diff --git a/MediaBrowser.Model/Sync/LocalItemInfo.cs b/MediaBrowser.Model/Sync/LocalItemInfo.cs new file mode 100644 index 000000000..f52873b2f --- /dev/null +++ b/MediaBrowser.Model/Sync/LocalItemInfo.cs @@ -0,0 +1,11 @@ + +namespace MediaBrowser.Model.Sync +{ + public class LocalItemInfo + { + public string ServerId { get; set; } + public string Id { get; set; } + public string Name { get; set; } + public string PrimaryImageTag { get; set; } + } +} diff --git a/MediaBrowser.Model/Sync/LocalItemQuery.cs b/MediaBrowser.Model/Sync/LocalItemQuery.cs new file mode 100644 index 000000000..099392908 --- /dev/null +++ b/MediaBrowser.Model/Sync/LocalItemQuery.cs @@ -0,0 +1,19 @@ + +namespace MediaBrowser.Model.Sync +{ + public class LocalItemQuery + { + public string ServerId { get; set; } + public string AlbumArtist { get; set; } + public string AlbumId { get; set; } + public string SeriesId { get; set; } + public string Type { get; set; } + public string MediaType { get; set; } + public string[] ExcludeTypes { get; set; } + + public LocalItemQuery() + { + ExcludeTypes = new string[] { }; + } + } +} diff --git a/MediaBrowser.Model/Sync/SyncDialogOptions.cs b/MediaBrowser.Model/Sync/SyncDialogOptions.cs index cf8b0130b..5c84fb81f 100644 --- a/MediaBrowser.Model/Sync/SyncDialogOptions.cs +++ b/MediaBrowser.Model/Sync/SyncDialogOptions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using MediaBrowser.Model.Dto; namespace MediaBrowser.Model.Sync { @@ -18,18 +19,34 @@ namespace MediaBrowser.Model.Sync /// Gets or sets the quality options. /// /// The quality options. - public List QualityOptions { get; set; } + public List QualityOptions { get; set; } public SyncDialogOptions() { Targets = new List(); Options = new List(); - QualityOptions = new List + QualityOptions = new List { - SyncQuality.Original, - SyncQuality.High, - SyncQuality.Medium, - SyncQuality.Low + new NameValuePair + { + Name = SyncQuality.Original.ToString(), + Value = SyncQuality.Original.ToString() + }, + new NameValuePair + { + Name = SyncQuality.High.ToString(), + Value = SyncQuality.High.ToString() + }, + new NameValuePair + { + Name = SyncQuality.Medium.ToString(), + Value = SyncQuality.Medium.ToString() + }, + new NameValuePair + { + Name = SyncQuality.Low.ToString(), + Value = SyncQuality.Low.ToString() + } }; } } diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 88c6e9f8a..f83ddcbf1 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.579 + 3.0.580 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 facbe5366..675b9aafc 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.579 + 3.0.580 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index dab103446..892b64be9 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.579 + 3.0.580 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 e94d18fb5..537313ec8 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.579 + 3.0.580 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 - + From 0be639e68a52b6633f9d81ea7249dbc10598a5dd Mon Sep 17 00:00:00 2001 From: jluce50 Date: Tue, 3 Mar 2015 14:07:18 -0600 Subject: [PATCH 034/169] Close thread handle after suspend/resume (per MSDN ms684335) --- .../Native/WindowsProcessManager.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs index f3497aef5..413e19239 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs @@ -29,8 +29,11 @@ namespace MediaBrowser.ServerApplication.Native static extern IntPtr OpenThread(ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId); [DllImport("kernel32.dll")] static extern uint SuspendThread(IntPtr hThread); - [DllImport("kernel32.dll")] - static extern int ResumeThread(IntPtr hThread); + [DllImport("kernel32.dll")] + static extern int ResumeThread(IntPtr hThread); + [DllImport("kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool CloseHandle(IntPtr hObject); public static void Suspend(this Process process) { @@ -41,7 +44,8 @@ namespace MediaBrowser.ServerApplication.Native { break; } - SuspendThread(pOpenThread); + SuspendThread(pOpenThread); + CloseHandle(pOpenThread); } } public static void Resume(this Process process) @@ -52,8 +56,9 @@ namespace MediaBrowser.ServerApplication.Native if (pOpenThread == IntPtr.Zero) { break; - } - ResumeThread(pOpenThread); + } + ResumeThread(pOpenThread); + CloseHandle(pOpenThread); } } public static void Print(this Process process) From 09d53e3c95d35d04f6907941ef7f7206e219ff1c Mon Sep 17 00:00:00 2001 From: jluce50 Date: Tue, 3 Mar 2015 14:12:53 -0600 Subject: [PATCH 035/169] Update variable name for consistency --- MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs index 413e19239..a88f5c1e5 100644 --- a/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs +++ b/MediaBrowser.ServerApplication/Native/WindowsProcessManager.cs @@ -33,7 +33,7 @@ namespace MediaBrowser.ServerApplication.Native static extern int ResumeThread(IntPtr hThread); [DllImport("kernel32.dll")] [return: MarshalAs(UnmanagedType.Bool)] - public static extern bool CloseHandle(IntPtr hObject); + public static extern bool CloseHandle(IntPtr hThread); public static void Suspend(this Process process) { From 2b179ecfe2a428977382aab19c5d73d45fa6cec1 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 4 Mar 2015 12:22:55 -0500 Subject: [PATCH 036/169] update image magick sharp --- MediaBrowser.Model/Net/MimeTypes.cs | 7 +------ MediaBrowser.Model/Sync/SyncJobRequest.cs | 2 +- .../MediaBrowser.Server.Implementations.csproj | 9 ++++++++- MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 6 +++++- MediaBrowser.Server.Implementations/packages.config | 2 +- .../MediaBrowser.ServerApplication.csproj | 2 +- MediaBrowser.ServerApplication/packages.config | 2 +- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/MediaBrowser.Model/Net/MimeTypes.cs b/MediaBrowser.Model/Net/MimeTypes.cs index 1f54e48d1..56cfff733 100644 --- a/MediaBrowser.Model/Net/MimeTypes.cs +++ b/MediaBrowser.Model/Net/MimeTypes.cs @@ -265,12 +265,7 @@ namespace MediaBrowser.Model.Net return "application/ttml+xml"; } - if (ext.Equals(".bif", StringComparison.OrdinalIgnoreCase)) - { - return "application/octet-stream"; - } - - throw new ArgumentException("Argument not supported: " + path); + return "application/octet-stream"; } public static string ToExtension(string mimeType) diff --git a/MediaBrowser.Model/Sync/SyncJobRequest.cs b/MediaBrowser.Model/Sync/SyncJobRequest.cs index 7d3016d0e..2af428383 100644 --- a/MediaBrowser.Model/Sync/SyncJobRequest.cs +++ b/MediaBrowser.Model/Sync/SyncJobRequest.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Model.Sync /// Gets or sets the quality. /// /// The quality. - public SyncQuality Quality { get; set; } + public string Quality { get; set; } /// /// Gets or sets the name. /// diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 54df9a86d..359e7a2aa 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -47,7 +47,7 @@ False - ..\packages\ImageMagickSharp.1.0.0.6\lib\net45\ImageMagickSharp.dll + ..\packages\ImageMagickSharp.1.0.0.7\lib\net45\ImageMagickSharp.dll False @@ -512,6 +512,13 @@ + + + + This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + xLw7Le6+7L?D$#SMQ5B)kaXz{5E9TJNsm1yDIH@Xi2BVV`dh4;| zH9Lj~t9DA^*ET-THHsaEK>q-rzE5h?v)Y3a?cfl-TOZIf&imp_vGy z-w{Z`r1Da=Bj@`$K?GF2>Y=eZazvQX6`ZxB@9U1B6-lM2u>dFMh1??$O^NfT-!K+j zIUJ@i7vCB1VNCV5cxD$JMJZxJr>A)SdgS$PguvW^5T=}d+@TF5E<4nq14n8?2c)ga zcgq;q%(r&f=6TmUnvnZbH63w3Q-`h-$|}oqI`4QOu=h&8Xx{Vr<j=&yqh2=IXQRbH$F@5QK`?5bxuiz3nGm4A!paC{+q1B3_ms_r_f6 zV;3Nn{VssFt{-X!x>{IN2~MF>Bt=6UWBu|OQ3?rKC*!lyL7r70;Ce{p*{wP>McGFO@Aj z<~k!OO&-XbpIlNpc5A__)qMN^0Jw`^6NPWX-rsm>waFkybfP{vcz%w`0Bzei=SDQ( zU||pE>xsOo3Iw!ZI~l!kb%{&{AmR&Q^6-F_h(mjQDWApfm^oXmDzYTh75Vs^X0{=S z2^8(6?L~!Q-;?_0ppvBndy3q=6qda-mPMs9zo7Wl5_FSOwE29^=I3o_6*`?O@2By> zvlZEA!!~>Ua>$%Uqo+;LcbPq|ey4anQ|EYch}7u6j_x<}_s2HkA`(4`@`v@rCMvOy zaB&q@9^K&+plUjXw?!=EX@e>ZPZ1u0z*-;*l0+MN?|1s+2B{>(QNm}+^2%FwVbGqv z{`jrEe)l8unBui)fvwL6M^1Fp0PM&u5lVb~^Ff{iW;l*VU%n8Vw0fv$1Zf=aoknN| zLck26j{W5uyfZ+2hJ_SkF`etk%o1NKBS(~-O8Cs#*Mr~Go0?9R=gi#-pXK_grc z57}(}dCQXvR2Zd;6fXYx(^k>cz9l_QOteu0QKn$@&JM-be9oQ3Xa4Yjz%R`}?v+Zs ze?}eB{F+j)&+)~8z=d=*sD4-doCvRguhP1CT!;*q2Bh&~#P^HP>qwPPG5{(#F~f4c zE{YYXdKw9YkmwXZ9fG%m{s#m;Dp8t*Wug;*nZjff03>nQ(#oXvqk}0cj6(^5BU>p6 zP&hGgqBcNfy<%kf?|`~UZf0y2r}^M$wr|guePZQrLY4-$_Ct4$v30QC!E@(x`|FR% zJruCnN!>quMKxX9OsYn${N5p@DWWK>ixAD`jmyd`j6hRh2 zu=~6f5Cjq(C5b$ogf?CPR6rX#I01+jyd91lcf|%xb=u+!;y+wZ;$S&+SST@rc!q<( zW}6V1LZgqdB=Dmah$yJLy>R?6fGONTSw>E$0`kEEpd134^t^6`Ro1*%ieuP0UtnMo ze%>jUH=!A5e}Gr`^>$1ns(9>VHl2&;gpw~VzdCwAD?dU_raR|uKZ zlLm>|KMw#>Gt$sjU197@l<(C?EhLWCd=HsMb19EB-z7ozJAxOK--FqiS2 zf$)3oa&4pg9q!5mxK(Eb0xaVLiatm4#!TUnoszRj7y!`cPV^@pi~`VKGnB#EQi~{p z#18|J*3OQ@6%ef#%fRJop2VA~djfG(Af!9U%}190q{Cf8?OsO#iLnR z?Z4FF6{mztUyKbu$M1v)M_m;3TtfH7{V2i-CDI5ryc%#UC3aFDfX;0w0Vg0*_^#&? z+#m=7meWZ;o@p6qqd{04y7FO@plR7vjHCJDwhK1_v#z2DZQ`O3#%v(s9+~ebSd|ph zxLp81^OHj@HX@x#5Lo~RJ^?ahJ6~b8XCB(|0VYv!yaB99lA;iwD$@OO0yG68O^%_D z{&0?q9mWa-Tm)U=CsH9rRd4ff?&y%f+htk&o$(K-0{pDN`3?)#+=C<)+C}12P-Qjv zL^hksh>R3G3|j^RQ;?w)8#Qyg+JBdjO=?5iRM}fGoI%vrMTd!w+dbo&h+z|*MIQdR zu|$kVVpq5O=7y~35L4q5PVsOYBM~CDpvAk+!91DR+^Of}d9~04}0G)|!D=*t#w}MEOLQ|$lV*KYY5Ege5 zhkK6v{c#WlU<>5vx2wHpE83^4qbt~nCtR!`18Em2+v|8uD2WB^DYSmvsYF6;C3jO^ zK7wI8t0Y}dnZs+gi`ud|?^yZBBq*hu07lWBzkFbj#H-feEd$?qpwjN4!HI0C{Bc7u zS4c1n7D1e8g)4N1w7PEn@e`oRV0vGx_jn8$9-yfv&{OH)fIt~TMxCeu!HUQcr!b{@ z;B+Y}NN5d^Rri}U#;aIr1;l#c0RS$;B9_u|1p!=b*vNPc|kxzTj-9}?C!i!#i}l%gGyGH`{cBO*G&m6XS|@Gj`kO} z5pDc%M}T|*5`nJ%dhdc76xp*q>j~E=Fe2p(;?$Hc`QUUL2^IuFr?OLn43x^UHr7PX zI3NP(3D<6gcRT+8-dA=ll@|gGeqV{i&~70?2SaM7&;9VFYF{A&q=H|^GO7?THc}m= zVR>7JM%hd&h|c~wagz{H(2Ub+d`>(@VQ~cPci}vo4Bb)%S>itKdB6ccgQ;Miqq1)( z3wJf@_7)4urU(J3enky1*MbPTd9MZ=72Lz`h?P=G`sO4dzZ?VAZ>t#%q<6j%`vQ=D z#5l6@R*4DO)TJ>W=agY+=z2wmjSfsAFCR!h3qbtx0z^YJJ4(UU@eNTA)c6<8-~<4G zih&Z!)^_{EEKqtV0Ux6i*}$R!=t%YR+DZA~0YDmHp&5_MyyJO6P=E!b0z3mPCYiv4 zwf*x2#sCTVQrqGx0y^lrG>C)r{qQ^^fcpl>1Bximza=t_gY& z6zM3v3;Ny|C@8Z5kx8oP?+qRLNP!wk_UnQwFczVTtdk!hyeUvnbsAT|K3p9bz_lne z%@5~-QAP+rY;{R};zC-~Ydb0ketCF6DeVz~>F=QAg@Td?NTv<|&I~Pz5Rf~lP`^|0 z!geS`0n#+qzm5c{K`z{ejH*sMG+xrSLXAkooRSZc1k`|3P`{In10G}-A{v%?!iZo( zk%*n$yPObDH#8yuH|!h+qZ7Mi0jkIEfC19p*QZZsj{I;KKtLtzr>eKU_=rHH0}i{S z!#(DaRTMQP0-oRB8%C~RSXnV|@O8veQyBb^8454H@gM>ig@9ocTfory7}D#pccghy z)b}6c1KY@fO$ImA*Y-F_gAs^iX4y`&9!A#bDUa;0+r&_WJ<3*g>fD!sN>rg$OxhE0 zc~VR+q)QN_dDFx<76b=CY^(W-xQn89Ks5Oo{gO&M_yyWj)_n82Pe%l_y&b8+2K&)P z#2EsvR&iLSV!PQ5MCm%?Zp4%*I{~8)fZzZLU@4<07oj94Z#-)>^kpcaHR<1+f&eH~ zwHz65G{>bufFdDad~>MM1Jh_nuKkj62x1nTK^p?Y^PCBT@+iRxLjM3e%xVdkAPI*2 zuO|^80Y(9VgD&t5+vpesiCIg+!fb~~9;5al^}InDkrf(r=@HE=dlq0(*~Fgnu1KiS z+30V^a=Vi&cfbPNov`DjdjcpKfdU6ce|&+Wz@eap$_>0qE_c~~C#)Cwlh;pzpXIzzNI_NtMSuX>aI}_-N)JW_F913)fl(q0xPJct#{|}w(NY2sP}d$2)*V3kINfck*!s18@gmsWlI~z=H)> zyqJW{ZFca4cAleOMjIcg$S{c2$k!3fPmUs>0MUV7&2MeuMgy{V2!GR^OpS#5Vi<|` zP9#P<lA1s*1gfTuIN%bjEJQ{L{(n66&?ZDK)ipAWpFG@U7!57-6l!xOiBG`$ zB5{}jO^B_}NSy3++|dYn8s9iLAfDD2B8wSs5vY>{S3t-tZ2IE}LM3fq(?H9}6-1VS z*;k?a<)oOR6e)l?CSE#GsZ9b<(|zsXMF9r229Tc}a>pX#UV9YZp7xv-4Y87|1yG^! z?eJ9oc-~84FwiYlB&}0m=e3{V@IT8VZ|2 zg5XL=vT-!K1WG9D*--O21k@B!4zxI5#Js9X1)`OwOi-E}D@1Z1Aqf<}6W=-UtrLJz z5qeHq-(vyj1YvnD$pI;<0SIr;-zXD+atb3u)9*iy2y!IEtg0-&XU0*HXs+aHUW23g z;*0SG6rr$d-xawEz%CpN5&7Z+X)5*)#R7_E@FI&q+9C=nI24G0Y1pVL9S`q`)(lCj zT41p_sq9^}luSV1Q`SnC62PQ z&Pw&$4uq-DU)#linL=qBnV#}3a5na@aBc73jsd8_yGA7NGlDG8Mk9bnkA68v5X+|T zsg`krN;ELh=Ek?`ruGI0nli%Xz*%gQV?@ue^_!$!j=N! zfk1D^2UJlIfW8&@_~h&mcR+g}qxj;WRGHX^dZXa-!T`9fmaQ>Xzux%lse|;&2r3JF zJ>dhjsS4rP7XG+UX!{~3q*2Sk0x*PEuxP5G;|?j+0u)jrL Date: Sat, 14 Mar 2015 16:50:11 +0000 Subject: [PATCH 120/169] Updated IApiClient with default CancellationToken --- MediaBrowser.Model/ApiClient/IApiClient.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index 7e07b3f3b..c32155a33 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1318,7 +1318,7 @@ namespace MediaBrowser.Model.ApiClient /// The cancellation token. /// Task. Task SendContextMessageAsync(string itemType, string itemId, string itemName, string context, - CancellationToken cancellationToken); + CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the content upload history. @@ -1336,7 +1336,7 @@ namespace MediaBrowser.Model.ApiClient /// Task. Task UploadFile(Stream stream, LocalFileInfo file, - CancellationToken cancellationToken); + CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the devices options options. @@ -1392,7 +1392,7 @@ namespace MediaBrowser.Model.ApiClient /// The identifier. /// The cancellation token. /// Task<Stream>. - Task GetSyncJobItemFile(string id, CancellationToken cancellationToken); + Task GetSyncJobItemFile(string id, CancellationToken cancellationToken = default(CancellationToken)); /// /// Gets the synchronize job item additional file. From 711f464a6a17744696b3f76f10081d4823430def Mon Sep 17 00:00:00 2001 From: ScottIsAFool Date: Sat, 14 Mar 2015 16:54:47 +0000 Subject: [PATCH 121/169] Updated IConnectionManager with default CancellationToken --- MediaBrowser.Model/ApiClient/IConnectionManager.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index 341df2728..f3ad7c77b 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -66,7 +66,7 @@ namespace MediaBrowser.Model.ApiClient /// /// The cancellation token. /// Task<ConnectionResult>. - Task Connect(CancellationToken cancellationToken); + Task Connect(CancellationToken cancellationToken = default(CancellationToken)); /// /// Connects the specified API client. @@ -74,7 +74,7 @@ namespace MediaBrowser.Model.ApiClient /// The API client. /// The cancellation token. /// Task<ConnectionResult>. - Task Connect(IApiClient apiClient, CancellationToken cancellationToken); + Task Connect(IApiClient apiClient, CancellationToken cancellationToken = default(CancellationToken)); /// /// Connects the specified server. @@ -82,7 +82,7 @@ namespace MediaBrowser.Model.ApiClient /// The server. /// The cancellation token. /// Task<ConnectionResult>. - Task Connect(ServerInfo server, CancellationToken cancellationToken); + Task Connect(ServerInfo server, CancellationToken cancellationToken = default(CancellationToken)); /// /// Connects the specified server. @@ -91,7 +91,7 @@ namespace MediaBrowser.Model.ApiClient /// The options. /// The cancellation token. /// Task<ConnectionResult>. - Task Connect(ServerInfo server, ConnectionOptions options, CancellationToken cancellationToken); + Task Connect(ServerInfo server, ConnectionOptions options, CancellationToken cancellationToken = default(CancellationToken)); /// /// Connects the specified server. @@ -99,7 +99,7 @@ namespace MediaBrowser.Model.ApiClient /// The address. /// The cancellation token. /// Task<ConnectionResult>. - Task Connect(string address, CancellationToken cancellationToken); + Task Connect(string address, CancellationToken cancellationToken = default(CancellationToken)); /// /// Logouts this instance. @@ -142,7 +142,7 @@ namespace MediaBrowser.Model.ApiClient /// Gets the available servers. /// /// The cancellation token. - Task> GetAvailableServers(CancellationToken cancellationToken); + Task> GetAvailableServers(CancellationToken cancellationToken = default(CancellationToken)); /// /// Authenticates an offline user with their password From 7a296ccbc127ecbc47e55c0396353dde72f8ae83 Mon Sep 17 00:00:00 2001 From: ScottIsAFool Date: Sat, 14 Mar 2015 17:01:23 +0000 Subject: [PATCH 122/169] More default CancellationTokens --- MediaBrowser.Model/ApiClient/IDevice.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Model/ApiClient/IDevice.cs b/MediaBrowser.Model/ApiClient/IDevice.cs index 84927c20a..7b67122fb 100644 --- a/MediaBrowser.Model/ApiClient/IDevice.cs +++ b/MediaBrowser.Model/ApiClient/IDevice.cs @@ -39,6 +39,6 @@ namespace MediaBrowser.Model.ApiClient /// The API client. /// The cancellation token. /// Task. - Task UploadFile(LocalFileInfo file, IApiClient apiClient, CancellationToken cancellationToken); + Task UploadFile(LocalFileInfo file, IApiClient apiClient, CancellationToken cancellationToken = default(CancellationToken)); } } From cf0456360b3dda956f72fe872be4d51255d76f0f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 13:02:51 -0400 Subject: [PATCH 123/169] rework dynamic image provider --- .../Library/LibraryManager.cs | 12 +-- .../Photos/BaseDynamicImageProvider.cs | 81 ++++++++++++++++--- .../UserViews/DynamicImageProvider.cs | 6 +- 3 files changed, 75 insertions(+), 24 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index c47de7cb8..d7ffcf79a 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1673,13 +1673,13 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("27_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); + var id = GetNewItemId("30_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); var item = GetItemById(id) as UserView; - var refresh = false; + var isNew = false; if (item == null) { @@ -1703,17 +1703,13 @@ namespace MediaBrowser.Server.Implementations.Library await CreateItem(item, cancellationToken).ConfigureAwait(false); - refresh = true; + isNew = true; } - if (!refresh) - { - refresh = (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 24; - } + var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 24; if (refresh) { - await item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None).ConfigureAwait(false); _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions()); } diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index 9cae36283..b3b79ae7e 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -2,6 +2,7 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; @@ -15,7 +16,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.Photos { - public abstract class BaseDynamicImageProvider : IHasChangeMonitor, IForcedProvider, IDynamicImageProvider, IHasOrder + public abstract class BaseDynamicImageProvider : IHasChangeMonitor, IForcedProvider, ICustomMetadataProvider, IHasOrder where T : IHasMetadata { protected IFileSystem FileSystem { get; private set; } @@ -31,7 +32,7 @@ namespace MediaBrowser.Server.Implementations.Photos public virtual bool Supports(IHasImages item) { - return item is T; + return true; } public virtual IEnumerable GetSupportedImages(IHasImages item) @@ -43,12 +44,75 @@ namespace MediaBrowser.Server.Implementations.Photos }; } + public async Task FetchAsync(T item, MetadataRefreshOptions options, CancellationToken cancellationToken) + { + if (!Supports(item)) + { + return ItemUpdateType.None; + } + + var primaryResult = await FetchAsync(item, ImageType.Primary, options, cancellationToken).ConfigureAwait(false); + var thumbResult = await FetchAsync(item, ImageType.Thumb, options, cancellationToken).ConfigureAwait(false); + + return primaryResult | thumbResult; + } + + protected async Task FetchAsync(IHasImages item, ImageType imageType, MetadataRefreshOptions options, CancellationToken cancellationToken) + { + var items = await GetItemsWithImages(item).ConfigureAwait(false); + var cacheKey = GetConfigurationCacheKey(items); + + if (!HasChanged(item, imageType, cacheKey)) + { + return ItemUpdateType.None; + } + + return await FetchToFileInternal(item, items, imageType, cacheKey, cancellationToken).ConfigureAwait(false); + } + + protected async Task FetchToFileInternal(IHasImages item, + List itemsWithImages, + ImageType imageType, + string cacheKey, + CancellationToken cancellationToken) + { + var stream = await CreateImageAsync(item, itemsWithImages, imageType, 0).ConfigureAwait(false); + + if (stream == null) + { + return ItemUpdateType.None; + } + + if (stream is MemoryStream) + { + using (stream) + { + stream.Position = 0; + + await ProviderManager.SaveImage(item, stream, "image/png", imageType, null, cacheKey, cancellationToken).ConfigureAwait(false); + } + } + else + { + using (var ms = new MemoryStream()) + { + await stream.CopyToAsync(ms).ConfigureAwait(false); + + ms.Position = 0; + + await ProviderManager.SaveImage(item, ms, "image/png", imageType, null, cacheKey, cancellationToken).ConfigureAwait(false); + } + } + + return ItemUpdateType.ImageUpdate; + } + public async Task GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken) { var items = await GetItemsWithImages(item).ConfigureAwait(false); var cacheKey = GetConfigurationCacheKey(items); - var result = await FetchAsyncInternal(item, items, type, cacheKey, cancellationToken).ConfigureAwait(false); + var result = await CreateImageAsync(item, items, type, 0).ConfigureAwait(false); return new DynamicImageResponse { @@ -67,15 +131,6 @@ namespace MediaBrowser.Server.Implementations.Photos return (Version + "_" + string.Join(",", items.Select(i => i.Id.ToString("N")).ToArray())).GetMD5().ToString("N"); } - protected Task FetchAsyncInternal(IHasImages item, - List itemsWithImages, - ImageType imageType, - string cacheKey, - CancellationToken cancellationToken) - { - return CreateImageAsync(item, itemsWithImages, imageType, 0); - } - protected Task GetThumbCollage(List items) { var files = items @@ -163,7 +218,7 @@ namespace MediaBrowser.Server.Implementations.Photos return GetFinalItems(items, 4); } - protected List GetFinalItems(List items, int limit) + protected virtual List GetFinalItems(List items, int limit) { // Rotate the images no more than once per week var random = new Random(GetWeekOfYear()).Next(); diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index 6cb7a0339..c47a116ca 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -1,5 +1,4 @@ -using System.Globalization; -using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; @@ -11,13 +10,14 @@ using MediaBrowser.Server.Implementations.Photos; using MoreLinq; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.UserViews { - public class DynamicImageProvider : BaseDynamicImageProvider + public class DynamicImageProvider : BaseDynamicImageProvider, IPreRefreshProvider { private readonly IUserManager _userManager; private readonly ILibraryManager _libraryManager; From b7525a733c8f41c7e960db46c6e17b83cfb3a38e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 13:28:32 -0400 Subject: [PATCH 124/169] updated nuget --- MediaBrowser.Model/ApiClient/IConnectionManager.cs | 7 +++++++ Nuget/MediaBrowser.Common.Internal.nuspec | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index f3ad7c77b..873ad083c 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -1,6 +1,7 @@ using MediaBrowser.Model.Connect; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Events; +using MediaBrowser.Model.Session; using System; using System.Collections.Generic; using System.Threading; @@ -47,6 +48,12 @@ namespace MediaBrowser.Model.ApiClient /// true if [save local credentials]; otherwise, false. bool SaveLocalCredentials { get; set; } + /// + /// Gets the client capabilities. + /// + /// The client capabilities. + ClientCapabilities ClientCapabilities { get; } + /// /// Gets the API client. /// diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 429975c90..ab7a37e40 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.588 + 3.0.589 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 c43cec3a9..9f4d639ac 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.588 + 3.0.589 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 0683c07db..2b224625e 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.588 + 3.0.589 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 56fc086a8..27ec6b31a 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.588 + 3.0.589 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 - + From 6acfee7df67b95b919c6d3aedf3fc16b25edf974 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 14:54:53 -0400 Subject: [PATCH 125/169] update StreamBuilder --- MediaBrowser.Model/Dlna/StreamBuilder.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 07c7ecd8b..b798da748 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -184,6 +184,12 @@ namespace MediaBrowser.Model.Dlna { playlistItem.PlayMethod = PlayMethod.DirectPlay; } + else if (item.Protocol == MediaProtocol.Http && + directPlayMethods.Contains(PlayMethod.DirectPlay) && + _localPlayer.CanAccessUrl(item.Path, item.RequiredHttpHeaders.Count > 0)) + { + playlistItem.PlayMethod = PlayMethod.DirectPlay; + } else if (directPlayMethods.Contains(PlayMethod.DirectStream)) { playlistItem.PlayMethod = PlayMethod.DirectStream; @@ -578,9 +584,12 @@ namespace MediaBrowser.Model.Dlna } } - else if (mediaSource.Protocol == MediaProtocol.File && _localPlayer.CanAccessFile(mediaSource.Path)) + else if (mediaSource.Protocol == MediaProtocol.File) { - return PlayMethod.DirectPlay; + if (_localPlayer.CanAccessFile(mediaSource.Path)) + { + return PlayMethod.DirectPlay; + } } return PlayMethod.DirectStream; From b1d2841583079cdfbb9c3c3c63a1f0a15d5259d3 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 16:00:32 -0400 Subject: [PATCH 126/169] add movie metadata support to live tv --- MediaBrowser.Api/LiveTv/LiveTvService.cs | 33 ++++++- MediaBrowser.Controller/Entities/BaseItem.cs | 5 ++ .../Entities/IHasImages.cs | 6 ++ .../LiveTv/LiveTvProgram.cs | 21 ++++- MediaBrowser.Controller/LiveTv/ProgramInfo.cs | 6 ++ .../MediaBrowser.Controller.csproj | 1 + .../Providers/LiveTvProgramLookupInfo.cs | 9 ++ MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 + MediaBrowser.Model/LiveTv/ProgramQuery.cs | 71 +++++++++++++-- .../LiveTv/RecommendedProgramQuery.cs | 6 ++ .../LiveTv/ProgramMetadataService.cs | 11 ++- .../Manager/ProviderManager.cs | 8 +- .../MediaBrowser.Providers.csproj | 1 + .../Movies/GenericMovieDbInfo.cs | 2 +- .../Movies/LiveTvMovieDbProvider.cs | 43 +++++++++ .../Movies/MovieDbImageProvider.cs | 8 ++ .../Movies/MovieDbProvider.cs | 2 +- .../Omdb/OmdbImageProvider.cs | 8 ++ .../LiveTv/LiveTvManager.cs | 90 +++++++++++-------- .../Localization/Server/server.json | 4 +- .../ApplicationHost.cs | 2 +- 21 files changed, 279 insertions(+), 59 deletions(-) create mode 100644 MediaBrowser.Controller/Providers/LiveTvProgramLookupInfo.cs create mode 100644 MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index f3fd8f42a..24c91e172 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -182,6 +182,24 @@ namespace MediaBrowser.Api.LiveTv [ApiMember(Name = "MaxEndDate", Description = "Optional. The maximum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")] public string MaxEndDate { get; set; } + + [ApiMember(Name = "IsMovie", Description = "Optional filter for movies.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET,POST")] + public bool? IsMovie { get; set; } + + [ApiMember(Name = "StartIndex", Description = "Optional. The record index to start at. All items with a lower index will be dropped from the results.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? StartIndex { get; set; } + + [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] + public int? Limit { get; set; } + + [ApiMember(Name = "SortBy", Description = "Optional. Specify one or more sort orders, comma delimeted. Options: Name, StartDate", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + public string SortBy { get; set; } + + [ApiMember(Name = "SortOrder", Description = "Sort Order - Ascending,Descending", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public SortOrder? SortOrder { get; set; } + + [ApiMember(Name = "Genres", Description = "The genres to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")] + public string Genres { get; set; } } [Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")] @@ -199,6 +217,9 @@ namespace MediaBrowser.Api.LiveTv [ApiMember(Name = "HasAired", Description = "Optional. Filter by programs that have completed airing, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] public bool? HasAired { get; set; } + + [ApiMember(Name = "IsMovie", Description = "Optional filter for movies.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] + public bool? IsMovie { get; set; } } [Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")] @@ -371,7 +392,7 @@ namespace MediaBrowser.Api.LiveTv { var query = new ProgramQuery { - ChannelIdList = (request.ChannelIds ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToArray(), + ChannelIds = (request.ChannelIds ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToArray(), UserId = request.UserId, HasAired = request.HasAired }; @@ -396,6 +417,13 @@ namespace MediaBrowser.Api.LiveTv query.MaxEndDate = DateTime.Parse(request.MaxEndDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); } + query.StartIndex = request.StartIndex; + query.Limit = request.Limit; + query.SortBy = (request.SortBy ?? String.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + query.SortOrder = request.SortOrder; + query.IsMovie = request.IsMovie; + query.Genres = (request.Genres ?? String.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + var result = await _liveTvManager.GetPrograms(query, CancellationToken.None).ConfigureAwait(false); return ToOptimizedSerializedResultUsingCache(result); @@ -408,7 +436,8 @@ namespace MediaBrowser.Api.LiveTv UserId = request.UserId, IsAiring = request.IsAiring, Limit = request.Limit, - HasAired = request.HasAired + HasAired = request.HasAired, + IsMovie = request.IsMovie }; var result = await _liveTvManager.GetRecommendedPrograms(query, CancellationToken.None).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index c8f618a03..dd6189bc5 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -239,6 +239,11 @@ namespace MediaBrowser.Controller.Entities get { return this.GetImagePath(ImageType.Primary); } } + public virtual bool IsInternetMetadataEnabled() + { + return ConfigurationManager.Configuration.EnableInternetProviders; + } + public virtual bool CanDelete() { var locationType = LocationType; diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index 5aafc8eb3..00a42271b 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -184,6 +184,12 @@ namespace MediaBrowser.Controller.Entities /// /// true if [always scan internal metadata path]; otherwise, false. bool AlwaysScanInternalMetadataPath { get; } + + /// + /// Determines whether [is internet metadata enabled]. + /// + /// true if [is internet metadata enabled]; otherwise, false. + bool IsInternetMetadataEnabled(); } public static class HasImagesExtensions diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs index 2f9673db2..0b07d8b6d 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs @@ -1,5 +1,6 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Users; @@ -11,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Controller.LiveTv { - public class LiveTvProgram : BaseItem, ILiveTvItem + public class LiveTvProgram : BaseItem, ILiveTvItem, IHasLookupInfo { /// /// Gets the user data key. @@ -220,5 +221,23 @@ namespace MediaBrowser.Controller.LiveTv { return false; } + + public override bool IsInternetMetadataEnabled() + { + if (IsMovie) + { + var options = (LiveTvOptions)ConfigurationManager.GetConfiguration("livetv"); + return options.EnableMovieProviders; + } + + return false; + } + + public LiveTvProgramLookupInfo GetLookupInfo() + { + var info = GetItemLookupInfo(); + info.IsMovie = IsMovie; + return info; + } } } diff --git a/MediaBrowser.Controller/LiveTv/ProgramInfo.cs b/MediaBrowser.Controller/LiveTv/ProgramInfo.cs index 4d7e5ee63..36f082b02 100644 --- a/MediaBrowser.Controller/LiveTv/ProgramInfo.cs +++ b/MediaBrowser.Controller/LiveTv/ProgramInfo.cs @@ -145,6 +145,12 @@ namespace MediaBrowser.Controller.LiveTv /// true if this instance is premiere; otherwise, false. public bool IsPremiere { get; set; } + /// + /// Gets or sets the production year. + /// + /// The production year. + public int? ProductionYear { get; set; } + public ProgramInfo() { Genres = new List(); diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 678d7841c..06f18729b 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -293,6 +293,7 @@ + diff --git a/MediaBrowser.Controller/Providers/LiveTvProgramLookupInfo.cs b/MediaBrowser.Controller/Providers/LiveTvProgramLookupInfo.cs new file mode 100644 index 000000000..4e2c11c22 --- /dev/null +++ b/MediaBrowser.Controller/Providers/LiveTvProgramLookupInfo.cs @@ -0,0 +1,9 @@ +using System; + +namespace MediaBrowser.Controller.Providers +{ + public class LiveTvProgramLookupInfo : ItemLookupInfo + { + public Boolean IsMovie { get; set; } + } +} diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index 32a9c8d12..0cd5eda0c 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -3,5 +3,6 @@ public class LiveTvOptions { public int? GuideDays { get; set; } + public bool EnableMovieProviders { get; set; } } } \ No newline at end of file diff --git a/MediaBrowser.Model/LiveTv/ProgramQuery.cs b/MediaBrowser.Model/LiveTv/ProgramQuery.cs index 2d15a4c4b..bbd396c33 100644 --- a/MediaBrowser.Model/LiveTv/ProgramQuery.cs +++ b/MediaBrowser.Model/LiveTv/ProgramQuery.cs @@ -1,4 +1,5 @@ -using System; +using MediaBrowser.Model.Entities; +using System; namespace MediaBrowser.Model.LiveTv { @@ -7,11 +8,18 @@ namespace MediaBrowser.Model.LiveTv /// public class ProgramQuery { + public ProgramQuery() + { + ChannelIds = new string[] { }; + SortBy = new string[] { }; + Genres = new string[] { }; + } + /// - /// Gets or sets the channel identifier. + /// Gets or sets the channel ids. /// - /// The channel identifier. - public string[] ChannelIdList { get; set; } + /// The channel ids. + public string[] ChannelIds { get; set; } /// /// Gets or sets the user identifier. @@ -19,19 +27,64 @@ namespace MediaBrowser.Model.LiveTv /// The user identifier. public string UserId { get; set; } + /// + /// The earliest date for which a program starts to return + /// public DateTime? MinStartDate { get; set; } + /// + /// The latest date for which a program starts to return + /// public DateTime? MaxStartDate { get; set; } + /// + /// The earliest date for which a program ends to return + /// public DateTime? MinEndDate { get; set; } + /// + /// The latest date for which a program ends to return + /// public DateTime? MaxEndDate { get; set; } + /// + /// Used to specific whether to return movies or not + /// + /// If set to null, all programs will be returned + public bool? IsMovie { get; set; } + + /// + /// Skips over a given number of items within the results. Use for paging. + /// + public int? StartIndex { get; set; } + + /// + /// Gets or sets a value indicating whether this instance has aired. + /// + /// null if [has aired] contains no value, true if [has aired]; otherwise, false. public bool? HasAired { get; set; } - public ProgramQuery() - { - ChannelIdList = new string[] { }; - } + /// + /// The maximum number of items to return + /// + public int? Limit { get; set; } + + /// + /// What to sort the results by + /// + /// The sort by. + public string[] SortBy { get; set; } + + /// + /// The sort order to return results with + /// + /// The sort order. + public SortOrder? SortOrder { get; set; } + + /// + /// Limit results to items containing specific genres + /// + /// The genres. + public string[] Genres { get; set; } } -} +} \ No newline at end of file diff --git a/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs index 907902123..9ba8e0e5f 100644 --- a/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs +++ b/MediaBrowser.Model/LiveTv/RecommendedProgramQuery.cs @@ -25,5 +25,11 @@ /// /// The limit. public int? Limit { get; set; } + + /// + /// Gets or sets a value indicating whether this instance is movie. + /// + /// null if [is movie] contains no value, true if [is movie]; otherwise, false. + public bool? IsMovie { get; set; } } } \ No newline at end of file diff --git a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs index 5a7ae7594..f17389615 100644 --- a/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs +++ b/MediaBrowser.Providers/LiveTv/ProgramMetadataService.cs @@ -7,14 +7,16 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; namespace MediaBrowser.Providers.LiveTv { - public class ProgramMetadataService : MetadataService + public class ProgramMetadataService : MetadataService { - public ProgramMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) + public ProgramMetadataService( + IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, + IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager) + : base( + serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager) { } @@ -25,6 +27,7 @@ namespace MediaBrowser.Providers.LiveTv /// The target. /// The locked fields. /// if set to true [replace data]. + /// protected override void MergeData(LiveTvProgram source, LiveTvProgram target, List lockedFields, bool replaceData, bool mergeMetadataSettings) { ProviderUtils.MergeBaseItemData(source, target, lockedFields, replaceData, mergeMetadataSettings); diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 0c1372e41..c9ae47ad0 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -312,7 +312,7 @@ namespace MediaBrowser.Providers.Manager if (provider is IRemoteMetadataProvider) { - if (!ConfigurationManager.Configuration.EnableInternetProviders) + if (!item.IsInternetMetadataEnabled()) { return false; } @@ -360,7 +360,7 @@ namespace MediaBrowser.Providers.Manager if (provider is IRemoteImageProvider) { - if (!ConfigurationManager.Configuration.EnableInternetProviders) + if (!item.IsInternetMetadataEnabled()) { return false; } @@ -515,7 +515,7 @@ namespace MediaBrowser.Providers.Manager Type = MetadataPluginType.LocalMetadataProvider })); - if (ConfigurationManager.Configuration.EnableInternetProviders) + if (item.IsInternetMetadataEnabled()) { // Fetchers list.AddRange(providers.Where(i => (i is IRemoteMetadataProvider)).Select(i => new MetadataPlugin @@ -547,7 +547,7 @@ namespace MediaBrowser.Providers.Manager Type = MetadataPluginType.LocalImageProvider })); - var enableInternet = ConfigurationManager.Configuration.EnableInternetProviders; + var enableInternet = item.IsInternetMetadataEnabled(); // Fetchers list.AddRange(imageProviders.Where(i => i is IDynamicImageProvider || (enableInternet && i is IRemoteImageProvider)).Select(i => new MetadataPlugin diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 2df8f8e3c..3b5103f20 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -108,6 +108,7 @@ + diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index 68cbf85e9..c23ed3786 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -17,7 +17,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { public class GenericMovieDbInfo - where T : Video, new() + where T : BaseItem, new() { private readonly ILogger _logger; private readonly IJsonSerializer _jsonSerializer; diff --git a/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs b/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs new file mode 100644 index 000000000..326450ad4 --- /dev/null +++ b/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs @@ -0,0 +1,43 @@ +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Providers; +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.Movies +{ + public class LiveTvMovieDbProvider : IRemoteMetadataProvider, IDisposable, IHasOrder + { + public Task> GetSearchResults(LiveTvProgramLookupInfo searchInfo, CancellationToken cancellationToken) + { + return MovieDbProvider.Current.GetMovieSearchResults(searchInfo, cancellationToken); + } + + public Task> GetMetadata(LiveTvProgramLookupInfo info, CancellationToken cancellationToken) + { + return MovieDbProvider.Current.GetItemMetadata(info, cancellationToken); + } + + public string Name + { + get { return "LiveTvMovieDbProvider"; } + } + + public Task GetImageResponse(string url, CancellationToken cancellationToken) + { + return MovieDbProvider.Current.GetImageResponse(url, cancellationToken); + } + + public void Dispose() + { + } + + public int Order + { + get { return 1; } + } + } +} \ No newline at end of file diff --git a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs index f5d5a6fb1..19b4939dd 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Dto; @@ -47,6 +48,13 @@ namespace MediaBrowser.Providers.Movies return true; } + // Supports images for tv movies + var tvProgram = item as LiveTvProgram; + if (tvProgram != null && tvProgram.IsMovie) + { + return true; + } + // Don't support local trailers return item is Movie || item is MusicVideo; } diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index b8f9a7fa2..48b7140f8 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -113,7 +113,7 @@ namespace MediaBrowser.Providers.Movies } public Task> GetItemMetadata(ItemLookupInfo id, CancellationToken cancellationToken) - where T : Video, new() + where T : BaseItem, new() { var movieDb = new GenericMovieDbInfo(_logger, _jsonSerializer, _libraryManager); diff --git a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs index 758d0a6bd..7f804f9df 100644 --- a/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbImageProvider.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; @@ -108,6 +109,13 @@ namespace MediaBrowser.Providers.Omdb } } + // Supports images for tv movies + var tvProgram = item as LiveTvProgram; + if (tvProgram != null && tvProgram.IsMovie) + { + return true; + } + return item is Movie; } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 33f1a4dac..acff25e96 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -45,6 +45,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly ILibraryManager _libraryManager; private readonly ITaskManager _taskManager; private readonly IJsonSerializer _jsonSerializer; + private readonly IProviderManager _providerManager; private readonly IDtoService _dtoService; private readonly ILocalizationManager _localization; @@ -62,7 +63,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(1, 1); - public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer) + public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer, IProviderManager providerManager) { _config = config; _fileSystem = fileSystem; @@ -73,6 +74,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv _taskManager = taskManager; _localization = localization; _jsonSerializer = jsonSerializer; + _providerManager = providerManager; _dtoService = dtoService; _userDataManager = userDataManager; @@ -237,7 +239,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv foreach (var channel in internalResult.Items) { - var currentProgram = await GetCurrentProgram(channel.ExternalId, cancellationToken).ConfigureAwait(false); + var currentProgram = GetCurrentProgram(channel.ExternalId); returnList.Add(_tvDtoService.GetChannelInfoDto(channel, currentProgram, user)); } @@ -261,7 +263,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv return _libraryManager.GetItemById(id) as LiveTvChannel; } - public async Task GetInternalProgram(string id, CancellationToken cancellationToken) + private LiveTvProgram GetInternalProgram(string id) { var guid = new Guid(id); @@ -271,37 +273,26 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (obj != null) { - await RefreshIfNeeded(obj, cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(obj); } return obj; } - private Task RefreshIfNeeded(IEnumerable programs, CancellationToken cancellationToken) - { - var list = programs.ToList(); - - Task.Run(async () => - { - foreach (var program in list) - { - await RefreshIfNeeded(program, CancellationToken.None).ConfigureAwait(false); - } - - }, cancellationToken); - - return Task.FromResult(true); - } - - private readonly Task _cachedTask = Task.FromResult(true); - private Task RefreshIfNeeded(LiveTvProgram program, CancellationToken cancellationToken) + private void RefreshIfNeeded(LiveTvProgram program) { if (!_refreshedPrograms.ContainsKey(program.Id)) { _refreshedPrograms.TryAdd(program.Id, true); - return program.RefreshMetadata(cancellationToken); + _providerManager.QueueRefresh(program.Id, new MetadataRefreshOptions()); } + } - return _cachedTask; + private void RefreshIfNeeded(IEnumerable programs) + { + foreach (var program in programs) + { + RefreshIfNeeded(program); + } } public async Task GetInternalRecording(string id, CancellationToken cancellationToken) @@ -528,6 +519,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv item.ProviderImageUrl = info.ImageUrl; item.RunTimeTicks = (info.EndDate - info.StartDate).Ticks; item.StartDate = info.StartDate; + item.ProductionYear = info.ProductionYear; return item; } @@ -607,7 +599,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task GetProgram(string id, CancellationToken cancellationToken, User user = null) { - var program = await GetInternalProgram(id, cancellationToken).ConfigureAwait(false); + var program = GetInternalProgram(id); var channel = GetChannel(program); @@ -656,9 +648,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(i => i.HasAired == val); } - if (query.ChannelIdList.Length > 0) + if (query.ChannelIds.Length > 0) { - var guids = query.ChannelIdList.Select(i => new Guid(i)).ToList(); + var guids = query.ChannelIds.Select(i => new Guid(i)).ToList(); programs = programs.Where(i => { @@ -672,7 +664,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv } var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - if (user != null) { // Avoid implicitly captured closure @@ -680,6 +671,30 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(i => i.IsVisible(currentUser)); } + // Apply genre filter + if (query.Genres.Length > 0) + { + programs = programs.Where(p => p.Genres.Any(g => query.Genres.Contains(g, StringComparer.OrdinalIgnoreCase))); + } + + if (query.IsMovie.HasValue) + { + programs = programs.Where(p => p.IsMovie == query.IsMovie); + } + + programs = _libraryManager.Sort(programs, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending) + .Cast(); + + if (query.StartIndex.HasValue) + { + programs = programs.Skip(query.StartIndex.Value); + } + + if (query.Limit.HasValue) + { + programs = programs.Take(query.Limit.Value); + } + var programList = programs.ToList(); var returnArray = programList @@ -691,7 +706,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv }) .ToArray(); - await RefreshIfNeeded(programList, cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(programList); await AddRecordingInfo(returnArray, cancellationToken).ConfigureAwait(false); @@ -726,6 +741,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(i => i.HasAired == val); } + if (query.IsMovie.HasValue) + { + programs = programs.Where(p => p.IsMovie == query.IsMovie.Value); + } + var serviceName = ActiveService.Name; var programList = programs.ToList(); @@ -747,7 +767,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv programList = programs.ToList(); - await RefreshIfNeeded(programList, cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(programList); var returnArray = programList.ToArray(); @@ -1233,7 +1253,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var program = string.IsNullOrEmpty(i.ProgramId) ? null : - await GetInternalProgram(_tvDtoService.GetInternalProgramId(service.Name, i.ProgramId).ToString("N"), cancellationToken).ConfigureAwait(false); + GetInternalProgram(_tvDtoService.GetInternalProgramId(service.Name, i.ProgramId).ToString("N")); var channel = string.IsNullOrEmpty(i.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.ChannelId)); @@ -1366,14 +1386,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var channel = GetInternalChannel(id); - var currentProgram = await GetCurrentProgram(channel.ExternalId, cancellationToken).ConfigureAwait(false); + var currentProgram = GetCurrentProgram(channel.ExternalId); var dto = _tvDtoService.GetChannelInfoDto(channel, currentProgram, user); return dto; } - private async Task GetCurrentProgram(string externalChannelId, CancellationToken cancellationToken) + private LiveTvProgram GetCurrentProgram(string externalChannelId) { var now = DateTime.UtcNow; @@ -1385,7 +1405,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv if (program != null) { - await RefreshIfNeeded(program, cancellationToken).ConfigureAwait(false); + RefreshIfNeeded(program); } return program; @@ -1444,7 +1464,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task GetNewTimerDefaults(string programId, CancellationToken cancellationToken) { - var program = await GetInternalProgram(programId, cancellationToken).ConfigureAwait(false); + var program = GetInternalProgram(programId); var programDto = await GetProgram(programId, cancellationToken).ConfigureAwait(false); var defaults = await GetNewTimerDefaultsInternal(cancellationToken, program).ConfigureAwait(false); diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 0805c9ce9..e5b1e5a8b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1389,5 +1389,7 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies" } diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index a7de0fa34..e80f94e15 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -495,7 +495,7 @@ namespace MediaBrowser.Server.Startup.Common PlaylistManager = new PlaylistManager(LibraryManager, FileSystemManager, LibraryMonitor, LogManager.GetLogger("PlaylistManager"), UserManager); RegisterSingleInstance(PlaylistManager); - LiveTvManager = new LiveTvManager(this, ServerConfigurationManager, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer); + LiveTvManager = new LiveTvManager(this, ServerConfigurationManager, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer, ProviderManager); RegisterSingleInstance(LiveTvManager); UserViewManager = new UserViewManager(LibraryManager, LocalizationManager, UserManager, ChannelManager, LiveTvManager, PlaylistManager, CollectionManager, ServerConfigurationManager); From cde1df51ec093b1d35fd5fa5e89c528ff079a887 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 16:56:50 -0400 Subject: [PATCH 127/169] added live tv items page --- MediaBrowser.Model/LiveTv/ProgramInfoDto.cs | 8 +++++++- .../LiveTv/LiveTvDtoService.cs | 3 ++- .../LiveTv/LiveTvManager.cs | 13 +++++++------ .../Localization/Server/server.json | 5 ++++- MediaBrowser.WebDashboard/Api/PackageCreator.cs | 1 + .../MediaBrowser.WebDashboard.csproj | 6 ++++++ 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs b/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs index f511a7a17..06136459f 100644 --- a/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs +++ b/MediaBrowser.Model/LiveTv/ProgramInfoDto.cs @@ -95,7 +95,13 @@ namespace MediaBrowser.Model.LiveTv /// /// The official rating. public string OfficialRating { get; set; } - + + /// + /// Gets or sets the production year. + /// + /// The production year. + public int? ProductionYear { get; set; } + /// /// Gets or sets the name of the service. /// diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 6473d10d6..7f4440fbc 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -387,7 +387,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv IsPremiere = item.IsPremiere, Type = "Program", MediaType = item.MediaType, - ServerId = _appHost.SystemId + ServerId = _appHost.SystemId, + ProductionYear = item.ProductionYear }; if (item.EndDate.HasValue) diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index acff25e96..6b66ed9b8 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -685,19 +685,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = _libraryManager.Sort(programs, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending) .Cast(); + var programList = programs.ToList(); + IEnumerable returnPrograms = programList; + if (query.StartIndex.HasValue) { - programs = programs.Skip(query.StartIndex.Value); + returnPrograms = returnPrograms.Skip(query.StartIndex.Value); } if (query.Limit.HasValue) { - programs = programs.Take(query.Limit.Value); + returnPrograms = returnPrograms.Take(query.Limit.Value); } - var programList = programs.ToList(); - - var returnArray = programList + var returnArray = returnPrograms .Select(i => { var channel = GetChannel(i); @@ -713,7 +714,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv var result = new QueryResult { Items = returnArray, - TotalRecordCount = returnArray.Length + TotalRecordCount = programList.Count }; return result; diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index e5b1e5a8b..24bccaf1d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1391,5 +1391,8 @@ "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", "MessageReenableUser": "See below to reenable", "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", - "OptionTVMovies": "TV Movies" + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More..." } diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index 2807b631c..ac94f680b 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -429,6 +429,7 @@ namespace MediaBrowser.WebDashboard.Api "livetvchannel.js", "livetvchannels.js", "livetvguide.js", + "livetvitems.js", "livetvnewrecording.js", "livetvprogram.js", "livetvrecording.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index c02eb5848..d7c354da3 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -120,6 +120,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -138,6 +141,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest From 99c991f001d99d441c3b3188a3bf5affb2e4c14b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 21:42:09 -0400 Subject: [PATCH 128/169] save appVersion with device record --- MediaBrowser.Api/Sync/SyncService.cs | 4 ++ .../Devices/IDeviceManager.cs | 3 +- .../Security/AuthenticationInfo.cs | 6 ++ .../Session/ISessionManager.cs | 4 +- MediaBrowser.Controller/Sync/ISyncManager.cs | 7 +++ MediaBrowser.Model/Devices/DeviceInfo.cs | 5 ++ MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 5 ++ MediaBrowser.Model/Sync/SyncDialogOptions.cs | 8 ++- MediaBrowser.Model/Sync/SyncJob.cs | 5 ++ .../Devices/DeviceManager.cs | 3 +- .../Persistence/SqliteExtensions.cs | 34 ++++++++++- .../Security/AuthenticationRepository.cs | 31 ++++++---- .../Session/SessionManager.cs | 35 ++++++----- .../Sync/AppSyncProvider.cs | 15 +++-- .../Sync/IHasSyncQuality.cs | 10 +++- .../Sync/SyncManager.cs | 59 +++++++++++++++---- .../Sync/SyncRepository.cs | 47 +++++++++------ 17 files changed, 213 insertions(+), 68 deletions(-) diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs index 7c81f24c4..bcadb4c08 100644 --- a/MediaBrowser.Api/Sync/SyncService.cs +++ b/MediaBrowser.Api/Sync/SyncService.cs @@ -238,6 +238,10 @@ namespace MediaBrowser.Api.Sync result.QualityOptions = _syncManager .GetQualityOptions(request.TargetId) .ToList(); + + result.ProfileOptions = _syncManager + .GetProfileOptions(request.TargetId) + .ToList(); } if (request.Category.HasValue) diff --git a/MediaBrowser.Controller/Devices/IDeviceManager.cs b/MediaBrowser.Controller/Devices/IDeviceManager.cs index 78eebd994..2846bcfc6 100644 --- a/MediaBrowser.Controller/Devices/IDeviceManager.cs +++ b/MediaBrowser.Controller/Devices/IDeviceManager.cs @@ -25,9 +25,10 @@ namespace MediaBrowser.Controller.Devices /// The reported identifier. /// The name. /// Name of the application. + /// The application version. /// The used by user identifier. /// Task. - Task RegisterDevice(string reportedId, string name, string appName, string usedByUserId); + Task RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId); /// /// Saves the capabilities. diff --git a/MediaBrowser.Controller/Security/AuthenticationInfo.cs b/MediaBrowser.Controller/Security/AuthenticationInfo.cs index dd5eec1f9..c2d4a39d1 100644 --- a/MediaBrowser.Controller/Security/AuthenticationInfo.cs +++ b/MediaBrowser.Controller/Security/AuthenticationInfo.cs @@ -28,6 +28,12 @@ namespace MediaBrowser.Controller.Security /// The name of the application. public string AppName { get; set; } + /// + /// Gets or sets the application version. + /// + /// The application version. + public string AppVersion { get; set; } + /// /// Gets or sets the name of the device. /// diff --git a/MediaBrowser.Controller/Session/ISessionManager.cs b/MediaBrowser.Controller/Session/ISessionManager.cs index bddc035e0..80025171d 100644 --- a/MediaBrowser.Controller/Session/ISessionManager.cs +++ b/MediaBrowser.Controller/Session/ISessionManager.cs @@ -74,7 +74,7 @@ namespace MediaBrowser.Controller.Session /// /// Logs the user activity. /// - /// Type of the client. + /// Type of the client. /// The app version. /// The device id. /// Name of the device. @@ -82,7 +82,7 @@ namespace MediaBrowser.Controller.Session /// The user. /// Task. /// user - Task LogSessionActivity(string clientType, string appVersion, string deviceId, string deviceName, string remoteEndPoint, User user); + Task LogSessionActivity(string appName, string appVersion, string deviceId, string deviceName, string remoteEndPoint, User user); /// /// Used to report that playback has started for an item diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index dea0ff972..69548ea3b 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -166,5 +166,12 @@ namespace MediaBrowser.Controller.Sync /// The target identifier. /// IEnumerable<SyncQualityOption>. IEnumerable GetQualityOptions(string targetId); + + /// + /// Gets the profile options. + /// + /// The target identifier. + /// IEnumerable<SyncQualityOption>. + IEnumerable GetProfileOptions(string targetId); } } diff --git a/MediaBrowser.Model/Devices/DeviceInfo.cs b/MediaBrowser.Model/Devices/DeviceInfo.cs index e5efe9f60..726e9d6e5 100644 --- a/MediaBrowser.Model/Devices/DeviceInfo.cs +++ b/MediaBrowser.Model/Devices/DeviceInfo.cs @@ -46,6 +46,11 @@ namespace MediaBrowser.Model.Devices /// The name of the application. public string AppName { get; set; } /// + /// Gets or sets the application version. + /// + /// The application version. + public string AppVersion { get; set; } + /// /// Gets or sets the last user identifier. /// /// The last user identifier. diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index 0cd5eda0c..c6f6ed84c 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -4,5 +4,10 @@ { public int? GuideDays { get; set; } public bool EnableMovieProviders { get; set; } + + public LiveTvOptions() + { + EnableMovieProviders = true; + } } } \ No newline at end of file diff --git a/MediaBrowser.Model/Sync/SyncDialogOptions.cs b/MediaBrowser.Model/Sync/SyncDialogOptions.cs index 080f7f2a8..2b8672d76 100644 --- a/MediaBrowser.Model/Sync/SyncDialogOptions.cs +++ b/MediaBrowser.Model/Sync/SyncDialogOptions.cs @@ -19,12 +19,18 @@ namespace MediaBrowser.Model.Sync /// /// The quality options. public List QualityOptions { get; set; } - + /// + /// Gets or sets the profile options. + /// + /// The profile options. + public List ProfileOptions { get; set; } + public SyncDialogOptions() { Targets = new List(); Options = new List(); QualityOptions = new List(); + ProfileOptions = new List(); } } } diff --git a/MediaBrowser.Model/Sync/SyncJob.cs b/MediaBrowser.Model/Sync/SyncJob.cs index 6610ad610..1282c01db 100644 --- a/MediaBrowser.Model/Sync/SyncJob.cs +++ b/MediaBrowser.Model/Sync/SyncJob.cs @@ -26,6 +26,11 @@ namespace MediaBrowser.Model.Sync /// The quality. public string Quality { get; set; } /// + /// Gets or sets the profile. + /// + /// The profile. + public string Profile { get; set; } + /// /// Gets or sets the category. /// /// The category. diff --git a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs index 84dd8a97c..b65b7d11b 100644 --- a/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs +++ b/MediaBrowser.Server.Implementations/Devices/DeviceManager.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.Devices _logger = logger; } - public async Task RegisterDevice(string reportedId, string name, string appName, string usedByUserId) + public async Task RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId) { var device = GetDevice(reportedId) ?? new DeviceInfo { @@ -53,6 +53,7 @@ namespace MediaBrowser.Server.Implementations.Devices device.ReportedName = name; device.AppName = appName; + device.AppVersion = appVersion; if (!string.IsNullOrWhiteSpace(usedByUserId)) { diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs index d67c1894d..f8cb6c9f4 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Model.Logging; +using System.Text; +using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using System; using System.Data; @@ -173,5 +174,36 @@ namespace MediaBrowser.Server.Implementations.Persistence return stream.ToArray(); } } + + public static void AddColumn(this IDbConnection connection, ILogger logger, string table, string columnName, string type) + { + using (var cmd = connection.CreateCommand()) + { + cmd.CommandText = "PRAGMA table_info(" + table + ")"; + + using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) + { + while (reader.Read()) + { + if (!reader.IsDBNull(1)) + { + var name = reader.GetString(1); + + if (string.Equals(name, columnName, StringComparison.OrdinalIgnoreCase)) + { + return; + } + } + } + } + } + + var builder = new StringBuilder(); + + builder.AppendLine("alter table " + table); + builder.AppendLine("add column " + columnName + " " + type); + + connection.RunQueries(new[] { builder.ToString() }, logger); + } } } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs b/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs index cd20ad74d..df7cc47f4 100644 --- a/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs +++ b/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Server.Implementations.Security string[] queries = { - "create table if not exists AccessTokens (Id GUID PRIMARY KEY, AccessToken TEXT NOT NULL, DeviceId TEXT, AppName TEXT, DeviceName TEXT, UserId TEXT, IsActive BIT, DateCreated DATETIME NOT NULL, DateRevoked DATETIME)", + "create table if not exists AccessTokens (Id GUID PRIMARY KEY, AccessToken TEXT NOT NULL, DeviceId TEXT, AppName TEXT, AppVersion TEXT, DeviceName TEXT, UserId TEXT, IsActive BIT, DateCreated DATETIME NOT NULL, DateRevoked DATETIME)", "create index if not exists idx_AccessTokens on AccessTokens(Id)", //pragmas @@ -48,18 +48,21 @@ namespace MediaBrowser.Server.Implementations.Security _connection.RunQueries(queries, _logger); + _connection.AddColumn(_logger, "AccessTokens", "AppVersion", "TEXT"); + PrepareStatements(); } private void PrepareStatements() { _saveInfoCommand = _connection.CreateCommand(); - _saveInfoCommand.CommandText = "replace into AccessTokens (Id, AccessToken, DeviceId, AppName, DeviceName, UserId, IsActive, DateCreated, DateRevoked) values (@Id, @AccessToken, @DeviceId, @AppName, @DeviceName, @UserId, @IsActive, @DateCreated, @DateRevoked)"; + _saveInfoCommand.CommandText = "replace into AccessTokens (Id, AccessToken, DeviceId, AppName, AppVersion, DeviceName, UserId, IsActive, DateCreated, DateRevoked) values (@Id, @AccessToken, @DeviceId, @AppName, @AppVersion, @DeviceName, @UserId, @IsActive, @DateCreated, @DateRevoked)"; _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@Id"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@AccessToken"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@DeviceId"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@AppName"); + _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@AppVersion"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@DeviceName"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@UserId"); _saveInfoCommand.Parameters.Add(_saveInfoCommand, "@IsActive"); @@ -97,6 +100,7 @@ namespace MediaBrowser.Server.Implementations.Security _saveInfoCommand.GetParameter(index++).Value = info.AccessToken; _saveInfoCommand.GetParameter(index++).Value = info.DeviceId; _saveInfoCommand.GetParameter(index++).Value = info.AppName; + _saveInfoCommand.GetParameter(index++).Value = info.AppVersion; _saveInfoCommand.GetParameter(index++).Value = info.DeviceName; _saveInfoCommand.GetParameter(index++).Value = info.UserId; _saveInfoCommand.GetParameter(index++).Value = info.IsActive; @@ -140,7 +144,7 @@ namespace MediaBrowser.Server.Implementations.Security } } - private const string BaseSelectText = "select Id, AccessToken, DeviceId, AppName, DeviceName, UserId, IsActive, DateCreated, DateRevoked from AccessTokens"; + private const string BaseSelectText = "select Id, AccessToken, DeviceId, AppName, AppVersion, DeviceName, UserId, IsActive, DateCreated, DateRevoked from AccessTokens"; public QueryResult Get(AuthenticationInfoQuery query) { @@ -264,8 +268,6 @@ namespace MediaBrowser.Server.Implementations.Security private AuthenticationInfo Get(IDataReader reader) { - var s = "select Id, AccessToken, DeviceId, AppName, DeviceName, UserId, IsActive, DateCreated, DateRevoked from AccessTokens"; - var info = new AuthenticationInfo { Id = reader.GetGuid(0).ToString("N"), @@ -284,20 +286,25 @@ namespace MediaBrowser.Server.Implementations.Security if (!reader.IsDBNull(4)) { - info.DeviceName = reader.GetString(4); + info.AppVersion = reader.GetString(4); } - + if (!reader.IsDBNull(5)) { - info.UserId = reader.GetString(5); + info.DeviceName = reader.GetString(5); + } + + if (!reader.IsDBNull(6)) + { + info.UserId = reader.GetString(6); } - info.IsActive = reader.GetBoolean(6); - info.DateCreated = reader.GetDateTime(7).ToUniversalTime(); + info.IsActive = reader.GetBoolean(7); + info.DateCreated = reader.GetDateTime(8).ToUniversalTime(); - if (!reader.IsDBNull(8)) + if (!reader.IsDBNull(9)) { - info.DateRevoked = reader.GetDateTime(8).ToUniversalTime(); + info.DateRevoked = reader.GetDateTime(9).ToUniversalTime(); } return info; diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 7c6ab2af6..76e97ff48 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -202,7 +202,7 @@ namespace MediaBrowser.Server.Implementations.Session /// /// Logs the user activity. /// - /// Type of the client. + /// Type of the client. /// The app version. /// The device id. /// Name of the device. @@ -211,16 +211,16 @@ namespace MediaBrowser.Server.Implementations.Session /// Task. /// user /// - public async Task LogSessionActivity(string clientType, + public async Task LogSessionActivity(string appName, string appVersion, string deviceId, string deviceName, string remoteEndPoint, User user) { - if (string.IsNullOrEmpty(clientType)) + if (string.IsNullOrEmpty(appName)) { - throw new ArgumentNullException("clientType"); + throw new ArgumentNullException("appName"); } if (string.IsNullOrEmpty(appVersion)) { @@ -237,7 +237,7 @@ namespace MediaBrowser.Server.Implementations.Session var activityDate = DateTime.UtcNow; - var session = await GetSessionInfo(clientType, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false); + var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false); session.LastActivityDate = activityDate; @@ -362,24 +362,24 @@ namespace MediaBrowser.Server.Implementations.Session } } - private string GetSessionKey(string clientType, string deviceId) + private string GetSessionKey(string appName, string deviceId) { - return clientType + deviceId; + return appName + deviceId; } /// /// Gets the connection. /// - /// Type of the client. + /// Type of the client. /// The app version. /// The device id. /// Name of the device. /// The remote end point. /// The user. /// SessionInfo. - private async Task GetSessionInfo(string clientType, string appVersion, string deviceId, string deviceName, string remoteEndPoint, User user) + private async Task GetSessionInfo(string appName, string appVersion, string deviceId, string deviceName, string remoteEndPoint, User user) { - var key = GetSessionKey(clientType, deviceId); + var key = GetSessionKey(appName, deviceId); await _sessionLock.WaitAsync(CancellationToken.None).ConfigureAwait(false); @@ -395,7 +395,7 @@ namespace MediaBrowser.Server.Implementations.Session { sessionInfo = new SessionInfo { - Client = clientType, + Client = appName, DeviceId = deviceId, ApplicationVersion = appVersion, Id = key.GetMD5().ToString("N") @@ -413,7 +413,7 @@ namespace MediaBrowser.Server.Implementations.Session if (!string.IsNullOrEmpty(deviceId)) { var userIdString = userId.HasValue ? userId.Value.ToString("N") : null; - device = await _deviceManager.RegisterDevice(deviceId, deviceName, clientType, userIdString).ConfigureAwait(false); + device = await _deviceManager.RegisterDevice(deviceId, deviceName, appName, appVersion, userIdString).ConfigureAwait(false); } } @@ -1651,10 +1651,11 @@ namespace MediaBrowser.Server.Implementations.Session : _userManager.GetUserById(info.UserId); appVersion = string.IsNullOrWhiteSpace(appVersion) - ? "1" + ? info.AppVersion : appVersion; var deviceName = info.DeviceName; + var appName = info.AppName; if (!string.IsNullOrWhiteSpace(deviceId)) { @@ -1663,6 +1664,12 @@ namespace MediaBrowser.Server.Implementations.Session if (device != null) { deviceName = device.Name; + appName = device.AppName; + + if (!string.IsNullOrWhiteSpace(device.AppVersion)) + { + appVersion = device.AppVersion; + } } } else @@ -1670,7 +1677,7 @@ namespace MediaBrowser.Server.Implementations.Session deviceId = info.DeviceId; } - return GetSessionInfo(info.AppName, appVersion, deviceId, deviceName, remoteEndpoint, user); + return GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndpoint, user); } public Task GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint) diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index c86549cb3..e4361ed1a 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -32,12 +32,12 @@ namespace MediaBrowser.Server.Implementations.Sync }); } - public DeviceProfile GetDeviceProfile(SyncTarget target, string quality) + public DeviceProfile GetDeviceProfile(SyncTarget target, string profile, string quality) { var caps = _deviceManager.GetCapabilities(target.Id); - var profile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile; - var maxBitrate = profile.MaxStaticBitrate; + var deviceProfile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile; + var maxBitrate = deviceProfile.MaxStaticBitrate; if (maxBitrate.HasValue) { @@ -50,10 +50,10 @@ namespace MediaBrowser.Server.Implementations.Sync maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); } - profile.MaxStaticBitrate = maxBitrate; + deviceProfile.MaxStaticBitrate = maxBitrate; } - return profile; + return deviceProfile; } public string Name @@ -101,5 +101,10 @@ namespace MediaBrowser.Server.Implementations.Sync } }; } + + public IEnumerable GetProfileOptions(SyncTarget target) + { + return new List(); + } } } diff --git a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs index fa73a1cac..cefce4d17 100644 --- a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs +++ b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs @@ -10,9 +10,10 @@ namespace MediaBrowser.Server.Implementations.Sync /// Gets the device profile. /// /// The target. + /// The profile. /// The quality. /// DeviceProfile. - DeviceProfile GetDeviceProfile(SyncTarget target, string quality); + DeviceProfile GetDeviceProfile(SyncTarget target, string profile, string quality); /// /// Gets the quality options. @@ -20,5 +21,12 @@ namespace MediaBrowser.Server.Implementations.Sync /// The target. /// IEnumerable<SyncQualityOption>. IEnumerable GetQualityOptions(SyncTarget target); + + /// + /// Gets the profile options. + /// + /// The target. + /// IEnumerable<SyncQualityOption>. + IEnumerable GetProfileOptions(SyncTarget target); } } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 0bf9a2e23..b75f6e761 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -982,7 +982,7 @@ namespace MediaBrowser.Server.Implementations.Sync public AudioOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) { - var profile = GetDeviceProfile(jobItem.TargetId, null); + var profile = GetDeviceProfile(jobItem.TargetId, null, null); return new AudioOptions { @@ -992,7 +992,7 @@ namespace MediaBrowser.Server.Implementations.Sync public VideoOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) { - var profile = GetDeviceProfile(jobItem.TargetId, job.Quality); + var profile = GetDeviceProfile(jobItem.TargetId, job.Profile, job.Quality); return new VideoOptions { @@ -1000,7 +1000,7 @@ namespace MediaBrowser.Server.Implementations.Sync }; } - public DeviceProfile GetDeviceProfile(string targetId, string quality) + private DeviceProfile GetDeviceProfile(string targetId, string profile, string quality) { foreach (var provider in _providers) { @@ -1008,7 +1008,7 @@ namespace MediaBrowser.Server.Implementations.Sync { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { - return GetDeviceProfile(provider, target, quality); + return GetDeviceProfile(provider, target, profile, quality); } } } @@ -1016,22 +1016,22 @@ namespace MediaBrowser.Server.Implementations.Sync return null; } - private DeviceProfile GetDeviceProfile(ISyncProvider provider, SyncTarget target, string quality) + private DeviceProfile GetDeviceProfile(ISyncProvider provider, SyncTarget target, string profile, string quality) { var hasProfile = provider as IHasSyncQuality; if (hasProfile != null) { - return hasProfile.GetDeviceProfile(target, quality); + return hasProfile.GetDeviceProfile(target, profile, quality); } - return GetDefaultProfile(quality); + return GetDeviceProfile(profile, quality); } - private DeviceProfile GetDefaultProfile(string quality) + private DeviceProfile GetDeviceProfile(string profile, string quality) { - var profile = new CloudSyncProfile(true, false); - var maxBitrate = profile.MaxStaticBitrate; + var deviceProfile = new CloudSyncProfile(true, false); + var maxBitrate = deviceProfile.MaxStaticBitrate; if (maxBitrate.HasValue) { @@ -1044,10 +1044,10 @@ namespace MediaBrowser.Server.Implementations.Sync maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); } - profile.MaxStaticBitrate = maxBitrate; + deviceProfile.MaxStaticBitrate = maxBitrate; } - return profile; + return deviceProfile; } public IEnumerable GetQualityOptions(string targetId) @@ -1100,5 +1100,40 @@ namespace MediaBrowser.Server.Implementations.Sync } }; } + + public IEnumerable GetProfileOptions(string targetId) + { + foreach (var provider in _providers) + { + foreach (var target in GetSyncTargets(provider)) + { + if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) + { + return GetProfileOptions(provider, target); + } + } + } + + return new List(); + } + + private IEnumerable GetProfileOptions(ISyncProvider provider, SyncTarget target) + { + var hasQuality = provider as IHasSyncQuality; + if (hasQuality != null) + { + return hasQuality.GetProfileOptions(target); + } + + var list = new List(); + + list.Add(new SyncQualityOption + { + Name = SyncQuality.Low.ToString(), + Id = SyncQuality.Low.ToString() + }); + + return list; + } } } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index 9d820eaa2..f733adda9 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller; +using System.Text; +using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; @@ -50,7 +51,7 @@ namespace MediaBrowser.Server.Implementations.Sync string[] queries = { - "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Quality TEXT, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, Category TEXT, ParentId TEXT, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", + "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Profile TEXT, Quality TEXT, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, Category TEXT, ParentId TEXT, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", "create index if not exists idx_SyncJobs on SyncJobs(Id)", "create table if not exists SyncJobItems (Id GUID PRIMARY KEY, ItemId TEXT, ItemName TEXT, MediaSourceId TEXT, JobId TEXT, TemporaryPath TEXT, OutputPath TEXT, Status TEXT, TargetId TEXT, DateCreated DateTime, Progress FLOAT, AdditionalFiles TEXT, MediaSource TEXT, IsMarkedForRemoval BIT, JobItemIndex INT)", @@ -64,6 +65,8 @@ namespace MediaBrowser.Server.Implementations.Sync _connection.RunQueries(queries, _logger); + _connection.AddColumn(_logger, "SyncJobs", "Profile", "TEXT"); + PrepareStatements(); } @@ -81,11 +84,12 @@ namespace MediaBrowser.Server.Implementations.Sync // _insertJobCommand _insertJobCommand = _connection.CreateCommand(); - _insertJobCommand.CommandText = "insert into SyncJobs (Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Quality, @Status, @Progress, @UserId, @ItemIds, @Category, @ParentId, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; + _insertJobCommand.CommandText = "insert into SyncJobs (Id, TargetId, Name, Profile, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Profile, @Quality, @Status, @Progress, @UserId, @ItemIds, @Category, @ParentId, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; _insertJobCommand.Parameters.Add(_insertJobCommand, "@Id"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@TargetId"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Name"); + _insertJobCommand.Parameters.Add(_insertJobCommand, "@Profile"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Quality"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Status"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Progress"); @@ -102,11 +106,12 @@ namespace MediaBrowser.Server.Implementations.Sync // _updateJobCommand _updateJobCommand = _connection.CreateCommand(); - _updateJobCommand.CommandText = "update SyncJobs set TargetId=@TargetId,Name=@Name,Quality=@Quality,Status=@Status,Progress=@Progress,UserId=@UserId,ItemIds=@ItemIds,Category=@Category,ParentId=@ParentId,UnwatchedOnly=@UnwatchedOnly,ItemLimit=@ItemLimit,SyncNewContent=@SyncNewContent,DateCreated=@DateCreated,DateLastModified=@DateLastModified,ItemCount=@ItemCount where Id=@ID"; + _updateJobCommand.CommandText = "update SyncJobs set TargetId=@TargetId,Name=@Name,Profile=@Profile,Quality=@Quality,Status=@Status,Progress=@Progress,UserId=@UserId,ItemIds=@ItemIds,Category=@Category,ParentId=@ParentId,UnwatchedOnly=@UnwatchedOnly,ItemLimit=@ItemLimit,SyncNewContent=@SyncNewContent,DateCreated=@DateCreated,DateLastModified=@DateLastModified,ItemCount=@ItemCount where Id=@ID"; _updateJobCommand.Parameters.Add(_updateJobCommand, "@Id"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@TargetId"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Name"); + _updateJobCommand.Parameters.Add(_updateJobCommand, "@Profile"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Quality"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Status"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Progress"); @@ -162,7 +167,7 @@ namespace MediaBrowser.Server.Implementations.Sync _updateJobItemCommand.Parameters.Add(_updateJobItemCommand, "@JobItemIndex"); } - private const string BaseJobSelectText = "select Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; + private const string BaseJobSelectText = "select Id, TargetId, Name, Profile, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; private const string BaseJobItemSelectText = "select Id, ItemId, ItemName, MediaSourceId, JobId, TemporaryPath, OutputPath, Status, TargetId, DateCreated, Progress, AdditionalFiles, MediaSource, IsMarkedForRemoval, JobItemIndex from SyncJobItems"; public SyncJob GetJob(string id) @@ -210,54 +215,59 @@ namespace MediaBrowser.Server.Implementations.Sync if (!reader.IsDBNull(3)) { - info.Quality = reader.GetString(3); + info.Profile = reader.GetString(3); } if (!reader.IsDBNull(4)) { - info.Status = (SyncJobStatus)Enum.Parse(typeof(SyncJobStatus), reader.GetString(4), true); + info.Quality = reader.GetString(4); } if (!reader.IsDBNull(5)) { - info.Progress = reader.GetDouble(5); + info.Status = (SyncJobStatus)Enum.Parse(typeof(SyncJobStatus), reader.GetString(5), true); } if (!reader.IsDBNull(6)) { - info.UserId = reader.GetString(6); + info.Progress = reader.GetDouble(6); } if (!reader.IsDBNull(7)) { - info.RequestedItemIds = reader.GetString(7).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + info.UserId = reader.GetString(7); } if (!reader.IsDBNull(8)) { - info.Category = (SyncCategory)Enum.Parse(typeof(SyncCategory), reader.GetString(8), true); + info.RequestedItemIds = reader.GetString(8).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); } if (!reader.IsDBNull(9)) { - info.ParentId = reader.GetString(9); + info.Category = (SyncCategory)Enum.Parse(typeof(SyncCategory), reader.GetString(9), true); } if (!reader.IsDBNull(10)) { - info.UnwatchedOnly = reader.GetBoolean(10); + info.ParentId = reader.GetString(10); } if (!reader.IsDBNull(11)) { - info.ItemLimit = reader.GetInt32(11); + info.UnwatchedOnly = reader.GetBoolean(11); } - info.SyncNewContent = reader.GetBoolean(12); + if (!reader.IsDBNull(12)) + { + info.ItemLimit = reader.GetInt32(12); + } - info.DateCreated = reader.GetDateTime(13).ToUniversalTime(); - info.DateLastModified = reader.GetDateTime(14).ToUniversalTime(); - info.ItemCount = reader.GetInt32(15); + info.SyncNewContent = reader.GetBoolean(13); + + info.DateCreated = reader.GetDateTime(14).ToUniversalTime(); + info.DateLastModified = reader.GetDateTime(15).ToUniversalTime(); + info.ItemCount = reader.GetInt32(16); return info; } @@ -294,6 +304,7 @@ namespace MediaBrowser.Server.Implementations.Sync cmd.GetParameter(index++).Value = new Guid(job.Id); cmd.GetParameter(index++).Value = job.TargetId; cmd.GetParameter(index++).Value = job.Name; + cmd.GetParameter(index++).Value = job.Profile; cmd.GetParameter(index++).Value = job.Quality; cmd.GetParameter(index++).Value = job.Status.ToString(); cmd.GetParameter(index++).Value = job.Progress; From 5812a989c2c5e55930eb39c18229cbe7d0452a6d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 14 Mar 2015 21:58:06 -0400 Subject: [PATCH 129/169] add setting to hide library tile names --- .../Localization/Server/server.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 24bccaf1d..54ade1332 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -1393,6 +1393,8 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", - "HeaderUpcomingPrograms": "Upcoming Programs", - "ButtonMoreItems": "More..." + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page" } From 2485b5c22df66f81bc58a4b18c90da6b38c835f9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 00:17:35 -0400 Subject: [PATCH 130/169] sync updates --- MediaBrowser.Controller/Sync/ISyncManager.cs | 2 +- .../MediaBrowser.Model.Portable.csproj | 4 +- .../MediaBrowser.Model.net35.csproj | 4 +- MediaBrowser.Model/MediaBrowser.Model.csproj | 2 +- MediaBrowser.Model/Sync/SyncDialogOptions.cs | 4 +- MediaBrowser.Model/Sync/SyncJobRequest.cs | 5 ++ MediaBrowser.Model/Sync/SyncProfileOption.cs | 37 ++++++++++++ MediaBrowser.Model/Sync/SyncQuality.cs | 25 --------- MediaBrowser.Model/Sync/SyncQualityOption.cs | 5 ++ .../Library/UserManager.cs | 9 ++- .../Localization/JavaScript/javascript.json | 9 +-- .../Sync/AppSyncProvider.cs | 21 +++---- .../Sync/IHasSyncQuality.cs | 2 +- .../Sync/SyncManager.cs | 56 ++++++++++++------- 14 files changed, 114 insertions(+), 71 deletions(-) create mode 100644 MediaBrowser.Model/Sync/SyncProfileOption.cs delete mode 100644 MediaBrowser.Model/Sync/SyncQuality.cs diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index 69548ea3b..c51c8c1ba 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -172,6 +172,6 @@ namespace MediaBrowser.Controller.Sync /// /// The target identifier. /// IEnumerable<SyncQualityOption>. - IEnumerable GetProfileOptions(string targetId); + IEnumerable GetProfileOptions(string targetId); } } diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index 74f927c7e..f60f227d7 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -1133,8 +1133,8 @@ Sync\SyncParameter.cs - - Sync\SyncQuality.cs + + Sync\SyncProfileOption.cs Sync\SyncQualityOption.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index a732494d1..1685d5f7b 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -1092,8 +1092,8 @@ Sync\SyncParameter.cs - - Sync\SyncQuality.cs + + Sync\SyncProfileOption.cs Sync\SyncQualityOption.cs diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 9d4192b17..c546958aa 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -398,7 +398,7 @@ - + diff --git a/MediaBrowser.Model/Sync/SyncDialogOptions.cs b/MediaBrowser.Model/Sync/SyncDialogOptions.cs index 2b8672d76..a987a6cd6 100644 --- a/MediaBrowser.Model/Sync/SyncDialogOptions.cs +++ b/MediaBrowser.Model/Sync/SyncDialogOptions.cs @@ -23,14 +23,14 @@ namespace MediaBrowser.Model.Sync /// Gets or sets the profile options. /// /// The profile options. - public List ProfileOptions { get; set; } + public List ProfileOptions { get; set; } public SyncDialogOptions() { Targets = new List(); Options = new List(); QualityOptions = new List(); - ProfileOptions = new List(); + ProfileOptions = new List(); } } } diff --git a/MediaBrowser.Model/Sync/SyncJobRequest.cs b/MediaBrowser.Model/Sync/SyncJobRequest.cs index 2af428383..8f9d9520c 100644 --- a/MediaBrowser.Model/Sync/SyncJobRequest.cs +++ b/MediaBrowser.Model/Sync/SyncJobRequest.cs @@ -30,6 +30,11 @@ namespace MediaBrowser.Model.Sync /// The quality. public string Quality { get; set; } /// + /// Gets or sets the profile. + /// + /// The profile. + public string Profile { get; set; } + /// /// Gets or sets the name. /// /// The name. diff --git a/MediaBrowser.Model/Sync/SyncProfileOption.cs b/MediaBrowser.Model/Sync/SyncProfileOption.cs new file mode 100644 index 000000000..605af6b25 --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncProfileOption.cs @@ -0,0 +1,37 @@ + +namespace MediaBrowser.Model.Sync +{ + public class SyncProfileOption + { + /// + /// Gets or sets the name. + /// + /// The name. + public string Name { get; set; } + /// + /// Gets or sets the description. + /// + /// The description. + public string Description { get; set; } + /// + /// Gets or sets the identifier. + /// + /// The identifier. + public string Id { get; set; } + /// + /// Gets or sets a value indicating whether this instance is default. + /// + /// true if this instance is default; otherwise, false. + public bool IsDefault { get; set; } + /// + /// Gets or sets a value indicating whether [enable quality options]. + /// + /// true if [enable quality options]; otherwise, false. + public bool EnableQualityOptions { get; set; } + + public SyncProfileOption() + { + EnableQualityOptions = true; + } + } +} diff --git a/MediaBrowser.Model/Sync/SyncQuality.cs b/MediaBrowser.Model/Sync/SyncQuality.cs deleted file mode 100644 index 27ee756a3..000000000 --- a/MediaBrowser.Model/Sync/SyncQuality.cs +++ /dev/null @@ -1,25 +0,0 @@ - -namespace MediaBrowser.Model.Sync -{ - public enum SyncQuality - { - /// - /// The good - /// - Low = 0, - - /// - /// The better - /// - Medium = 1, - - /// - /// The best - /// - High = 2, - /// - /// The original - /// - Original = 3 - } -} diff --git a/MediaBrowser.Model/Sync/SyncQualityOption.cs b/MediaBrowser.Model/Sync/SyncQualityOption.cs index 1945613c0..597b98727 100644 --- a/MediaBrowser.Model/Sync/SyncQualityOption.cs +++ b/MediaBrowser.Model/Sync/SyncQualityOption.cs @@ -9,6 +9,11 @@ namespace MediaBrowser.Model.Sync /// The name. public string Name { get; set; } /// + /// Gets or sets the description. + /// + /// The description. + public string Description { get; set; } + /// /// Gets or sets the identifier. /// /// The identifier. diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index 6e6e23a5a..b101f6ae1 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -1,5 +1,4 @@ -using System.Net.NetworkInformation; -using MediaBrowser.Common.Events; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; @@ -849,6 +848,12 @@ namespace MediaBrowser.Server.Implementations.Library foreach (var user in users) { await ResetPassword(user).ConfigureAwait(false); + + if (user.Policy.IsDisabled) + { + user.Policy.IsDisabled = false; + await UpdateUserPolicy(user, user.Policy, true).ConfigureAwait(false); + } usersReset.Add(user.Name); } } diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 1aa18e6c8..d3693840a 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -117,7 +117,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default/Forced)", @@ -731,10 +730,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -751,5 +746,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index e4361ed1a..ff43816b0 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -80,31 +80,32 @@ namespace MediaBrowser.Server.Implementations.Sync { new SyncQualityOption { - Name = SyncQuality.Original.ToString(), - Id = SyncQuality.Original.ToString() + Name = "Original", + Id = "original", + Description = "Syncs original files as-is, regardless of whether the device is capable of playing them or not." }, new SyncQualityOption { - Name = SyncQuality.High.ToString(), - Id = SyncQuality.High.ToString(), + Name = "High", + Id = "high", IsDefault = true }, new SyncQualityOption { - Name = SyncQuality.Medium.ToString(), - Id = SyncQuality.Medium.ToString() + Name = "Medium", + Id = "medium" }, new SyncQualityOption { - Name = SyncQuality.Low.ToString(), - Id = SyncQuality.Low.ToString() + Name = "Low", + Id = "low" } }; } - public IEnumerable GetProfileOptions(SyncTarget target) + public IEnumerable GetProfileOptions(SyncTarget target) { - return new List(); + return new List(); } } } diff --git a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs index cefce4d17..06ff3f9aa 100644 --- a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs +++ b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs @@ -27,6 +27,6 @@ namespace MediaBrowser.Server.Implementations.Sync /// /// The target. /// IEnumerable<SyncQualityOption>. - IEnumerable GetProfileOptions(SyncTarget target); + IEnumerable GetProfileOptions(SyncTarget target); } } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index b75f6e761..e8331e87e 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -159,7 +159,8 @@ namespace MediaBrowser.Server.Implementations.Sync ItemCount = items.Count, Category = request.Category, ParentId = request.ParentId, - Quality = request.Quality + Quality = request.Quality, + Profile = request.Profile }; if (!request.Category.HasValue && request.ItemIds != null) @@ -1079,29 +1080,29 @@ namespace MediaBrowser.Server.Implementations.Sync { new SyncQualityOption { - Name = SyncQuality.Original.ToString(), - Id = SyncQuality.Original.ToString() - }, - new SyncQualityOption - { - Name = SyncQuality.High.ToString(), - Id = SyncQuality.High.ToString(), + Name = "High", + Id = "high", IsDefault = true }, new SyncQualityOption { - Name = SyncQuality.Medium.ToString(), - Id = SyncQuality.Medium.ToString() + Name = "Medium", + Id = "medium" }, new SyncQualityOption { - Name = SyncQuality.Low.ToString(), - Id = SyncQuality.Low.ToString() + Name = "Low", + Id = "low" + }, + new SyncQualityOption + { + Name = "Custom", + Id = "custom" } }; } - public IEnumerable GetProfileOptions(string targetId) + public IEnumerable GetProfileOptions(string targetId) { foreach (var provider in _providers) { @@ -1114,10 +1115,10 @@ namespace MediaBrowser.Server.Implementations.Sync } } - return new List(); + return new List(); } - private IEnumerable GetProfileOptions(ISyncProvider provider, SyncTarget target) + private IEnumerable GetProfileOptions(ISyncProvider provider, SyncTarget target) { var hasQuality = provider as IHasSyncQuality; if (hasQuality != null) @@ -1125,12 +1126,29 @@ namespace MediaBrowser.Server.Implementations.Sync return hasQuality.GetProfileOptions(target); } - var list = new List(); + var list = new List(); - list.Add(new SyncQualityOption + list.Add(new SyncProfileOption { - Name = SyncQuality.Low.ToString(), - Id = SyncQuality.Low.ToString() + Name = "Original", + Id = "Original", + Description = "Syncs original files as-is.", + EnableQualityOptions = false + }); + + list.Add(new SyncProfileOption + { + Name = "Web - H264/AAC, MP3", + Id = "mobile", + Description = "Designed for compatibility with all devices, including web browsers." + }); + + list.Add(new SyncProfileOption + { + Name = "General - H264/AAC/AC3, MP3", + Id = "general", + Description = "Designed for compatibility with Chromecast, Roku, Smart TV's, and other similar devices.", + IsDefault = true }); return list; From c8dc67d980afcd071609a3697478ade9ae439399 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 00:39:29 -0400 Subject: [PATCH 131/169] sync fixes --- MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 1 + .../Sync/SyncRepository.cs | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index e8331e87e..19e3841d1 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -221,6 +221,7 @@ namespace MediaBrowser.Server.Implementations.Sync instance.Name = job.Name; instance.Quality = job.Quality; + instance.Profile = job.Profile; instance.UnwatchedOnly = job.UnwatchedOnly; instance.SyncNewContent = job.SyncNewContent; instance.ItemLimit = job.ItemLimit; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index f733adda9..4257fcfb9 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -441,6 +441,7 @@ namespace MediaBrowser.Server.Implementations.Sync if (!string.IsNullOrWhiteSpace(query.TargetId)) { whereClauses.Add("TargetId=@TargetId"); + cmd.Parameters.Add(cmd, "@TargetId", DbType.String).Value = query.TargetId; } if (!string.IsNullOrWhiteSpace(query.UserId)) { @@ -453,6 +454,8 @@ namespace MediaBrowser.Server.Implementations.Sync cmd.Parameters.Add(cmd, "@SyncNewContent", DbType.Boolean).Value = query.SyncNewContent.Value; } + cmd.CommandText += " mainTable"; + var whereTextWithoutPaging = whereClauses.Count == 0 ? string.Empty : " where " + string.Join(" AND ", whereClauses.ToArray()); @@ -460,7 +463,7 @@ namespace MediaBrowser.Server.Implementations.Sync var startIndex = query.StartIndex ?? 0; if (startIndex > 0) { - whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM SyncJobs ORDER BY (Select Max(DateLastModified) from SyncJobs where TargetId=@TargetId) DESC, DateLastModified DESC LIMIT {0})", + whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM SyncJobs ORDER BY (Select Max(DateLastModified) from SyncJobs where TargetId=mainTable.TargetId) DESC, DateLastModified DESC LIMIT {0})", startIndex.ToString(_usCulture))); } @@ -469,8 +472,7 @@ namespace MediaBrowser.Server.Implementations.Sync cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray()); } - cmd.CommandText += " ORDER BY (Select Max(DateLastModified) from SyncJobs where TargetId=@TargetId) DESC, DateLastModified DESC"; - cmd.Parameters.Add(cmd, "@TargetId", DbType.String).Value = query.TargetId; + cmd.CommandText += " ORDER BY (Select Max(DateLastModified) from SyncJobs where TargetId=mainTable.TargetId) DESC, DateLastModified DESC"; if (query.Limit.HasValue) { From 72a5383c703b86286cf61decb92b987b48b50d3c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 13:50:47 -0400 Subject: [PATCH 132/169] rework handling of original quality --- MediaBrowser.Api/MediaBrowser.Api.csproj | 1 + .../Sync/SyncHelper.cs | 3 +- .../MediaBrowser.Controller.csproj | 1 + .../Sync/SyncJobOptions.cs | 19 +++++++ .../MediaBrowser.Model.Portable.csproj | 3 - .../MediaBrowser.Model.net35.csproj | 3 - MediaBrowser.Model/MediaBrowser.Model.csproj | 1 - ...MediaBrowser.Server.Implementations.csproj | 1 + .../Sync/AppSyncProvider.cs | 17 +----- .../Sync/SyncHelper.cs | 33 +++++++++++ .../Sync/SyncJobProcessor.cs | 40 ++++++------- .../Sync/SyncManager.cs | 57 +++++++++---------- 12 files changed, 103 insertions(+), 76 deletions(-) rename {MediaBrowser.Model => MediaBrowser.Api}/Sync/SyncHelper.cs (97%) create mode 100644 MediaBrowser.Controller/Sync/SyncJobOptions.cs create mode 100644 MediaBrowser.Server.Implementations/Sync/SyncHelper.cs diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index fc48e9a3a..503f9927c 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -135,6 +135,7 @@ + diff --git a/MediaBrowser.Model/Sync/SyncHelper.cs b/MediaBrowser.Api/Sync/SyncHelper.cs similarity index 97% rename from MediaBrowser.Model/Sync/SyncHelper.cs rename to MediaBrowser.Api/Sync/SyncHelper.cs index 34a5ba995..d0a866c02 100644 --- a/MediaBrowser.Model/Sync/SyncHelper.cs +++ b/MediaBrowser.Api/Sync/SyncHelper.cs @@ -1,7 +1,8 @@ using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Sync; using System.Collections.Generic; -namespace MediaBrowser.Model.Sync +namespace MediaBrowser.Api.Sync { public static class SyncHelper { diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 06f18729b..beb64b373 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -397,6 +397,7 @@ + diff --git a/MediaBrowser.Controller/Sync/SyncJobOptions.cs b/MediaBrowser.Controller/Sync/SyncJobOptions.cs new file mode 100644 index 000000000..abd6d2553 --- /dev/null +++ b/MediaBrowser.Controller/Sync/SyncJobOptions.cs @@ -0,0 +1,19 @@ +using MediaBrowser.Model.Dlna; + +namespace MediaBrowser.Controller.Sync +{ + public class SyncJobOptions + where T : AudioOptions, new () + { + /// + /// Gets or sets the conversion options. + /// + /// The conversion options. + public T ConversionOptions { get; set; } + /// + /// Gets or sets a value indicating whether this instance is converting. + /// + /// true if this instance is converting; otherwise, false. + public bool IsConverting { get; set; } + } +} diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj index f60f227d7..c2d46b9b3 100644 --- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj +++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj @@ -1100,9 +1100,6 @@ Sync\SyncedItem.cs - - Sync\SyncHelper.cs - Sync\SyncJob.cs diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index 1685d5f7b..129c667a0 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -1059,9 +1059,6 @@ Sync\SyncedItem.cs - - Sync\SyncHelper.cs - Sync\SyncJob.cs diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index c546958aa..3a6eda620 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -387,7 +387,6 @@ - diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index c4ef3e9de..1915814e1 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -231,6 +231,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index ff43816b0..016ad19eb 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -3,7 +3,6 @@ using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Devices; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Sync; -using System; using System.Collections.Generic; using System.Linq; @@ -37,21 +36,7 @@ namespace MediaBrowser.Server.Implementations.Sync var caps = _deviceManager.GetCapabilities(target.Id); var deviceProfile = caps == null || caps.DeviceProfile == null ? new DeviceProfile() : caps.DeviceProfile; - var maxBitrate = deviceProfile.MaxStaticBitrate; - - if (maxBitrate.HasValue) - { - if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .75); - } - else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); - } - - deviceProfile.MaxStaticBitrate = maxBitrate; - } + deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality); return deviceProfile; } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs b/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs new file mode 100644 index 000000000..6bcb27328 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs @@ -0,0 +1,33 @@ +using System; +using System.Globalization; + +namespace MediaBrowser.Server.Implementations.Sync +{ + public class SyncHelper + { + public static int? AdjustBitrate(int? profileBitrate, string quality) + { + if (profileBitrate.HasValue) + { + if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase)) + { + profileBitrate = Convert.ToInt32(profileBitrate.Value * .75); + } + else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase)) + { + profileBitrate = Convert.ToInt32(profileBitrate.Value*.5); + } + else + { + int value; + if (int.TryParse(quality, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) + { + profileBitrate = value; + } + } + } + + return profileBitrate; + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index 8fb4b5a3a..aecd9280d 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -476,22 +476,17 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private bool IsOriginalQuality(SyncJob job) - { - return string.IsNullOrWhiteSpace(job.Quality) || - string.Equals(job.Quality, "original", StringComparison.OrdinalIgnoreCase); - } - private async Task Sync(SyncJobItem jobItem, SyncJob job, Video item, User user, bool enableConversion, IProgress progress, CancellationToken cancellationToken) { - var options = _syncManager.GetVideoOptions(jobItem, job); + var jobOptions = _syncManager.GetVideoOptions(jobItem, job); + var conversionOptions = jobOptions.ConversionOptions; - options.DeviceId = jobItem.TargetId; - options.Context = EncodingContext.Static; - options.ItemId = item.Id.ToString("N"); - options.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); + conversionOptions.DeviceId = jobItem.TargetId; + conversionOptions.Context = EncodingContext.Static; + conversionOptions.ItemId = item.Id.ToString("N"); + conversionOptions.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); - var streamInfo = new StreamBuilder().BuildVideoItem(options); + var streamInfo = new StreamBuilder().BuildVideoItem(conversionOptions); var mediaSource = streamInfo.MediaSource; // No sense creating external subs if we're already burning one into the video @@ -500,7 +495,7 @@ namespace MediaBrowser.Server.Implementations.Sync streamInfo.GetExternalSubtitles(false); // Mark as requiring conversion if transcoding the video, or if any subtitles need to be extracted - var requiresVideoTranscoding = streamInfo.PlayMethod == PlayMethod.Transcode && IsOriginalQuality(job); + var requiresVideoTranscoding = streamInfo.PlayMethod == PlayMethod.Transcode && jobOptions.IsConverting; var requiresConversion = requiresVideoTranscoding || externalSubs.Any(i => RequiresExtraction(i, mediaSource)); if (requiresConversion && !enableConversion) @@ -538,7 +533,7 @@ namespace MediaBrowser.Server.Implementations.Sync } }); - jobItem.OutputPath = await _mediaEncoder.EncodeVideo(new EncodingJobOptions(streamInfo, options.Profile) + jobItem.OutputPath = await _mediaEncoder.EncodeVideo(new EncodingJobOptions(streamInfo, conversionOptions.Profile) { OutputDirectory = jobItem.TemporaryPath @@ -676,20 +671,21 @@ namespace MediaBrowser.Server.Implementations.Sync private async Task Sync(SyncJobItem jobItem, SyncJob job, Audio item, User user, bool enableConversion, IProgress progress, CancellationToken cancellationToken) { - var options = _syncManager.GetAudioOptions(jobItem, job); + var jobOptions = _syncManager.GetAudioOptions(jobItem, job); + var conversionOptions = jobOptions.ConversionOptions; - options.DeviceId = jobItem.TargetId; - options.Context = EncodingContext.Static; - options.ItemId = item.Id.ToString("N"); - options.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); + conversionOptions.DeviceId = jobItem.TargetId; + conversionOptions.Context = EncodingContext.Static; + conversionOptions.ItemId = item.Id.ToString("N"); + conversionOptions.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); - var streamInfo = new StreamBuilder().BuildAudioItem(options); + var streamInfo = new StreamBuilder().BuildAudioItem(conversionOptions); var mediaSource = streamInfo.MediaSource; jobItem.MediaSourceId = streamInfo.MediaSourceId; jobItem.TemporaryPath = GetTemporaryPath(jobItem); - if (streamInfo.PlayMethod == PlayMethod.Transcode && !IsOriginalQuality(job)) + if (streamInfo.PlayMethod == PlayMethod.Transcode && jobOptions.IsConverting) { if (!enableConversion) { @@ -716,7 +712,7 @@ namespace MediaBrowser.Server.Implementations.Sync } }); - jobItem.OutputPath = await _mediaEncoder.EncodeAudio(new EncodingJobOptions(streamInfo, options.Profile) + jobItem.OutputPath = await _mediaEncoder.EncodeAudio(new EncodingJobOptions(streamInfo, conversionOptions.Profile) { OutputDirectory = jobItem.TemporaryPath diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 19e3841d1..0ec05a0aa 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -982,23 +982,34 @@ namespace MediaBrowser.Server.Implementations.Sync return _repo.GetLibraryItemIds(query); } - public AudioOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) + private bool IsOriginalQuality(SyncJob job) { - var profile = GetDeviceProfile(jobItem.TargetId, null, null); - - return new AudioOptions + return string.IsNullOrWhiteSpace(job.Quality) || + string.Equals(job.Quality, "original", StringComparison.OrdinalIgnoreCase) || + string.Equals(job.Profile, "original", StringComparison.OrdinalIgnoreCase); + } + + public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) + { + return new SyncJobOptions { - Profile = profile + ConversionOptions = new AudioOptions + { + Profile = GetDeviceProfile(jobItem.TargetId, null, null) + }, + IsConverting = !IsOriginalQuality(job) }; } - public VideoOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) + public SyncJobOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) { - var profile = GetDeviceProfile(jobItem.TargetId, job.Profile, job.Quality); - - return new VideoOptions + return new SyncJobOptions { - Profile = profile + ConversionOptions = new VideoOptions + { + Profile = GetDeviceProfile(jobItem.TargetId, job.Profile, job.Quality) + }, + IsConverting = !IsOriginalQuality(job) }; } @@ -1033,21 +1044,7 @@ namespace MediaBrowser.Server.Implementations.Sync private DeviceProfile GetDeviceProfile(string profile, string quality) { var deviceProfile = new CloudSyncProfile(true, false); - var maxBitrate = deviceProfile.MaxStaticBitrate; - - if (maxBitrate.HasValue) - { - if (string.Equals(quality, "medium", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .75); - } - else if (string.Equals(quality, "low", StringComparison.OrdinalIgnoreCase)) - { - maxBitrate = Convert.ToInt32(maxBitrate.Value * .5); - } - - deviceProfile.MaxStaticBitrate = maxBitrate; - } + deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality); return deviceProfile; } @@ -1139,16 +1136,16 @@ namespace MediaBrowser.Server.Implementations.Sync list.Add(new SyncProfileOption { - Name = "Web - H264/AAC, MP3", - Id = "mobile", - Description = "Designed for compatibility with all devices, including web browsers." + Name = "Baseline", + Id = "baseline", + Description = "Designed for compatibility with all devices, including web browsers. Targets H264/AAC video and MP3 audio." }); list.Add(new SyncProfileOption { - Name = "General - H264/AAC/AC3, MP3", + Name = "General", Id = "general", - Description = "Designed for compatibility with Chromecast, Roku, Smart TV's, and other similar devices.", + Description = "Designed for compatibility with Chromecast, Roku, Smart TV's, and other similar devices. Targets H264/AAC/AC3 video and MP3 audio.", IsDefault = true }); From 280ab32ec1da02afeadd0ef8cc6ac41fa618d74c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 15:10:27 -0400 Subject: [PATCH 133/169] sync updates --- .../MediaBrowser.Controller.csproj | 1 - MediaBrowser.Model/Sync/SyncJob.cs | 5 ++ MediaBrowser.Model/Sync/SyncJobRequest.cs | 5 ++ ...MediaBrowser.Server.Implementations.csproj | 1 + .../Sync/AppSyncProvider.cs | 12 ++++ .../Sync/IHasSyncQuality.cs | 5 +- .../Sync/SyncHelper.cs | 9 --- .../Sync/SyncJobOptions.cs | 7 +- .../Sync/SyncJobProcessor.cs | 10 ++- .../Sync/SyncManager.cs | 67 ++++++++++--------- .../Sync/SyncRepository.cs | 46 +++++++------ 11 files changed, 98 insertions(+), 70 deletions(-) rename {MediaBrowser.Controller => MediaBrowser.Server.Implementations}/Sync/SyncJobOptions.cs (74%) diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index beb64b373..06f18729b 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -397,7 +397,6 @@ - diff --git a/MediaBrowser.Model/Sync/SyncJob.cs b/MediaBrowser.Model/Sync/SyncJob.cs index 1282c01db..6709426b8 100644 --- a/MediaBrowser.Model/Sync/SyncJob.cs +++ b/MediaBrowser.Model/Sync/SyncJob.cs @@ -26,6 +26,11 @@ namespace MediaBrowser.Model.Sync /// The quality. public string Quality { get; set; } /// + /// Gets or sets the bitrate. + /// + /// The bitrate. + public int? Bitrate { get; set; } + /// /// Gets or sets the profile. /// /// The profile. diff --git a/MediaBrowser.Model/Sync/SyncJobRequest.cs b/MediaBrowser.Model/Sync/SyncJobRequest.cs index 8f9d9520c..a96c86ed9 100644 --- a/MediaBrowser.Model/Sync/SyncJobRequest.cs +++ b/MediaBrowser.Model/Sync/SyncJobRequest.cs @@ -59,6 +59,11 @@ namespace MediaBrowser.Model.Sync /// /// The limit. public int? ItemLimit { get; set; } + /// + /// Gets or sets the bitrate. + /// + /// The bitrate. + public int? Bitrate { get; set; } public SyncJobRequest() { diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 1915814e1..9207b606e 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -232,6 +232,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index 016ad19eb..99d758233 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Devices; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Sync; +using System; using System.Collections.Generic; using System.Linq; @@ -92,5 +93,16 @@ namespace MediaBrowser.Server.Implementations.Sync { return new List(); } + + public SyncJobOptions GetSyncJobOptions(SyncTarget target, string profile, string quality) + { + var isConverting = !string.Equals(quality, "original", StringComparison.OrdinalIgnoreCase); + + return new SyncJobOptions + { + DeviceProfile = GetDeviceProfile(target, profile, quality), + IsConverting = isConverting + }; + } } } diff --git a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs index 06ff3f9aa..e7eee0923 100644 --- a/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs +++ b/MediaBrowser.Server.Implementations/Sync/IHasSyncQuality.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Model.Dlna; -using MediaBrowser.Model.Sync; +using MediaBrowser.Model.Sync; using System.Collections.Generic; namespace MediaBrowser.Server.Implementations.Sync @@ -13,7 +12,7 @@ namespace MediaBrowser.Server.Implementations.Sync /// The profile. /// The quality. /// DeviceProfile. - DeviceProfile GetDeviceProfile(SyncTarget target, string profile, string quality); + SyncJobOptions GetSyncJobOptions(SyncTarget target, string profile, string quality); /// /// Gets the quality options. diff --git a/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs b/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs index 6bcb27328..006284ee1 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncHelper.cs @@ -1,5 +1,4 @@ using System; -using System.Globalization; namespace MediaBrowser.Server.Implementations.Sync { @@ -17,14 +16,6 @@ namespace MediaBrowser.Server.Implementations.Sync { profileBitrate = Convert.ToInt32(profileBitrate.Value*.5); } - else - { - int value; - if (int.TryParse(quality, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) - { - profileBitrate = value; - } - } } return profileBitrate; diff --git a/MediaBrowser.Controller/Sync/SyncJobOptions.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobOptions.cs similarity index 74% rename from MediaBrowser.Controller/Sync/SyncJobOptions.cs rename to MediaBrowser.Server.Implementations/Sync/SyncJobOptions.cs index abd6d2553..cb8141c89 100644 --- a/MediaBrowser.Controller/Sync/SyncJobOptions.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobOptions.cs @@ -1,15 +1,14 @@ using MediaBrowser.Model.Dlna; -namespace MediaBrowser.Controller.Sync +namespace MediaBrowser.Server.Implementations.Sync { - public class SyncJobOptions - where T : AudioOptions, new () + public class SyncJobOptions { /// /// Gets or sets the conversion options. /// /// The conversion options. - public T ConversionOptions { get; set; } + public DeviceProfile DeviceProfile { get; set; } /// /// Gets or sets a value indicating whether this instance is converting. /// diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index aecd9280d..76cfa4608 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -479,7 +479,10 @@ namespace MediaBrowser.Server.Implementations.Sync private async Task Sync(SyncJobItem jobItem, SyncJob job, Video item, User user, bool enableConversion, IProgress progress, CancellationToken cancellationToken) { var jobOptions = _syncManager.GetVideoOptions(jobItem, job); - var conversionOptions = jobOptions.ConversionOptions; + var conversionOptions = new VideoOptions + { + Profile = jobOptions.DeviceProfile + }; conversionOptions.DeviceId = jobItem.TargetId; conversionOptions.Context = EncodingContext.Static; @@ -672,7 +675,10 @@ namespace MediaBrowser.Server.Implementations.Sync private async Task Sync(SyncJobItem jobItem, SyncJob job, Audio item, User user, bool enableConversion, IProgress progress, CancellationToken cancellationToken) { var jobOptions = _syncManager.GetAudioOptions(jobItem, job); - var conversionOptions = jobOptions.ConversionOptions; + var conversionOptions = new AudioOptions + { + Profile = jobOptions.DeviceProfile + }; conversionOptions.DeviceId = jobItem.TargetId; conversionOptions.Context = EncodingContext.Static; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 0ec05a0aa..59ecf1c98 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -160,7 +160,8 @@ namespace MediaBrowser.Server.Implementations.Sync Category = request.Category, ParentId = request.ParentId, Quality = request.Quality, - Profile = request.Profile + Profile = request.Profile, + Bitrate = request.Bitrate }; if (!request.Category.HasValue && request.ItemIds != null) @@ -982,38 +983,31 @@ namespace MediaBrowser.Server.Implementations.Sync return _repo.GetLibraryItemIds(query); } - private bool IsOriginalQuality(SyncJob job) + public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) { - return string.IsNullOrWhiteSpace(job.Quality) || - string.Equals(job.Quality, "original", StringComparison.OrdinalIgnoreCase) || - string.Equals(job.Profile, "original", StringComparison.OrdinalIgnoreCase); - } - - public SyncJobOptions GetAudioOptions(SyncJobItem jobItem, SyncJob job) - { - return new SyncJobOptions + var options = GetSyncJobOptions(jobItem.TargetId, null, null); + + if (job.Bitrate.HasValue) { - ConversionOptions = new AudioOptions - { - Profile = GetDeviceProfile(jobItem.TargetId, null, null) - }, - IsConverting = !IsOriginalQuality(job) - }; + options.DeviceProfile.MaxStaticBitrate = job.Bitrate.Value; + } + + return options; } - public SyncJobOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) + public SyncJobOptions GetVideoOptions(SyncJobItem jobItem, SyncJob job) { - return new SyncJobOptions + var options = GetSyncJobOptions(jobItem.TargetId, job.Profile, job.Quality); + + if (job.Bitrate.HasValue) { - ConversionOptions = new VideoOptions - { - Profile = GetDeviceProfile(jobItem.TargetId, job.Profile, job.Quality) - }, - IsConverting = !IsOriginalQuality(job) - }; + options.DeviceProfile.MaxStaticBitrate = job.Bitrate.Value; + } + + return options; } - private DeviceProfile GetDeviceProfile(string targetId, string profile, string quality) + private SyncJobOptions GetSyncJobOptions(string targetId, string profile, string quality) { foreach (var provider in _providers) { @@ -1021,32 +1015,41 @@ namespace MediaBrowser.Server.Implementations.Sync { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { - return GetDeviceProfile(provider, target, profile, quality); + return GetSyncJobOptions(provider, target, profile, quality); } } } - return null; + return GetDefaultSyncJobOptions(profile, quality); } - private DeviceProfile GetDeviceProfile(ISyncProvider provider, SyncTarget target, string profile, string quality) + private SyncJobOptions GetSyncJobOptions(ISyncProvider provider, SyncTarget target, string profile, string quality) { var hasProfile = provider as IHasSyncQuality; if (hasProfile != null) { - return hasProfile.GetDeviceProfile(target, profile, quality); + return hasProfile.GetSyncJobOptions(target, profile, quality); } - return GetDeviceProfile(profile, quality); + return GetDefaultSyncJobOptions(profile, quality); } - private DeviceProfile GetDeviceProfile(string profile, string quality) + private SyncJobOptions GetDefaultSyncJobOptions(string profile, string quality) { var deviceProfile = new CloudSyncProfile(true, false); deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality); - return deviceProfile; + return new SyncJobOptions + { + DeviceProfile = deviceProfile, + IsConverting = IsConverting(profile, quality) + }; + } + + private bool IsConverting(string profile, string quality) + { + return !string.Equals(profile, "original", StringComparison.OrdinalIgnoreCase); } public IEnumerable GetQualityOptions(string targetId) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index 4257fcfb9..ae99c7a1e 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -1,5 +1,4 @@ -using System.Text; -using MediaBrowser.Controller; +using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; @@ -51,7 +50,7 @@ namespace MediaBrowser.Server.Implementations.Sync string[] queries = { - "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Profile TEXT, Quality TEXT, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, Category TEXT, ParentId TEXT, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", + "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Profile TEXT, Quality TEXT, Bitrate INT, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, Category TEXT, ParentId TEXT, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", "create index if not exists idx_SyncJobs on SyncJobs(Id)", "create table if not exists SyncJobItems (Id GUID PRIMARY KEY, ItemId TEXT, ItemName TEXT, MediaSourceId TEXT, JobId TEXT, TemporaryPath TEXT, OutputPath TEXT, Status TEXT, TargetId TEXT, DateCreated DateTime, Progress FLOAT, AdditionalFiles TEXT, MediaSource TEXT, IsMarkedForRemoval BIT, JobItemIndex INT)", @@ -66,7 +65,8 @@ namespace MediaBrowser.Server.Implementations.Sync _connection.RunQueries(queries, _logger); _connection.AddColumn(_logger, "SyncJobs", "Profile", "TEXT"); - + _connection.AddColumn(_logger, "SyncJobs", "Bitrate", "INT"); + PrepareStatements(); } @@ -84,13 +84,14 @@ namespace MediaBrowser.Server.Implementations.Sync // _insertJobCommand _insertJobCommand = _connection.CreateCommand(); - _insertJobCommand.CommandText = "insert into SyncJobs (Id, TargetId, Name, Profile, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Profile, @Quality, @Status, @Progress, @UserId, @ItemIds, @Category, @ParentId, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; + _insertJobCommand.CommandText = "insert into SyncJobs (Id, TargetId, Name, Profile, Quality, Bitrate, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Profile, @Quality, @Bitrate, @Status, @Progress, @UserId, @ItemIds, @Category, @ParentId, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; _insertJobCommand.Parameters.Add(_insertJobCommand, "@Id"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@TargetId"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Name"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Profile"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Quality"); + _insertJobCommand.Parameters.Add(_insertJobCommand, "@Bitrate"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Status"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@Progress"); _insertJobCommand.Parameters.Add(_insertJobCommand, "@UserId"); @@ -106,13 +107,14 @@ namespace MediaBrowser.Server.Implementations.Sync // _updateJobCommand _updateJobCommand = _connection.CreateCommand(); - _updateJobCommand.CommandText = "update SyncJobs set TargetId=@TargetId,Name=@Name,Profile=@Profile,Quality=@Quality,Status=@Status,Progress=@Progress,UserId=@UserId,ItemIds=@ItemIds,Category=@Category,ParentId=@ParentId,UnwatchedOnly=@UnwatchedOnly,ItemLimit=@ItemLimit,SyncNewContent=@SyncNewContent,DateCreated=@DateCreated,DateLastModified=@DateLastModified,ItemCount=@ItemCount where Id=@ID"; + _updateJobCommand.CommandText = "update SyncJobs set TargetId=@TargetId,Name=@Name,Profile=@Profile,Quality=@Quality,Bitrate=@Bitrate,Status=@Status,Progress=@Progress,UserId=@UserId,ItemIds=@ItemIds,Category=@Category,ParentId=@ParentId,UnwatchedOnly=@UnwatchedOnly,ItemLimit=@ItemLimit,SyncNewContent=@SyncNewContent,DateCreated=@DateCreated,DateLastModified=@DateLastModified,ItemCount=@ItemCount where Id=@ID"; _updateJobCommand.Parameters.Add(_updateJobCommand, "@Id"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@TargetId"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Name"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Profile"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Quality"); + _updateJobCommand.Parameters.Add(_updateJobCommand, "@Bitrate"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Status"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@Progress"); _updateJobCommand.Parameters.Add(_updateJobCommand, "@UserId"); @@ -167,7 +169,7 @@ namespace MediaBrowser.Server.Implementations.Sync _updateJobItemCommand.Parameters.Add(_updateJobItemCommand, "@JobItemIndex"); } - private const string BaseJobSelectText = "select Id, TargetId, Name, Profile, Quality, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; + private const string BaseJobSelectText = "select Id, TargetId, Name, Profile, Quality, Bitrate, Status, Progress, UserId, ItemIds, Category, ParentId, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; private const string BaseJobItemSelectText = "select Id, ItemId, ItemName, MediaSourceId, JobId, TemporaryPath, OutputPath, Status, TargetId, DateCreated, Progress, AdditionalFiles, MediaSource, IsMarkedForRemoval, JobItemIndex from SyncJobItems"; public SyncJob GetJob(string id) @@ -225,49 +227,54 @@ namespace MediaBrowser.Server.Implementations.Sync if (!reader.IsDBNull(5)) { - info.Status = (SyncJobStatus)Enum.Parse(typeof(SyncJobStatus), reader.GetString(5), true); + info.Bitrate = reader.GetInt32(5); } if (!reader.IsDBNull(6)) { - info.Progress = reader.GetDouble(6); + info.Status = (SyncJobStatus)Enum.Parse(typeof(SyncJobStatus), reader.GetString(6), true); } if (!reader.IsDBNull(7)) { - info.UserId = reader.GetString(7); + info.Progress = reader.GetDouble(7); } if (!reader.IsDBNull(8)) { - info.RequestedItemIds = reader.GetString(8).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); + info.UserId = reader.GetString(8); } if (!reader.IsDBNull(9)) { - info.Category = (SyncCategory)Enum.Parse(typeof(SyncCategory), reader.GetString(9), true); + info.RequestedItemIds = reader.GetString(9).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); } if (!reader.IsDBNull(10)) { - info.ParentId = reader.GetString(10); + info.Category = (SyncCategory)Enum.Parse(typeof(SyncCategory), reader.GetString(10), true); } if (!reader.IsDBNull(11)) { - info.UnwatchedOnly = reader.GetBoolean(11); + info.ParentId = reader.GetString(11); } if (!reader.IsDBNull(12)) { - info.ItemLimit = reader.GetInt32(12); + info.UnwatchedOnly = reader.GetBoolean(12); } - info.SyncNewContent = reader.GetBoolean(13); + if (!reader.IsDBNull(13)) + { + info.ItemLimit = reader.GetInt32(13); + } - info.DateCreated = reader.GetDateTime(14).ToUniversalTime(); - info.DateLastModified = reader.GetDateTime(15).ToUniversalTime(); - info.ItemCount = reader.GetInt32(16); + info.SyncNewContent = reader.GetBoolean(14); + + info.DateCreated = reader.GetDateTime(15).ToUniversalTime(); + info.DateLastModified = reader.GetDateTime(16).ToUniversalTime(); + info.ItemCount = reader.GetInt32(17); return info; } @@ -306,6 +313,7 @@ namespace MediaBrowser.Server.Implementations.Sync cmd.GetParameter(index++).Value = job.Name; cmd.GetParameter(index++).Value = job.Profile; cmd.GetParameter(index++).Value = job.Quality; + cmd.GetParameter(index++).Value = job.Bitrate; cmd.GetParameter(index++).Value = job.Status.ToString(); cmd.GetParameter(index++).Value = job.Progress; cmd.GetParameter(index++).Value = job.UserId; From 003886a4763154cac42628c7458f8b96e0c66602 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 15:22:04 -0400 Subject: [PATCH 134/169] fix web playback --- MediaBrowser.Api/Playback/MediaInfoService.cs | 2 +- .../Library/LibraryManager.cs | 2 +- .../Library/UserViewManager.cs | 23 ++++++++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs index e2d3caf5e..dfb5086b9 100644 --- a/MediaBrowser.Api/Playback/MediaInfoService.cs +++ b/MediaBrowser.Api/Playback/MediaInfoService.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Api.Playback { - [Route("/Items/{Id}/PlaybackInfo", "GET", Summary = "Gets live playback media info for an item")] + [Route("/Items/{Id}/MediaInfo", "GET", Summary = "Gets live playback media info for an item")] public class GetLiveMediaInfo : IReturn { [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index d7ffcf79a..c6de7b74b 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1673,7 +1673,7 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("30_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); + var id = GetNewItemId("31_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index 9f3c95e08..fb14628d8 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -52,8 +52,6 @@ namespace MediaBrowser.Server.Implementations.Library .OfType() .ToList(); - var list = new List(); - var excludeFolderIds = user.Configuration.ExcludeFoldersFromGrouping.Select(i => new Guid(i)).ToList(); var standaloneFolders = folders @@ -65,7 +63,21 @@ namespace MediaBrowser.Server.Implementations.Library .OfType() .ToList(); - list.AddRange(standaloneFolders); + var list = new List(); + + if (_config.Configuration.EnableUserSpecificUserViews) + { + foreach (var folder in standaloneFolders) + { + var collectionFolder = folder as ICollectionFolder; + var folderViewType = collectionFolder == null ? null : collectionFolder.CollectionType; + list.Add(await GetUserView(folder.Id, folder.Name, folderViewType, string.Empty, user, cancellationToken).ConfigureAwait(false)); + } + } + else + { + list.AddRange(standaloneFolders); + } if (foldersWithViewTypes.Any(i => string.Equals(i.CollectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)) || foldersWithViewTypes.Any(i => string.IsNullOrWhiteSpace(i.CollectionType))) @@ -169,6 +181,11 @@ namespace MediaBrowser.Server.Implementations.Library return _libraryManager.GetNamedView(user, name, type, sortName, cancellationToken); } + public Task GetUserView(Guid parentId, string name, string type, string sortName, User user, CancellationToken cancellationToken) + { + return _libraryManager.GetNamedView(user, name, parentId.ToString("N"), type, sortName, cancellationToken); + } + public List>> GetLatestItems(LatestItemsQuery request) { var user = _userManager.GetUserById(request.UserId); From 773fd729082876457a566ec6d83cfff694abcd28 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 15:44:46 -0400 Subject: [PATCH 135/169] update dynamic images --- MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index c6de7b74b..2c62798e1 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1706,7 +1706,7 @@ namespace MediaBrowser.Server.Implementations.Library isNew = true; } - var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 24; + var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 6; if (refresh) { From 4506d3faa1670f3a1fdad07b0aa29a104147fc8e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 21:48:25 -0400 Subject: [PATCH 136/169] update dynamic images --- MediaBrowser.Api/BaseApiService.cs | 25 ++++++++++++++++ MediaBrowser.Api/Images/ImageService.cs | 29 ++++++++++-------- MediaBrowser.Api/ItemUpdateService.cs | 10 +++---- MediaBrowser.Api/UserService.cs | 22 +------------- MediaBrowser.Model/Dlna/StreamBuilder.cs | 30 +++++++------------ .../FolderImages/DefaultImageProvider.cs | 16 +++++----- .../Movies/LiveTvMovieDbProvider.cs | 7 +---- .../Movies/MovieDbImageProvider.cs | 4 +-- .../LiveTv/LiveTvManager.cs | 17 ++++++----- .../Photos/BaseDynamicImageProvider.cs | 10 +++---- .../UserViews/DynamicImageProvider.cs | 9 +++++- .../ApplicationHost.cs | 2 +- 12 files changed, 90 insertions(+), 91 deletions(-) diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index 91e1c7d9a..e009ccfac 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -41,6 +41,8 @@ namespace MediaBrowser.Api public ISessionContext SessionContext { get; set; } public IAuthorizationContext AuthorizationContext { get; set; } + public IUserManager UserManager { get; set; } + public string GetHeader(string name) { return Request.Headers[name]; @@ -73,6 +75,29 @@ namespace MediaBrowser.Api return ResultFactory.GetOptimizedResultUsingCache(Request, cacheKey, lastDateModified, cacheDuration, factoryFn); } + protected void AssertCanUpdateUser(string userId) + { + var auth = AuthorizationContext.GetAuthorizationInfo(Request); + + var authenticatedUser = UserManager.GetUserById(auth.UserId); + + // If they're going to update the record of another user, they must be an administrator + if (!string.Equals(userId, auth.UserId, StringComparison.OrdinalIgnoreCase)) + { + if (!authenticatedUser.Policy.IsAdministrator) + { + throw new SecurityException("Unauthorized access."); + } + } + else + { + if (!authenticatedUser.Policy.EnableUserPreferenceAccess) + { + throw new SecurityException("Unauthorized access."); + } + } + } + /// /// To the optimized serialized result using cache. /// diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 0a39b51c3..6afd88515 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -56,7 +56,7 @@ namespace MediaBrowser.Api.Images /// Class UpdateItemImageIndex /// [Route("/Items/{Id}/Images/{Type}/{Index}/Index", "POST", Summary = "Updates the index for an item image")] - [Authenticated] + [Authenticated(Roles = "admin")] public class UpdateItemImageIndex : IReturnVoid { /// @@ -64,7 +64,7 @@ namespace MediaBrowser.Api.Images /// /// The id. [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid Id { get; set; } + public string Id { get; set; } /// /// Gets or sets the type of the image. @@ -143,7 +143,7 @@ namespace MediaBrowser.Api.Images /// /// The id. [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")] - public Guid Id { get; set; } + public string Id { get; set; } } /// @@ -151,7 +151,7 @@ namespace MediaBrowser.Api.Images /// [Route("/Items/{Id}/Images/{Type}", "DELETE")] [Route("/Items/{Id}/Images/{Type}/{Index}", "DELETE")] - [Authenticated] + [Authenticated(Roles = "admin")] public class DeleteItemImage : DeleteImageRequest, IReturnVoid { /// @@ -159,7 +159,7 @@ namespace MediaBrowser.Api.Images /// /// The id. [ApiMember(Name = "Id", Description = "Item Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid Id { get; set; } + public string Id { get; set; } } /// @@ -175,7 +175,7 @@ namespace MediaBrowser.Api.Images /// /// The id. [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")] - public Guid Id { get; set; } + public string Id { get; set; } } /// @@ -191,7 +191,7 @@ namespace MediaBrowser.Api.Images /// /// The id. [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] - public Guid Id { get; set; } + public string Id { get; set; } /// /// The raw Http Request Input Stream @@ -206,7 +206,7 @@ namespace MediaBrowser.Api.Images [Route("/Items/{Id}/Images/{Type}", "POST")] [Route("/Items/{Id}/Images/{Type}/{Index}", "POST")] [Api(Description = "Posts an item image")] - [Authenticated] + [Authenticated(Roles = "admin")] public class PostItemImage : DeleteImageRequest, IRequiresRequestStream, IReturnVoid { /// @@ -417,11 +417,12 @@ namespace MediaBrowser.Api.Images /// The request. public void Post(PostUserImage request) { - var id = new Guid(GetPathValue(1)); + var userId = GetPathValue(1); + AssertCanUpdateUser(userId); request.Type = (ImageType)Enum.Parse(typeof(ImageType), GetPathValue(3), true); - var item = _userManager.GetUserById(id); + var item = _userManager.GetUserById(userId); var task = PostImage(item, request.RequestStream, request.Type, Request.ContentType); @@ -434,7 +435,7 @@ namespace MediaBrowser.Api.Images /// The request. public void Post(PostItemImage request) { - var id = new Guid(GetPathValue(1)); + var id = GetPathValue(1); request.Type = (ImageType)Enum.Parse(typeof(ImageType), GetPathValue(3), true); @@ -451,7 +452,10 @@ namespace MediaBrowser.Api.Images /// The request. public void Delete(DeleteUserImage request) { - var item = _userManager.GetUserById(request.Id); + var userId = request.Id; + AssertCanUpdateUser(userId); + + var item = _userManager.GetUserById(userId); var task = item.DeleteImage(request.Type, request.Index ?? 0); @@ -492,7 +496,6 @@ namespace MediaBrowser.Api.Images /// Index of the current. /// The new index. /// Task. - /// The change index operation is only applicable to backdrops and screenshots private Task UpdateItemIndex(IHasImages item, ImageType type, int currentIndex, int newIndex) { return item.SwapImages(type, currentIndex, newIndex); diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 86689f5cf..013838091 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -41,8 +41,8 @@ namespace MediaBrowser.Api [ApiMember(Name = "ContentType", Description = "The content type of the item", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] public string ContentType { get; set; } } - - [Authenticated] + + [Authenticated(Roles = "admin")] public class ItemUpdateService : BaseApiService { private readonly ILibraryManager _libraryManager; @@ -61,7 +61,7 @@ namespace MediaBrowser.Api public object Get(GetMetadataEditorInfo request) { var item = _libraryManager.GetItemById(request.ItemId); - + var info = new MetadataEditorInfo { ParentalRatingOptions = _localizationManager.GetParentalRatings().ToList(), @@ -131,7 +131,7 @@ namespace MediaBrowser.Api Value = "" }); } - + list.Add(new NameValuePair { Name = "FolderTypeMovies", @@ -406,7 +406,7 @@ namespace MediaBrowser.Api .Select(i => i.Name) .ToList(); } - + var song = item as Audio; if (song != null) { diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index c17f33348..cbb2a1799 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -253,18 +253,14 @@ namespace MediaBrowser.Api /// The _user manager /// private readonly IUserManager _userManager; - private readonly IDtoService _dtoService; private readonly ISessionManager _sessionMananger; private readonly IServerConfigurationManager _config; private readonly INetworkManager _networkManager; private readonly IDeviceManager _deviceManager; - public IAuthorizationContext AuthorizationContext { get; set; } - - public UserService(IUserManager userManager, IDtoService dtoService, ISessionManager sessionMananger, IServerConfigurationManager config, INetworkManager networkManager, IDeviceManager deviceManager) + public UserService(IUserManager userManager, ISessionManager sessionMananger, IServerConfigurationManager config, INetworkManager networkManager, IDeviceManager deviceManager) { _userManager = userManager; - _dtoService = dtoService; _sessionMananger = sessionMananger; _config = config; _networkManager = networkManager; @@ -591,22 +587,6 @@ namespace MediaBrowser.Api Task.WaitAll(task); } - private void AssertCanUpdateUser(string userId) - { - var auth = AuthorizationContext.GetAuthorizationInfo(Request); - - // If they're going to update the record of another user, they must be an administrator - if (!string.Equals(userId, auth.UserId, StringComparison.OrdinalIgnoreCase)) - { - var authenticatedUser = _userManager.GetUserById(auth.UserId); - - if (!authenticatedUser.Policy.IsAdministrator) - { - throw new SecurityException("Unauthorized access."); - } - } - } - public void Post(UpdateUserPolicy request) { var task = UpdateUserPolicy(request); diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index b798da748..5d0cd5203 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -25,19 +25,14 @@ namespace MediaBrowser.Model.Dlna { ValidateAudioInput(options); - List mediaSources = options.MediaSources; - - // If the client wants a specific media source, filter now - if (!string.IsNullOrEmpty(options.MediaSourceId)) + List mediaSources = new List(); + foreach (MediaSourceInfo i in options.MediaSources) { - List newMediaSources = new List(); - foreach (MediaSourceInfo i in mediaSources) + if (!string.IsNullOrEmpty(options.MediaSourceId) || + StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) { - if (StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) - newMediaSources.Add(i); + mediaSources.Add(i); } - - mediaSources = newMediaSources; } List streams = new List(); @@ -63,19 +58,14 @@ namespace MediaBrowser.Model.Dlna { ValidateInput(options); - List mediaSources = options.MediaSources; - - // If the client wants a specific media source, filter now - if (!string.IsNullOrEmpty(options.MediaSourceId)) + List mediaSources = new List(); + foreach (MediaSourceInfo i in options.MediaSources) { - List newMediaSources = new List(); - foreach (MediaSourceInfo i in mediaSources) + if (!string.IsNullOrEmpty(options.MediaSourceId) || + StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) { - if (StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) - newMediaSources.Add(i); + mediaSources.Add(i); } - - mediaSources = newMediaSources; } List streams = new List(); diff --git a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs index 73a1de889..3550ee688 100644 --- a/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs +++ b/MediaBrowser.Providers/FolderImages/DefaultImageProvider.cs @@ -77,35 +77,35 @@ namespace MediaBrowser.Providers.FolderImages if (string.Equals(viewType, CollectionType.Books, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "books.png"; + return null; } if (string.Equals(viewType, CollectionType.Games, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "games.png"; + return null; } if (string.Equals(viewType, CollectionType.Music, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "music.png"; + return null; } if (string.Equals(viewType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "photos.png"; + return null; } if (string.Equals(viewType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "tv.png"; + return null; } if (string.Equals(viewType, CollectionType.Channels, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "channels.png"; + return null; } if (string.Equals(viewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "livetv.png"; + return null; } if (string.Equals(viewType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase)) { - return urlPrefix + "movies.png"; + return null; } if (isSubView) diff --git a/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs b/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs index 326450ad4..a2d35b500 100644 --- a/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/LiveTvMovieDbProvider.cs @@ -2,14 +2,13 @@ using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Providers; -using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - public class LiveTvMovieDbProvider : IRemoteMetadataProvider, IDisposable, IHasOrder + public class LiveTvMovieDbProvider : IRemoteMetadataProvider, IHasOrder { public Task> GetSearchResults(LiveTvProgramLookupInfo searchInfo, CancellationToken cancellationToken) { @@ -31,10 +30,6 @@ namespace MediaBrowser.Providers.Movies return MovieDbProvider.Current.GetImageResponse(url, cancellationToken); } - public void Dispose() - { - } - public int Order { get { return 1; } diff --git a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs index 19b4939dd..192addfb8 100644 --- a/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbImageProvider.cs @@ -61,9 +61,7 @@ namespace MediaBrowser.Providers.Movies public IEnumerable GetSupportedImages(IHasImages item) { - var channelItem = item as ChannelVideoItem; - - if (channelItem != null) + if (item is ChannelVideoItem || item is LiveTvProgram) { // Too many channel items to allow backdrops here return new List diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 6b66ed9b8..41d8604de 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -37,7 +37,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv public class LiveTvManager : ILiveTvManager, IDisposable { private readonly IServerConfigurationManager _config; - private readonly IFileSystem _fileSystem; private readonly ILogger _logger; private readonly IItemRepository _itemRepo; private readonly IUserManager _userManager; @@ -63,10 +62,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(1, 1); - public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, IFileSystem fileSystem, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer, IProviderManager providerManager) + public LiveTvManager(IApplicationHost appHost, IServerConfigurationManager config, ILogger logger, IItemRepository itemRepo, IImageProcessor imageProcessor, IUserDataManager userDataManager, IDtoService dtoService, IUserManager userManager, ILibraryManager libraryManager, ITaskManager taskManager, ILocalizationManager localization, IJsonSerializer jsonSerializer, IProviderManager providerManager) { _config = config; - _fileSystem = fileSystem; _logger = logger; _itemRepo = itemRepo; _userManager = userManager; @@ -474,11 +472,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv return item; } - private LiveTvProgram GetProgram(ProgramInfo info, ChannelType channelType, string serviceName, CancellationToken cancellationToken) + private async Task GetProgram(ProgramInfo info, ChannelType channelType, string serviceName, CancellationToken cancellationToken) { var id = _tvDtoService.GetInternalProgramId(serviceName, info.Id); - var item = _itemRepo.RetrieveItem(id) as LiveTvProgram; + var item = _libraryManager.GetItemById(id) as LiveTvProgram; if (item == null) { @@ -521,6 +519,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv item.StartDate = info.StartDate; item.ProductionYear = info.ProductionYear; + await item.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + return item; } @@ -992,9 +992,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv var channelPrograms = await service.GetProgramsAsync(currentChannel.ExternalId, start, end, cancellationToken).ConfigureAwait(false); - var programEntities = channelPrograms.Select(program => GetProgram(program, currentChannel.ChannelType, service.Name, cancellationToken)); - - programs.AddRange(programEntities); + foreach (var program in channelPrograms) + { + programs.Add(await GetProgram(program, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false)); + } } catch (OperationCanceledException) { diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index b3b79ae7e..4ff42c1fd 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -60,7 +60,7 @@ namespace MediaBrowser.Server.Implementations.Photos protected async Task FetchAsync(IHasImages item, ImageType imageType, MetadataRefreshOptions options, CancellationToken cancellationToken) { var items = await GetItemsWithImages(item).ConfigureAwait(false); - var cacheKey = GetConfigurationCacheKey(items); + var cacheKey = GetConfigurationCacheKey(items, item.Name); if (!HasChanged(item, imageType, cacheKey)) { @@ -110,7 +110,7 @@ namespace MediaBrowser.Server.Implementations.Photos public async Task GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken) { var items = await GetItemsWithImages(item).ConfigureAwait(false); - var cacheKey = GetConfigurationCacheKey(items); + var cacheKey = GetConfigurationCacheKey(items, item.Name); var result = await CreateImageAsync(item, items, type, 0).ConfigureAwait(false); @@ -126,9 +126,9 @@ namespace MediaBrowser.Server.Implementations.Photos protected abstract Task> GetItemsWithImages(IHasImages item); private const string Version = "3"; - protected string GetConfigurationCacheKey(List items) + protected string GetConfigurationCacheKey(List items, string itemName) { - return (Version + "_" + string.Join(",", items.Select(i => i.Id.ToString("N")).ToArray())).GetMD5().ToString("N"); + return (Version + "_" + (itemName ?? string.Empty) + "_" + string.Join(",", items.Select(i => i.Id.ToString("N")).ToArray())).GetMD5().ToString("N"); } protected Task GetThumbCollage(List items) @@ -185,7 +185,7 @@ namespace MediaBrowser.Server.Implementations.Photos } var items = GetItemsWithImages(item).Result; - var cacheKey = GetConfigurationCacheKey(items); + var cacheKey = GetConfigurationCacheKey(items, item.Name); return HasChanged(item, ImageType.Primary, cacheKey) || HasChanged(item, ImageType.Thumb, cacheKey); } diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index c47a116ca..6ea3233f2 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -227,7 +227,9 @@ namespace MediaBrowser.Server.Implementations.UserViews CollectionType.BoxSets, CollectionType.Playlists, CollectionType.Channels, - CollectionType.LiveTv + CollectionType.LiveTv, + CollectionType.Books, + CollectionType.Photos }; return collectionStripViewTypes.Contains(view.ViewType ?? string.Empty); @@ -235,6 +237,11 @@ namespace MediaBrowser.Server.Implementations.UserViews protected override Task CreateImageAsync(IHasImages item, List itemsWithImages, ImageType imageType, int imageIndex) { + if (itemsWithImages.Count == 0) + { + return null; + } + var view = (UserView)item; if (imageType == ImageType.Primary && IsUsingCollectionStrip(view)) { diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index e80f94e15..0173000cf 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -495,7 +495,7 @@ namespace MediaBrowser.Server.Startup.Common PlaylistManager = new PlaylistManager(LibraryManager, FileSystemManager, LibraryMonitor, LogManager.GetLogger("PlaylistManager"), UserManager); RegisterSingleInstance(PlaylistManager); - LiveTvManager = new LiveTvManager(this, ServerConfigurationManager, FileSystemManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer, ProviderManager); + LiveTvManager = new LiveTvManager(this, ServerConfigurationManager, Logger, ItemRepository, ImageProcessor, UserDataManager, DtoService, UserManager, LibraryManager, TaskManager, LocalizationManager, JsonSerializer, ProviderManager); RegisterSingleInstance(LiveTvManager); UserViewManager = new UserViewManager(LibraryManager, LocalizationManager, UserManager, ChannelManager, LiveTvManager, PlaylistManager, CollectionManager, ServerConfigurationManager); From a7dfd1f6befce473b969029a98a49e803b48b54b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 22:49:13 -0400 Subject: [PATCH 137/169] update sync profile --- MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 59ecf1c98..5540c3d59 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -1037,7 +1037,9 @@ namespace MediaBrowser.Server.Implementations.Sync private SyncJobOptions GetDefaultSyncJobOptions(string profile, string quality) { - var deviceProfile = new CloudSyncProfile(true, false); + var supportsAc3 = string.Equals(profile, "general", StringComparison.OrdinalIgnoreCase); + + var deviceProfile = new CloudSyncProfile(supportsAc3, false); deviceProfile.MaxStaticBitrate = SyncHelper.AdjustBitrate(deviceProfile.MaxStaticBitrate, quality); return new SyncJobOptions From e8161cf8acfb1ec6925cc670808e9d66c279daec Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 15 Mar 2015 23:41:12 -0400 Subject: [PATCH 138/169] update dynamic images --- MediaBrowser.Api/MediaBrowser.Api.csproj | 3 +- .../Playback/Dash/ManifestBuilder.cs | 220 +++++++++++++++ .../Playback/{Hls => Dash}/MpegDashService.cs | 260 ++---------------- .../Entities/UserViewBuilder.cs | 5 + .../Library/LibraryManager.cs | 2 +- .../UserViews/DynamicImageProvider.cs | 10 +- 6 files changed, 252 insertions(+), 248 deletions(-) create mode 100644 MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs rename MediaBrowser.Api/Playback/{Hls => Dash}/MpegDashService.cs (70%) diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index 503f9927c..14d0f13fb 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -79,7 +79,8 @@ - + + diff --git a/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs new file mode 100644 index 000000000..20ea7893c --- /dev/null +++ b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs @@ -0,0 +1,220 @@ +using System; +using System.Globalization; +using System.Security; +using System.Text; + +namespace MediaBrowser.Api.Playback.Dash +{ + public class ManifestBuilder + { + protected readonly CultureInfo UsCulture = new CultureInfo("en-US"); + + public string GetManifestText(StreamState state, string playlistUrl) + { + var builder = new StringBuilder(); + + var time = TimeSpan.FromTicks(state.RunTimeTicks.Value); + + var duration = "PT" + time.Hours.ToString("00", UsCulture) + "H" + time.Minutes.ToString("00", UsCulture) + "M" + time.Seconds.ToString("00", UsCulture) + ".00S"; + + builder.Append(""); + + builder.AppendFormat( + "", + duration); + + builder.Append(""); + builder.Append(""); + + builder.Append(""); + builder.Append(GetVideoAdaptationSet(state, playlistUrl)); + builder.Append(GetAudioAdaptationSet(state, playlistUrl)); + builder.Append(""); + + builder.Append(""); + + return builder.ToString(); + } + + private string GetVideoAdaptationSet(StreamState state, string playlistUrl) + { + var builder = new StringBuilder(); + + builder.Append(""); + builder.Append(GetVideoRepresentationOpenElement(state)); + + AppendSegmentList(state, builder, "video", playlistUrl); + + builder.Append(""); + builder.Append(""); + + return builder.ToString(); + } + + private string GetAudioAdaptationSet(StreamState state, string playlistUrl) + { + var builder = new StringBuilder(); + + builder.Append(""); + builder.Append(GetAudioRepresentationOpenElement(state)); + + builder.Append(""); + + AppendSegmentList(state, builder, "audio", playlistUrl); + + builder.Append(""); + builder.Append(""); + + return builder.ToString(); + } + + private string GetVideoRepresentationOpenElement(StreamState state) + { + var codecs = GetVideoCodecDescriptor(state); + + var mime = "video/mp4"; + + var xml = "= 4.1) + { + return "avc1.640028"; + } + + if (level >= 4) + { + return "avc1.640028"; + } + + return "avc1.64001f"; + } + + if (profile.IndexOf("main", StringComparison.OrdinalIgnoreCase) != -1) + { + if (level >= 4) + { + return "avc1.4d0028"; + } + + if (level >= 3.1) + { + return "avc1.4d001f"; + } + + return "avc1.4d001e"; + } + + if (level >= 3.1) + { + return "avc1.42001f"; + } + + return "avc1.42E01E"; + } + + private string GetAudioCodecDescriptor(StreamState state) + { + // https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html + + if (string.Equals(state.OutputAudioCodec, "mp3", StringComparison.OrdinalIgnoreCase)) + { + return "mp4a.40.34"; + } + + // AAC 5ch + if (state.OutputAudioChannels.HasValue && state.OutputAudioChannels.Value >= 5) + { + return "mp4a.40.5"; + } + + // AAC 2ch + return "mp4a.40.2"; + } + + private void AppendSegmentList(StreamState state, StringBuilder builder, string type, string playlistUrl) + { + var extension = ".m4s"; + + var seconds = TimeSpan.FromTicks(state.RunTimeTicks ?? 0).TotalSeconds; + + var queryStringIndex = playlistUrl.IndexOf('?'); + var queryString = queryStringIndex == -1 ? string.Empty : playlistUrl.Substring(queryStringIndex); + + var index = 0; + var duration = 1000000 * state.SegmentLength; + builder.AppendFormat("", duration.ToString(CultureInfo.InvariantCulture)); + + while (seconds > 0) + { + var segmentUrl = string.Format("dash/{3}/{0}{1}{2}", + index.ToString(UsCulture), + extension, + SecurityElement.Escape(queryString), + type); + + if (index == 0) + { + builder.AppendFormat("", segmentUrl); + } + else + { + builder.AppendFormat("", segmentUrl); + } + + seconds -= state.SegmentLength; + index++; + } + builder.Append(""); + } + } +} diff --git a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs similarity index 70% rename from MediaBrowser.Api/Playback/Hls/MpegDashService.cs rename to MediaBrowser.Api/Playback/Dash/MpegDashService.cs index 3625b3cdf..4ba32575c 100644 --- a/MediaBrowser.Api/Playback/Hls/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Api.Playback.Hls; +using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; @@ -15,13 +16,11 @@ using System.Collections.Generic; using System.Globalization; using System.IO; using System.Linq; -using System.Security; -using System.Text; using System.Threading; using System.Threading.Tasks; using MimeTypes = MediaBrowser.Model.Net.MimeTypes; -namespace MediaBrowser.Api.Playback.Hls +namespace MediaBrowser.Api.Playback.Dash { /// /// Options is needed for chromecast. Threw Head in there since it's related @@ -88,16 +87,6 @@ namespace MediaBrowser.Api.Playback.Hls private async Task GetAsync(GetMasterManifest request, string method) { - if (string.Equals(request.AudioCodec, "copy", StringComparison.OrdinalIgnoreCase)) - { - throw new ArgumentException("Audio codec copy is not allowed here."); - } - - if (string.Equals(request.VideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) - { - throw new ArgumentException("Video codec copy is not allowed here."); - } - if (string.IsNullOrEmpty(request.MediaSourceId)) { throw new ArgumentException("MediaSourceId is required"); @@ -109,225 +98,17 @@ namespace MediaBrowser.Api.Playback.Hls if (string.Equals(method, "GET", StringComparison.OrdinalIgnoreCase)) { - playlistText = GetManifestText(state); + playlistText = new ManifestBuilder().GetManifestText(state, Request.RawUrl); } return ResultFactory.GetResult(playlistText, MimeTypes.GetMimeType("playlist.mpd"), new Dictionary()); } - private string GetManifestText(StreamState state) - { - var builder = new StringBuilder(); - - var time = TimeSpan.FromTicks(state.RunTimeTicks.Value); - - var duration = "PT" + time.Hours.ToString("00", UsCulture) + "H" + time.Minutes.ToString("00", UsCulture) + "M" + time.Seconds.ToString("00", UsCulture) + ".00S"; - - builder.Append(""); - - builder.AppendFormat( - "", - duration); - - builder.Append(""); - builder.Append(""); - - builder.Append(""); - builder.Append(GetVideoAdaptationSet(state)); - builder.Append(GetAudioAdaptationSet(state)); - builder.Append(""); - - builder.Append(""); - - return builder.ToString(); - } - - private string GetVideoAdaptationSet(StreamState state) - { - var builder = new StringBuilder(); - - builder.Append(""); - builder.Append(GetVideoRepresentationOpenElement(state)); - - AppendSegmentList(state, builder, "video"); - - builder.Append(""); - builder.Append(""); - - return builder.ToString(); - } - - private string GetAudioAdaptationSet(StreamState state) - { - var builder = new StringBuilder(); - - builder.Append(""); - builder.Append(GetAudioRepresentationOpenElement(state)); - - builder.Append(""); - - AppendSegmentList(state, builder, "audio"); - - builder.Append(""); - builder.Append(""); - - return builder.ToString(); - } - - private string GetVideoRepresentationOpenElement(StreamState state) - { - var codecs = GetVideoCodecDescriptor(state); - - var mime = "video/mp4"; - - var xml = "= 4.1) - { - return "avc1.640028"; - } - - if (level >= 4) - { - return "avc1.640028"; - } - - return "avc1.64001f"; - } - - if (profile.IndexOf("main", StringComparison.OrdinalIgnoreCase) != -1) - { - if (level >= 4) - { - return "avc1.4d0028"; - } - - if (level >= 3.1) - { - return "avc1.4d001f"; - } - - return "avc1.4d001e"; - } - - if (level >= 3.1) - { - return "avc1.42001f"; - } - - return "avc1.42E01E"; - } - - private string GetAudioCodecDescriptor(StreamState state) - { - // https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html - - if (string.Equals(state.OutputAudioCodec, "mp3", StringComparison.OrdinalIgnoreCase)) - { - return "mp4a.40.34"; - } - - // AAC 5ch - if (state.OutputAudioChannels.HasValue && state.OutputAudioChannels.Value >= 5) - { - return "mp4a.40.5"; - } - - // AAC 2ch - return "mp4a.40.2"; - } - public object Get(GetDashSegment request) { return GetDynamicSegment(request, request.SegmentId, request.SegmentType).Result; } - private void AppendSegmentList(StreamState state, StringBuilder builder, string type) - { - var extension = GetSegmentFileExtension(state); - - var seconds = TimeSpan.FromTicks(state.RunTimeTicks ?? 0).TotalSeconds; - - var queryStringIndex = Request.RawUrl.IndexOf('?'); - var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex); - - var index = 0; - var duration = 1000000 * state.SegmentLength; - builder.AppendFormat("", duration.ToString(CultureInfo.InvariantCulture)); - - while (seconds > 0) - { - var segmentUrl = string.Format("dash/{3}/{0}{1}{2}", - index.ToString(UsCulture), - extension, - SecurityElement.Escape(queryString), - type); - - if (index == 0) - { - builder.AppendFormat("", segmentUrl); - } - else - { - builder.AppendFormat("", segmentUrl); - } - - seconds -= state.SegmentLength; - index++; - } - builder.Append(""); - } - private async Task GetDynamicSegment(VideoStreamRequest request, string segmentId, string segmentType) { if ((request.StartTimeTicks ?? 0) > 0) @@ -616,24 +397,6 @@ namespace MediaBrowser.Api.Playback.Hls } } - protected override int GetStartNumber(StreamState state) - { - return GetStartNumber(state.VideoRequest); - } - - private int GetStartNumber(VideoStreamRequest request) - { - var segmentId = "0"; - - var segmentRequest = request as GetDynamicHlsVideoSegment; - if (segmentRequest != null) - { - segmentId = segmentRequest.SegmentId; - } - - return int.Parse(segmentId, NumberStyles.Integer, UsCulture); - } - private string GetSegmentPath(string playlist, string segmentType, string segmentExtension, int index) { var folder = Path.GetDirectoryName(playlist); @@ -751,6 +514,21 @@ namespace MediaBrowser.Api.Playback.Hls return args; } + //private string GetCurrentTranscodingIndex(string outputPath) + //{ + + //} + + //private string GetNextTranscodingIndex(string outputPath) + //{ + + //} + + //private string GetActualPlaylistPath(string outputPath, string transcodingIndex) + //{ + + //} + /// /// Gets the segment file extension. /// diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 12eae9a75..2f182273b 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -112,6 +112,11 @@ namespace MediaBrowser.Controller.Entities return GetResult(result, queryParent, query); } + case CollectionType.Books: + case CollectionType.Photos: + case CollectionType.HomeVideos: + return GetResult(queryParent.GetChildren(user, true), queryParent, query); + case CollectionType.Folders: return GetResult(user.RootFolder.GetChildren(user, true), queryParent, query); diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 2c62798e1..43c985f33 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1673,7 +1673,7 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("31_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); + var id = GetNewItemId("35_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index 6ea3233f2..e213327ea 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -237,14 +237,14 @@ namespace MediaBrowser.Server.Implementations.UserViews protected override Task CreateImageAsync(IHasImages item, List itemsWithImages, ImageType imageType, int imageIndex) { - if (itemsWithImages.Count == 0) - { - return null; - } - var view = (UserView)item; if (imageType == ImageType.Primary && IsUsingCollectionStrip(view)) { + if (itemsWithImages.Count == 0 && !string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase)) + { + return null; + } + var stream = new StripCollageBuilder(ApplicationPaths).BuildThumbCollage(GetStripCollageImagePaths(itemsWithImages, view.ViewType), item.Name, 960, 540); return Task.FromResult(stream); } From caa223e1db3614e0aaf2e1a691e1943341d16a03 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 00:07:46 -0400 Subject: [PATCH 139/169] update mpeg dash --- .../Playback/Dash/ManifestBuilder.cs | 4 +- .../Playback/Dash/MpegDashService.cs | 69 +++++++------------ .../Playback/Hls/DynamicHlsService.cs | 9 +-- 3 files changed, 29 insertions(+), 53 deletions(-) diff --git a/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs index 20ea7893c..58adacb79 100644 --- a/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs +++ b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs @@ -43,7 +43,7 @@ namespace MediaBrowser.Api.Playback.Dash builder.Append(""); builder.Append(GetVideoRepresentationOpenElement(state)); - AppendSegmentList(state, builder, "video", playlistUrl); + AppendSegmentList(state, builder, "0", playlistUrl); builder.Append(""); builder.Append(""); @@ -60,7 +60,7 @@ namespace MediaBrowser.Api.Playback.Dash builder.Append(""); - AppendSegmentList(state, builder, "audio", playlistUrl); + AppendSegmentList(state, builder, "1", playlistUrl); builder.Append(""); builder.Append(""); diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index 4ba32575c..f24061c3f 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Api.Playback.Dash } } - [Route("/Videos/{Id}/dash/{SegmentType}/{SegmentId}.m4s", "GET")] + [Route("/Videos/{Id}/dash/{RepresentationId}/{SegmentId}.m4s", "GET")] public class GetDashSegment : VideoStreamRequest { /// @@ -47,10 +47,10 @@ namespace MediaBrowser.Api.Playback.Dash public string SegmentId { get; set; } /// - /// Gets or sets the type of the segment. + /// Gets or sets the representation identifier. /// - /// The type of the segment. - public string SegmentType { get; set; } + /// The representation identifier. + public string RepresentationId { get; set; } } public class MpegDashService : BaseHlsService @@ -106,10 +106,10 @@ namespace MediaBrowser.Api.Playback.Dash public object Get(GetDashSegment request) { - return GetDynamicSegment(request, request.SegmentId, request.SegmentType).Result; + return GetDynamicSegment(request, request.SegmentId, request.RepresentationId).Result; } - private async Task GetDynamicSegment(VideoStreamRequest request, string segmentId, string segmentType) + private async Task GetDynamicSegment(VideoStreamRequest request, string segmentId, string representationId) { if ((request.StartTimeTicks ?? 0) > 0) { @@ -127,7 +127,7 @@ namespace MediaBrowser.Api.Playback.Dash var segmentExtension = GetSegmentFileExtension(state); - var segmentPath = GetSegmentPath(playlistPath, segmentType, segmentExtension, index); + var segmentPath = GetSegmentPath(playlistPath, representationId, segmentExtension, index); var segmentLength = state.SegmentLength; TranscodingJob job = null; @@ -248,7 +248,7 @@ namespace MediaBrowser.Api.Playback.Dash CancellationToken cancellationToken) { // If all transcoding has completed, just return immediately - if (!IsTranscoding(playlistPath)) + if (transcodingJob != null && transcodingJob.HasExited) { return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } @@ -327,13 +327,6 @@ namespace MediaBrowser.Api.Playback.Dash }); } - private bool IsTranscoding(string playlistPath) - { - var job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - - return job != null && !job.HasExited; - } - public int? GetCurrentTranscodingIndex(string playlist, string segmentExtension) { var file = GetLastTranscodingFile(playlist, segmentExtension, FileSystem); @@ -397,25 +390,12 @@ namespace MediaBrowser.Api.Playback.Dash } } - private string GetSegmentPath(string playlist, string segmentType, string segmentExtension, int index) + private string GetSegmentPath(string playlist, string representationId, string segmentExtension, int index) { var folder = Path.GetDirectoryName(playlist); - var id = string.Equals(segmentType, "video", StringComparison.OrdinalIgnoreCase) - ? "0" - : "1"; - - string filename; - - if (index == 0) - { - filename = "init-stream" + id + segmentExtension; - } - else - { - var number = index.ToString("00000", CultureInfo.InvariantCulture); - filename = "chunk-stream" + id + "-" + number + segmentExtension; - } + var number = index.ToString("00000", CultureInfo.InvariantCulture); + var filename = "chunk-stream" + representationId + "-" + number + segmentExtension; return Path.Combine(folder, filename); } @@ -500,7 +480,7 @@ namespace MediaBrowser.Api.Playback.Dash var inputModifier = GetInputModifier(state); - var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts {5} -f dash -use_template 0 -min_seg_duration {6} -y \"{7}\"", + var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts {5} -f dash -init_seg_name \"chunk-stream$RepresentationID$-00000.m4s\" -use_template 0 -min_seg_duration {6} -y \"{7}\"", inputModifier, GetInputArgument(transcodingJobId, state), threads, @@ -514,20 +494,23 @@ namespace MediaBrowser.Api.Playback.Dash return args; } - //private string GetCurrentTranscodingIndex(string outputPath) - //{ + protected override int GetStartNumber(StreamState state) + { + return GetStartNumber(state.VideoRequest); + } - //} + private int GetStartNumber(VideoStreamRequest request) + { + var segmentId = "0"; - //private string GetNextTranscodingIndex(string outputPath) - //{ - - //} + var segmentRequest = request as GetDashSegment; + if (segmentRequest != null) + { + segmentId = segmentRequest.SegmentId; + } - //private string GetActualPlaylistPath(string outputPath, string transcodingIndex) - //{ - - //} + return int.Parse(segmentId, NumberStyles.Integer, UsCulture); + } /// /// Gets the segment file extension. diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 35ecbd142..9ae9f32fa 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -279,7 +279,7 @@ namespace MediaBrowser.Api.Playback.Hls CancellationToken cancellationToken) { // If all transcoding has completed, just return immediately - if (!IsTranscoding(playlistPath)) + if (transcodingJob != null && transcodingJob.HasExited) { return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } @@ -358,13 +358,6 @@ namespace MediaBrowser.Api.Playback.Hls }); } - private bool IsTranscoding(string playlistPath) - { - var job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - - return job != null && !job.HasExited; - } - private async Task GetAsync(GetMasterHlsVideoStream request, string method) { var state = await GetState(request, CancellationToken.None).ConfigureAwait(false); From dcf8e4c4b5968b57fc781120cced36e08c23ccd2 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 00:39:55 -0400 Subject: [PATCH 140/169] sync updates --- .../Playback/Dash/MpegDashService.cs | 52 +++++++++++++------ MediaBrowser.Model/Dlna/StreamBuilder.cs | 4 +- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index f24061c3f..9c74dd04d 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -159,11 +159,10 @@ namespace MediaBrowser.Api.Playback.Dash if (currentTranscodingIndex.HasValue) { - DeleteLastFile(playlistPath, segmentExtension, 0); + DeleteLastFile(playlistPath, segmentExtension, 0, 0); } - var startSeconds = index * state.SegmentLength; - request.StartTimeTicks = TimeSpan.FromSeconds(startSeconds).Ticks; + request.StartTimeTicks = GetPositionTicks(state, index); job = await StartFfMpeg(state, playlistPath, cancellationTokenSource, Path.GetDirectoryName(playlistPath)).ConfigureAwait(false); } @@ -193,6 +192,12 @@ namespace MediaBrowser.Api.Playback.Dash return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); } + private long GetPositionTicks(StreamState state, int segmentIndex) + { + var startSeconds = segmentIndex * state.SegmentLength; + return TimeSpan.FromSeconds(startSeconds).Ticks; + } + protected override async Task WaitForMinimumSegmentCount(string playlist, int segmentCount, CancellationToken cancellationToken) { var tmpPath = playlist + ".tmp"; @@ -329,41 +334,49 @@ namespace MediaBrowser.Api.Playback.Dash public int? GetCurrentTranscodingIndex(string playlist, string segmentExtension) { - var file = GetLastTranscodingFile(playlist, segmentExtension, FileSystem); + var file = GetLastTranscodingFiles(playlist, segmentExtension, FileSystem, 1).FirstOrDefault(); if (file == null) { return null; } - var playlistFilename = Path.GetFileNameWithoutExtension(playlist); - - var indexString = Path.GetFileNameWithoutExtension(file.Name).Substring(playlistFilename.Length); + var indexString = Path.GetFileNameWithoutExtension(file.Name).Split('-').LastOrDefault(); return int.Parse(indexString, NumberStyles.Integer, UsCulture); } - private void DeleteLastFile(string path, string segmentExtension, int retryCount) + private void DeleteLastFile(string path, string segmentExtension, int retryCount, int numDeleted) { + const int numToDelete = 2; + if (retryCount >= 5) { return; } - var file = GetLastTranscodingFile(path, segmentExtension, FileSystem); + var filesToGet = numToDelete - numDeleted; - if (file != null) + if (filesToGet < 1) + { + return; + } + + var files = GetLastTranscodingFiles(path, segmentExtension, FileSystem, filesToGet); + + foreach (var file in files) { try { FileSystem.DeleteFile(file.FullName); + numDeleted++; } catch (IOException ex) { Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName); Thread.Sleep(100); - DeleteLastFile(path, segmentExtension, retryCount + 1); + DeleteLastFile(path, segmentExtension, retryCount + 1, numDeleted); } catch (Exception ex) { @@ -372,7 +385,7 @@ namespace MediaBrowser.Api.Playback.Dash } } - private static FileInfo GetLastTranscodingFile(string playlist, string segmentExtension, IFileSystem fileSystem) + private static List GetLastTranscodingFiles(string playlist, string segmentExtension, IFileSystem fileSystem, int count) { var folder = Path.GetDirectoryName(playlist); @@ -382,11 +395,12 @@ namespace MediaBrowser.Api.Playback.Dash .EnumerateFiles("*", SearchOption.TopDirectoryOnly) .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase)) .OrderByDescending(fileSystem.GetLastWriteTimeUtc) - .FirstOrDefault(); + .Take(count) + .ToList(); } catch (DirectoryNotFoundException) { - return null; + return new List(); } } @@ -395,7 +409,7 @@ namespace MediaBrowser.Api.Playback.Dash var folder = Path.GetDirectoryName(playlist); var number = index.ToString("00000", CultureInfo.InvariantCulture); - var filename = "chunk-stream" + representationId + "-" + number + segmentExtension; + var filename = "stream" + representationId + "-" + number + segmentExtension; return Path.Combine(folder, filename); } @@ -479,14 +493,20 @@ namespace MediaBrowser.Api.Playback.Dash var threads = GetNumberOfThreads(state, false); var inputModifier = GetInputModifier(state); + var startNumber = GetStartNumber(state); - var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts {5} -f dash -init_seg_name \"chunk-stream$RepresentationID$-00000.m4s\" -use_template 0 -min_seg_duration {6} -y \"{7}\"", + var initSegmentName = "stream$RepresentationID$-00000.m4s"; + var segmentName = "stream$RepresentationID$-$Number%05d$.m4s"; + + var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts {5} -f dash -init_seg_name \"{6}\" -media_seg_name \"{7}\" -use_template 0 -use_timeline 1 -min_seg_duration {8} -y \"{9}\"", inputModifier, GetInputArgument(transcodingJobId, state), threads, GetMapArgs(state), GetVideoArguments(state), GetAudioArguments(state), + initSegmentName, + segmentName, (state.SegmentLength * 1000000).ToString(CultureInfo.InvariantCulture), outputPath ).Trim(); diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 5d0cd5203..b0a3c03ea 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Model.Dlna List mediaSources = new List(); foreach (MediaSourceInfo i in options.MediaSources) { - if (!string.IsNullOrEmpty(options.MediaSourceId) || + if (string.IsNullOrEmpty(options.MediaSourceId) || StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) { mediaSources.Add(i); @@ -61,7 +61,7 @@ namespace MediaBrowser.Model.Dlna List mediaSources = new List(); foreach (MediaSourceInfo i in options.MediaSources) { - if (!string.IsNullOrEmpty(options.MediaSourceId) || + if (string.IsNullOrEmpty(options.MediaSourceId) || StringHelper.EqualsIgnoreCase(i.Id, options.MediaSourceId)) { mediaSources.Add(i); From ca492d105ebfcdb7efb6d96b3d6bf4a641b85a94 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 10:40:33 -0400 Subject: [PATCH 141/169] added null check to web socket --- .../HttpServer/SocketSharp/WebSocketSharpListener.cs | 2 +- .../ServerManager/ServerManager.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs index 534d6aff1..fdb27d40d 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs @@ -120,7 +120,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp { var endpoint = ctx.Request.RemoteEndPoint.ToString(); var url = ctx.Request.RawUrl; - var queryString = new NameValueCollection(ctx.Request.QueryString); + var queryString = new NameValueCollection(ctx.Request.QueryString ?? new NameValueCollection()); var connectingArgs = new WebSocketConnectingEventArgs { diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs index 6428d10a9..8719f5448 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs @@ -147,7 +147,7 @@ namespace MediaBrowser.Server.Implementations.ServerManager { OnReceive = ProcessWebSocketMessageReceived, Url = e.Url, - QueryString = new NameValueCollection(e.QueryString) + QueryString = new NameValueCollection(e.QueryString ?? new NameValueCollection()) }; _webSocketConnections.Add(connection); From 3c92842bce81e138f55876f53499642f79f399ce Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 10:40:44 -0400 Subject: [PATCH 142/169] updated mpeg dash --- .../Playback/Dash/ManifestBuilder.cs | 6 +- .../Playback/Dash/MpegDashService.cs | 270 +++++++++++------- 2 files changed, 178 insertions(+), 98 deletions(-) diff --git a/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs index 58adacb79..35e252a19 100644 --- a/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs +++ b/MediaBrowser.Api/Playback/Dash/ManifestBuilder.cs @@ -196,8 +196,12 @@ namespace MediaBrowser.Api.Playback.Dash while (seconds > 0) { + var filename = index == 0 + ? "init" + : (index - 1).ToString(UsCulture); + var segmentUrl = string.Format("dash/{3}/{0}{1}{2}", - index.ToString(UsCulture), + filename, extension, SecurityElement.Escape(queryString), type); diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index 9c74dd04d..cebe4b555 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -119,7 +119,9 @@ namespace MediaBrowser.Api.Playback.Dash var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; - var index = int.Parse(segmentId, NumberStyles.Integer, UsCulture); + var index = string.Equals(segmentId, "init", StringComparison.OrdinalIgnoreCase) ? + -1 : + int.Parse(segmentId, NumberStyles.Integer, UsCulture); var state = await GetState(request, cancellationToken).ConfigureAwait(false); @@ -148,31 +150,36 @@ namespace MediaBrowser.Api.Playback.Dash } else { - var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath, segmentExtension); - - if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > 4) + if (string.Equals(representationId, "0", StringComparison.OrdinalIgnoreCase)) { - // If the playlist doesn't already exist, startup ffmpeg - try + var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath, segmentExtension); + Logger.Debug("Current transcoding index is {0}", currentTranscodingIndex ?? -2); + if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > 4) { - ApiEntryPoint.Instance.KillTranscodingJobs(j => j.Type == TranscodingJobType && string.Equals(j.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase), p => !string.Equals(p, playlistPath, StringComparison.OrdinalIgnoreCase)); - - if (currentTranscodingIndex.HasValue) + // If the playlist doesn't already exist, startup ffmpeg + try { - DeleteLastFile(playlistPath, segmentExtension, 0, 0); + KillTranscodingJobs(request.DeviceId, playlistPath); + + if (currentTranscodingIndex.HasValue) + { + DeleteTranscodedFiles(playlistPath, 0); + } + + var positionTicks = GetPositionTicks(state, index); + request.StartTimeTicks = positionTicks; + + job = await StartFfMpeg(state, playlistPath, cancellationTokenSource, Path.GetDirectoryName(playlistPath)).ConfigureAwait(false); + Task.Run(() => MonitorDashProcess(playlistPath, positionTicks == 0, job, cancellationToken)); + } + catch + { + state.Dispose(); + throw; } - request.StartTimeTicks = GetPositionTicks(state, index); - - job = await StartFfMpeg(state, playlistPath, cancellationTokenSource, Path.GetDirectoryName(playlistPath)).ConfigureAwait(false); + await WaitForMinimumSegmentCount(playlistPath, 1, cancellationTokenSource.Token).ConfigureAwait(false); } - catch - { - state.Dispose(); - throw; - } - - await WaitForMinimumSegmentCount(playlistPath, 1, cancellationTokenSource.Token).ConfigureAwait(false); } } } @@ -188,12 +195,22 @@ namespace MediaBrowser.Api.Playback.Dash } Logger.Info("returning {0}", segmentPath); - job = job ?? ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + + return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job ?? ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType), cancellationToken).ConfigureAwait(false); + } + + private void KillTranscodingJobs(string deviceId, string playlistPath) + { + ApiEntryPoint.Instance.KillTranscodingJobs(j => j.Type == TranscodingJobType && string.Equals(j.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase), p => !string.Equals(p, playlistPath, StringComparison.OrdinalIgnoreCase)); } private long GetPositionTicks(StreamState state, int segmentIndex) { + if (segmentIndex <= 1) + { + return 0; + } + var startSeconds = segmentIndex * state.SegmentLength; return TimeSpan.FromSeconds(startSeconds).Ticks; } @@ -202,10 +219,6 @@ namespace MediaBrowser.Api.Playback.Dash { var tmpPath = playlist + ".tmp"; Logger.Debug("Waiting for {0} segments in {1}", segmentCount, playlist); - // Double since audio and video are split - segmentCount = segmentCount * 2; - // Account for the initial segments - segmentCount += 2; while (true) { @@ -223,20 +236,14 @@ namespace MediaBrowser.Api.Playback.Dash { using (var reader = new StreamReader(fileStream)) { - var count = 0; - while (!reader.EndOfStream) { var line = await reader.ReadLineAsync().ConfigureAwait(false); - if (line.IndexOf(".m4s", StringComparison.OrdinalIgnoreCase) != -1) + if (line.IndexOf("stream0-" + segmentCount.ToString("00000", CultureInfo.InvariantCulture) + ".m4s", StringComparison.OrdinalIgnoreCase) != -1) { - count++; - if (count >= segmentCount) - { - Logger.Debug("Finished waiting for {0} segments in {1}", segmentCount, playlist); - return; - } + Logger.Debug("Finished waiting for {0} segments in {1}", segmentCount, playlist); + return; } } await Task.Delay(100, cancellationToken).ConfigureAwait(false); @@ -258,29 +265,6 @@ namespace MediaBrowser.Api.Playback.Dash return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } - var segmentFilename = Path.GetFileName(segmentPath); - - using (var fileStream = FileSystem.GetFileStream(playlistPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) - { - using (var reader = new StreamReader(fileStream)) - { - var text = await reader.ReadToEndAsync().ConfigureAwait(false); - - // If it appears in the playlist, it's done - if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) - { - return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); - } - } - } - - // if a different file is encoding, it's done - //var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath); - //if (currentTranscodingIndex > segmentIndex) - //{ - //return GetSegmentResult(segmentPath, segmentIndex); - //} - // Wait for the file to stop being written to, then stream it var length = new FileInfo(segmentPath).Length; var eofCount = 0; @@ -308,7 +292,7 @@ namespace MediaBrowser.Api.Playback.Dash length = newLength; await Task.Delay(100, cancellationToken).ConfigureAwait(false); } - + return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } @@ -341,48 +325,27 @@ namespace MediaBrowser.Api.Playback.Dash return null; } - var indexString = Path.GetFileNameWithoutExtension(file.Name).Split('-').LastOrDefault(); - - return int.Parse(indexString, NumberStyles.Integer, UsCulture); + return GetIndex(file.Name); } - private void DeleteLastFile(string path, string segmentExtension, int retryCount, int numDeleted) + public int GetIndex(string segmentFile) + { + var indexString = Path.GetFileNameWithoutExtension(segmentFile).Split('-').LastOrDefault(); + + if (string.Equals(indexString, "init", StringComparison.OrdinalIgnoreCase)) + { + return -1; + } + return int.Parse(indexString, NumberStyles.Integer, UsCulture) - 1; + } + + private void DeleteTranscodedFiles(string path, int retryCount) { - const int numToDelete = 2; if (retryCount >= 5) { return; } - - var filesToGet = numToDelete - numDeleted; - - if (filesToGet < 1) - { - return; - } - - var files = GetLastTranscodingFiles(path, segmentExtension, FileSystem, filesToGet); - - foreach (var file in files) - { - try - { - FileSystem.DeleteFile(file.FullName); - numDeleted++; - } - catch (IOException ex) - { - Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName); - - Thread.Sleep(100); - DeleteLastFile(path, segmentExtension, retryCount + 1, numDeleted); - } - catch (Exception ex) - { - Logger.ErrorException("Error deleting partial stream file(s) {0}", ex, file.FullName); - } - } } private static List GetLastTranscodingFiles(string playlist, string segmentExtension, IFileSystem fileSystem, int count) @@ -408,10 +371,13 @@ namespace MediaBrowser.Api.Playback.Dash { var folder = Path.GetDirectoryName(playlist); - var number = index.ToString("00000", CultureInfo.InvariantCulture); + var number = index == -1 ? + "init" : + index.ToString("00000", CultureInfo.InvariantCulture); + var filename = "stream" + representationId + "-" + number + segmentExtension; - return Path.Combine(folder, filename); + return Path.Combine(folder, "completed", filename); } protected override string GetAudioArguments(StreamState state) @@ -493,9 +459,9 @@ namespace MediaBrowser.Api.Playback.Dash var threads = GetNumberOfThreads(state, false); var inputModifier = GetInputModifier(state); - var startNumber = GetStartNumber(state); + //var startNumber = GetStartNumber(state); - var initSegmentName = "stream$RepresentationID$-00000.m4s"; + var initSegmentName = "stream$RepresentationID$-init.m4s"; var segmentName = "stream$RepresentationID$-$Number%05d$.m4s"; var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts {5} -f dash -init_seg_name \"{6}\" -media_seg_name \"{7}\" -use_template 0 -use_timeline 1 -min_seg_duration {8} -y \"{9}\"", @@ -529,6 +495,11 @@ namespace MediaBrowser.Api.Playback.Dash segmentId = segmentRequest.SegmentId; } + if (string.Equals(segmentId, "init", StringComparison.OrdinalIgnoreCase)) + { + return -1; + } + return int.Parse(segmentId, NumberStyles.Integer, UsCulture); } @@ -549,5 +520,110 @@ namespace MediaBrowser.Api.Playback.Dash return TranscodingJobType.Dash; } } + + private async void MonitorDashProcess(string playlist, bool moveInitSegment, TranscodingJob transcodingJob, CancellationToken cancellationToken) + { + var directory = new DirectoryInfo(Path.GetDirectoryName(playlist)); + var completedDirectory = Path.Combine(Path.GetDirectoryName(playlist), "completed"); + Directory.CreateDirectory(completedDirectory); + + while (!cancellationToken.IsCancellationRequested) + { + try + { + var files = directory.EnumerateFiles("*.m4s", SearchOption.TopDirectoryOnly) + .OrderBy(FileSystem.GetCreationTimeUtc) + .ToList(); + + foreach (var file in files) + { + var fileIndex = GetIndex(file.Name); + + if (fileIndex == -1 && !moveInitSegment) + { + continue; + } + + await WaitForFileToBeComplete(file.FullName, playlist, transcodingJob, cancellationToken).ConfigureAwait(false); + + var newName = fileIndex == -1 + ? "init.m4s" + : fileIndex.ToString("00000", CultureInfo.InvariantCulture) + ".m4s"; + + var representationId = file.FullName.IndexOf("stream0", StringComparison.OrdinalIgnoreCase) != -1 ? + "0" : + "1"; + + newName = "stream" + representationId + "-" + newName; + + File.Copy(file.FullName, Path.Combine(completedDirectory, newName), true); + + cancellationToken.ThrowIfCancellationRequested(); + } + + await Task.Delay(250, cancellationToken).ConfigureAwait(false); + } + catch (OperationCanceledException) + { + break; + } + catch (IOException) + { + + } + } + } + + private async Task WaitForFileToBeComplete(string segmentPath, string playlistPath, TranscodingJob transcodingJob, CancellationToken cancellationToken) + { + // If all transcoding has completed, just return immediately + if (transcodingJob != null && transcodingJob.HasExited) + { + return; + } + + var segmentFilename = Path.GetFileName(segmentPath); + using (var fileStream = FileSystem.GetFileStream(playlistPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) + { + using (var reader = new StreamReader(fileStream)) + { + var text = await reader.ReadToEndAsync().ConfigureAwait(false); + + // If it appears in the playlist, it's done + if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + { + return; + } + } + } + + // Wait for the file to stop being written to, then stream it + var length = new FileInfo(segmentPath).Length; + var eofCount = 0; + + while (eofCount < 10) + { + var info = new FileInfo(segmentPath); + + if (!info.Exists) + { + break; + } + + var newLength = info.Length; + + if (newLength == length) + { + eofCount++; + } + else + { + eofCount = 0; + } + + length = newLength; + await Task.Delay(100, cancellationToken).ConfigureAwait(false); + } + } } } From f988539e13e9f0a4bc206d2b6803520a35b7228e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 12:47:14 -0400 Subject: [PATCH 143/169] update session listener --- MediaBrowser.Api/Playback/MediaInfoService.cs | 37 +++++++++++++------ .../Session/SessionManager.cs | 9 +---- .../Session/SessionWebSocketListener.cs | 8 +++- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs index dfb5086b9..5adb76cc5 100644 --- a/MediaBrowser.Api/Playback/MediaInfoService.cs +++ b/MediaBrowser.Api/Playback/MediaInfoService.cs @@ -1,7 +1,10 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.MediaInfo; using ServiceStack; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -38,24 +41,34 @@ namespace MediaBrowser.Api.Playback _mediaSourceManager = mediaSourceManager; } - public async Task Get(GetPlaybackInfo request) + public Task Get(GetPlaybackInfo request) { - var mediaSources = await _mediaSourceManager.GetPlayackMediaSources(request.Id, request.UserId, true, CancellationToken.None).ConfigureAwait(false); - - return ToOptimizedResult(new LiveMediaInfoResult - { - MediaSources = mediaSources.ToList() - }); + return GetPlaybackInfo(request.Id, request.UserId); } - public async Task Get(GetLiveMediaInfo request) + public Task Get(GetLiveMediaInfo request) { - var mediaSources = await _mediaSourceManager.GetPlayackMediaSources(request.Id, request.UserId, true, CancellationToken.None).ConfigureAwait(false); + return GetPlaybackInfo(request.Id, request.UserId); + } - return ToOptimizedResult(new LiveMediaInfoResult + private async Task GetPlaybackInfo(string id, string userId) + { + IEnumerable mediaSources; + var result = new LiveMediaInfoResult(); + + try { - MediaSources = mediaSources.ToList() - }); + mediaSources = await _mediaSourceManager.GetPlayackMediaSources(id, userId, true, CancellationToken.None).ConfigureAwait(false); + } + catch (PlaybackException ex) + { + mediaSources = new List(); + result.ErrorCode = ex.ErrorCode; + } + + result.MediaSources = mediaSources.ToList(); + + return ToOptimizedResult(result); } } } diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 76e97ff48..8a21ed6bd 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -1687,16 +1687,11 @@ namespace MediaBrowser.Server.Implementations.Session AccessToken = token }); - if (result.Items.Length == 0) - { - return null; - } - - var info = result.Items[0]; + var info = result.Items.FirstOrDefault(); if (info == null) { - return null; + return Task.FromResult(null); } return GetSessionByAuthenticationToken(info, deviceId, remoteEndpoint, null); diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs index dda4c2b90..b8cab0c19 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -85,7 +85,8 @@ namespace MediaBrowser.Server.Implementations.Session async void _httpServer_WebSocketConnecting(object sender, WebSocketConnectingEventArgs e) { - if (e.QueryString.AllKeys.Contains("api_key", StringComparer.OrdinalIgnoreCase)) + var token = e.QueryString["api_key"]; + if (!string.IsNullOrWhiteSpace(token)) { var session = await GetSession(e.QueryString, e.Endpoint).ConfigureAwait(false); @@ -98,6 +99,11 @@ namespace MediaBrowser.Server.Implementations.Session private Task GetSession(NameValueCollection queryString, string remoteEndpoint) { + if (queryString == null) + { + throw new ArgumentNullException("queryString"); + } + var token = queryString["api_key"]; if (string.IsNullOrWhiteSpace(token)) { From 06286eb164ac7fe8e0f54ed8966024979f27d94d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 14:24:42 -0400 Subject: [PATCH 144/169] restore throttle --- .../Playback/TranscodingThrottler.cs | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Api/Playback/TranscodingThrottler.cs b/MediaBrowser.Api/Playback/TranscodingThrottler.cs index c486a44ea..943a4d065 100644 --- a/MediaBrowser.Api/Playback/TranscodingThrottler.cs +++ b/MediaBrowser.Api/Playback/TranscodingThrottler.cs @@ -51,16 +51,16 @@ namespace MediaBrowser.Api.Playback if (!_isPaused) { _logger.Debug("Sending pause command to ffmpeg"); - } - try - { - _job.Process.StandardInput.WriteLine("p"); - _isPaused = true; - } - catch (Exception ex) - { - _logger.ErrorException("Error pausing transcoding", ex); + try + { + _job.Process.StandardInput.Write("c"); + _isPaused = true; + } + catch (Exception ex) + { + _logger.ErrorException("Error pausing transcoding", ex); + } } } @@ -69,16 +69,16 @@ namespace MediaBrowser.Api.Playback if (_isPaused) { _logger.Debug("Sending unpause command to ffmpeg"); - } - try - { - _job.Process.StandardInput.WriteLine("u"); - _isPaused = false; - } - catch (Exception ex) - { - _logger.ErrorException("Error unpausing transcoding", ex); + try + { + _job.Process.StandardInput.WriteLine(); + _isPaused = false; + } + catch (Exception ex) + { + _logger.ErrorException("Error unpausing transcoding", ex); + } } } From d073be0f6c7a8787c7fd249dff85ede1df183809 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 14:48:52 -0400 Subject: [PATCH 145/169] updated nuget --- MediaBrowser.Model/ApiClient/IConnectionManager.cs | 7 +++++++ Nuget/MediaBrowser.Common.Internal.nuspec | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Model/ApiClient/IConnectionManager.cs b/MediaBrowser.Model/ApiClient/IConnectionManager.cs index 873ad083c..6ff48a044 100644 --- a/MediaBrowser.Model/ApiClient/IConnectionManager.cs +++ b/MediaBrowser.Model/ApiClient/IConnectionManager.cs @@ -145,6 +145,13 @@ namespace MediaBrowser.Model.ApiClient /// Task. Task ExchangePin(PinCreationResult pin); + /// + /// Gets the server information. + /// + /// The identifier. + /// Task<ServerInfo>. + Task GetServerInfo(string id); + /// /// Gets the available servers. /// diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index ab7a37e40..b8eade109 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.589 + 3.0.590 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 9f4d639ac..2185c2c04 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.589 + 3.0.590 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 2b224625e..9b9996baf 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.589 + 3.0.590 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 27ec6b31a..ad2e38ab2 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.589 + 3.0.590 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 - + From c04e226c09d226906c0ab408a0f74922c7518675 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 16:03:48 -0400 Subject: [PATCH 146/169] hls fix --- .../Playback/Hls/DynamicHlsService.cs | 47 ++++++++++++------- MediaBrowser.Api/Playback/StreamState.cs | 4 +- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 9ae9f32fa..0313e2e3b 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -63,7 +63,8 @@ namespace MediaBrowser.Api.Playback.Hls public class DynamicHlsService : BaseHlsService { - public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager) + : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) { NetworkManager = networkManager; } @@ -206,7 +207,7 @@ namespace MediaBrowser.Api.Playback.Hls { return; } - + try { FileSystem.DeleteFile(file.FullName); @@ -676,22 +677,36 @@ namespace MediaBrowser.Api.Playback.Hls // If isEncoding is true we're actually starting ffmpeg var startNumberParam = isEncoding ? GetStartNumber(state).ToString(UsCulture) : "0"; - var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts"; + if (state.EnableGenericHlsSegmenter) + { + var outputTsArg = Path.Combine(Path.GetDirectoryName(outputPath), Path.GetFileNameWithoutExtension(outputPath)) + "%d.ts"; - var args = string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts -flags -global_header {5} -f segment -segment_time {6} -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"", - inputModifier, - GetInputArgument(transcodingJobId, state), - threads, - GetMapArgs(state), - GetVideoArguments(state), - GetAudioArguments(state), - state.SegmentLength.ToString(UsCulture), - startNumberParam, - outputPath, - outputTsArg - ).Trim(); + return string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts -flags -global_header {5} -f segment -segment_time {6} -segment_start_number {7} -segment_list \"{8}\" -y \"{9}\"", + inputModifier, + GetInputArgument(transcodingJobId, state), + threads, + GetMapArgs(state), + GetVideoArguments(state), + GetAudioArguments(state), + state.SegmentLength.ToString(UsCulture), + startNumberParam, + outputPath, + outputTsArg + ).Trim(); + } - return args; + return string.Format("{0} {1} -map_metadata -1 -threads {2} {3} {4} -copyts -flags -global_header {5} -hls_time {6} -start_number {7} -hls_list_size {8} -y \"{9}\"", + inputModifier, + GetInputArgument(transcodingJobId, state), + threads, + GetMapArgs(state), + GetVideoArguments(state), + GetAudioArguments(state), + state.SegmentLength.ToString(UsCulture), + startNumberParam, + state.HlsListSize.ToString(UsCulture), + outputPath + ).Trim(); } /// diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 588d3b75c..e3eb4e128 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -64,8 +64,8 @@ namespace MediaBrowser.Api.Playback public string LiveTvStreamId { get; set; } - public int SegmentLength = 6; - + public int SegmentLength = 3; + public bool EnableGenericHlsSegmenter; public int HlsListSize { get From be6d4c3f530bbdd787b353996f42275187821716 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 22:46:21 -0400 Subject: [PATCH 147/169] added archive interface --- MediaBrowser.Api/Playback/StreamState.cs | 2 ++ MediaBrowser.Controller/Entities/Audio/Audio.cs | 6 +++--- MediaBrowser.Controller/Entities/IArchivable.cs | 8 ++++++++ MediaBrowser.Controller/Entities/Video.cs | 3 ++- MediaBrowser.Controller/MediaBrowser.Controller.csproj | 1 + 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 MediaBrowser.Controller/Entities/IArchivable.cs diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index e3eb4e128..6bbcef591 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -56,6 +56,7 @@ namespace MediaBrowser.Api.Playback public MediaProtocol InputProtocol { get; set; } public bool IsInputVideo { get; set; } + public bool IsInputArchive { get; set; } public VideoType VideoType { get; set; } public IsoType? IsoType { get; set; } @@ -112,6 +113,7 @@ namespace MediaBrowser.Api.Playback public long? EncodingDurationTicks { get; set; } public string ItemType { get; set; } + public string ItemId { get; set; } public string GetMimeType(string outputPath) { diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index c033b144a..100633d7f 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Controller.Persistence; -using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; @@ -22,7 +21,8 @@ namespace MediaBrowser.Controller.Entities.Audio IHasLookupInfo, IHasTags, IHasMediaSources, - IThemeMedia + IThemeMedia, + IArchivable { public string FormatName { get; set; } public long? Size { get; set; } diff --git a/MediaBrowser.Controller/Entities/IArchivable.cs b/MediaBrowser.Controller/Entities/IArchivable.cs new file mode 100644 index 000000000..575d203a7 --- /dev/null +++ b/MediaBrowser.Controller/Entities/IArchivable.cs @@ -0,0 +1,8 @@ + +namespace MediaBrowser.Controller.Entities +{ + public interface IArchivable + { + bool IsArchive { get; } + } +} diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index dd774c1ed..ba84beca3 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -24,7 +24,8 @@ namespace MediaBrowser.Controller.Entities IHasMediaSources, IHasShortOverview, IHasPreferredMetadataLanguage, - IThemeMedia + IThemeMedia, + IArchivable { public Guid? PrimaryVersionId { get; set; } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 06f18729b..2a3e23d46 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -130,6 +130,7 @@ + From ae6792a436a682866bb181f6aa8c53b20eb02f28 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 23:48:05 -0400 Subject: [PATCH 148/169] don't show sync profile for audio jobs --- MediaBrowser.Api/BaseApiService.cs | 6 ++---- MediaBrowser.Api/Images/ImageService.cs | 4 ++-- MediaBrowser.Api/Playback/BaseStreamingService.cs | 9 +++++++-- MediaBrowser.Api/Playback/Dash/MpegDashService.cs | 3 +-- MediaBrowser.Api/Playback/Hls/BaseHlsService.cs | 3 +-- MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs | 3 +-- MediaBrowser.Api/Playback/Hls/VideoHlsService.cs | 2 +- MediaBrowser.Api/Playback/Progressive/AudioService.cs | 3 +-- .../Progressive/BaseProgressiveStreamingService.cs | 2 +- MediaBrowser.Api/Playback/Progressive/VideoService.cs | 2 +- MediaBrowser.Api/Sync/SyncHelper.cs | 3 +++ MediaBrowser.Api/UserService.cs | 8 ++++---- .../Archiving/ZipClient.cs | 1 + MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj | 3 --- MediaBrowser.Model/Sync/SyncParameter.cs | 3 ++- 15 files changed, 28 insertions(+), 27 deletions(-) diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs index e009ccfac..4465be97a 100644 --- a/MediaBrowser.Api/BaseApiService.cs +++ b/MediaBrowser.Api/BaseApiService.cs @@ -41,8 +41,6 @@ namespace MediaBrowser.Api public ISessionContext SessionContext { get; set; } public IAuthorizationContext AuthorizationContext { get; set; } - public IUserManager UserManager { get; set; } - public string GetHeader(string name) { return Request.Headers[name]; @@ -75,11 +73,11 @@ namespace MediaBrowser.Api return ResultFactory.GetOptimizedResultUsingCache(Request, cacheKey, lastDateModified, cacheDuration, factoryFn); } - protected void AssertCanUpdateUser(string userId) + protected void AssertCanUpdateUser(IUserManager userManager, string userId) { var auth = AuthorizationContext.GetAuthorizationInfo(Request); - var authenticatedUser = UserManager.GetUserById(auth.UserId); + var authenticatedUser = userManager.GetUserById(auth.UserId); // If they're going to update the record of another user, they must be an administrator if (!string.Equals(userId, auth.UserId, StringComparison.OrdinalIgnoreCase)) diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index 6afd88515..ec9b2571e 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -418,7 +418,7 @@ namespace MediaBrowser.Api.Images public void Post(PostUserImage request) { var userId = GetPathValue(1); - AssertCanUpdateUser(userId); + AssertCanUpdateUser(_userManager, userId); request.Type = (ImageType)Enum.Parse(typeof(ImageType), GetPathValue(3), true); @@ -453,7 +453,7 @@ namespace MediaBrowser.Api.Images public void Delete(DeleteUserImage request) { var userId = request.Id; - AssertCanUpdateUser(userId); + AssertCanUpdateUser(_userManager, userId); var item = _userManager.GetUserById(userId); diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 793066f32..d3bae2f52 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -72,12 +72,14 @@ namespace MediaBrowser.Api.Playback protected ISubtitleEncoder SubtitleEncoder { get; private set; } protected IProcessManager ProcessManager { get; private set; } protected IMediaSourceManager MediaSourceManager { get; private set; } + protected IZipClient ZipClient { get; private set; } /// /// Initializes a new instance of the class. /// - protected BaseStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager) + protected BaseStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient) { + ZipClient = zipClient; MediaSourceManager = mediaSourceManager; ProcessManager = processManager; DeviceManager = deviceManager; @@ -1656,6 +1658,9 @@ namespace MediaBrowser.Api.Playback List mediaStreams = null; state.ItemType = item.GetType().Name; + state.ItemId = item.Id.ToString("N"); + var archivable = item as IArchivable; + state.IsInputArchive = archivable != null && archivable.IsArchive; if (item is ILiveTvRecording) { @@ -1670,7 +1675,7 @@ namespace MediaBrowser.Api.Playback var source = string.IsNullOrEmpty(request.MediaSourceId) ? recording.GetMediaSources(false).First() : MediaSourceManager.GetStaticMediaSource(recording, request.MediaSourceId, false); - + mediaStreams = source.MediaStreams; // Just to prevent this from being null and causing other methods to fail diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index cebe4b555..5e4f0ee0b 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -55,8 +55,7 @@ namespace MediaBrowser.Api.Playback.Dash public class MpegDashService : BaseHlsService { - public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager) - : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { NetworkManager = networkManager; } diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 52f2f2fe6..8541a60ef 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Diagnostics; @@ -24,7 +23,7 @@ namespace MediaBrowser.Api.Playback.Hls /// public abstract class BaseHlsService : BaseStreamingService { - protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + protected BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 0313e2e3b..7fe8a08c7 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -63,8 +63,7 @@ namespace MediaBrowser.Api.Playback.Hls public class DynamicHlsService : BaseHlsService { - public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, INetworkManager networkManager) - : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + public DynamicHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { NetworkManager = networkManager; } diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs index b987c8f85..533764f64 100644 --- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs @@ -57,7 +57,7 @@ namespace MediaBrowser.Api.Playback.Hls /// public class VideoHlsService : BaseHlsService { - public VideoHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + public VideoHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { } diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs index d9252ca40..f3193c954 100644 --- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs +++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs @@ -1,6 +1,5 @@ using MediaBrowser.Common.IO; using MediaBrowser.Common.Net; -using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Diagnostics; @@ -33,7 +32,7 @@ namespace MediaBrowser.Api.Playback.Progressive /// public class AudioService : BaseProgressiveStreamingService { - public AudioService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, imageProcessor, httpClient) + public AudioService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient, imageProcessor, httpClient) { } diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs index d7f7b423b..baf6ab653 100644 --- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs +++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Api.Playback.Progressive protected readonly IImageProcessor ImageProcessor; protected readonly IHttpClient HttpClient; - protected BaseProgressiveStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager) + protected BaseProgressiveStreamingService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { ImageProcessor = imageProcessor; HttpClient = httpClient; diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs index 0aed9d45c..e7b90c820 100644 --- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs +++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs @@ -63,7 +63,7 @@ namespace MediaBrowser.Api.Playback.Progressive /// public class VideoService : BaseProgressiveStreamingService { - public VideoService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, imageProcessor, httpClient) + public VideoService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IImageProcessor imageProcessor, IHttpClient httpClient) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient, imageProcessor, httpClient) { } diff --git a/MediaBrowser.Api/Sync/SyncHelper.cs b/MediaBrowser.Api/Sync/SyncHelper.cs index d0a866c02..6a5b6a927 100644 --- a/MediaBrowser.Api/Sync/SyncHelper.cs +++ b/MediaBrowser.Api/Sync/SyncHelper.cs @@ -22,6 +22,7 @@ namespace MediaBrowser.Api.Sync if (item.IsVideo) { options.Add(SyncJobOption.Quality); + options.Add(SyncJobOption.Profile); if (items.Count > 1) { options.Add(SyncJobOption.UnwatchedOnly); @@ -31,6 +32,7 @@ namespace MediaBrowser.Api.Sync if (item.IsFolder && !item.IsMusicGenre && !item.IsArtist && !item.IsType("musicalbum") && !item.IsGameGenre) { options.Add(SyncJobOption.Quality); + options.Add(SyncJobOption.Profile); options.Add(SyncJobOption.UnwatchedOnly); break; } @@ -65,6 +67,7 @@ namespace MediaBrowser.Api.Sync options.Add(SyncJobOption.Name); options.Add(SyncJobOption.Quality); + options.Add(SyncJobOption.Profile); options.Add(SyncJobOption.UnwatchedOnly); options.Add(SyncJobOption.SyncNewContent); options.Add(SyncJobOption.ItemLimit); diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index cbb2a1799..3996a0311 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -460,7 +460,7 @@ namespace MediaBrowser.Api public async Task PostAsync(UpdateUserPassword request) { - AssertCanUpdateUser(request.Id); + AssertCanUpdateUser(_userManager, request.Id); var user = _userManager.GetUserById(request.Id); @@ -494,7 +494,7 @@ namespace MediaBrowser.Api public async Task PostAsync(UpdateUserEasyPassword request) { - AssertCanUpdateUser(request.Id); + AssertCanUpdateUser(_userManager, request.Id); var user = _userManager.GetUserById(request.Id); @@ -530,7 +530,7 @@ namespace MediaBrowser.Api // https://code.google.com/p/servicestack/source/browse/trunk/Common/ServiceStack.Text/ServiceStack.Text/Controller/PathInfo.cs var id = GetPathValue(1); - AssertCanUpdateUser(id); + AssertCanUpdateUser(_userManager, id); var dtoUser = request; @@ -580,7 +580,7 @@ namespace MediaBrowser.Api public void Post(UpdateUserConfiguration request) { - AssertCanUpdateUser(request.Id); + AssertCanUpdateUser(_userManager, request.Id); var task = _userManager.UpdateConfiguration(request.Id, request); diff --git a/MediaBrowser.Common.Implementations/Archiving/ZipClient.cs b/MediaBrowser.Common.Implementations/Archiving/ZipClient.cs index 3d759ca54..cdcbc311a 100644 --- a/MediaBrowser.Common.Implementations/Archiving/ZipClient.cs +++ b/MediaBrowser.Common.Implementations/Archiving/ZipClient.cs @@ -5,6 +5,7 @@ using SharpCompress.Archive.Tar; using SharpCompress.Common; using SharpCompress.Reader; using SharpCompress.Reader.Zip; +using System; using System.IO; namespace MediaBrowser.Common.Implementations.Archiving diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj index 129c667a0..52745b5de 100644 --- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj +++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj @@ -654,9 +654,6 @@ IO\IIsoMount.cs - - IO\IZipClient.cs - Library\PlayAccess.cs diff --git a/MediaBrowser.Model/Sync/SyncParameter.cs b/MediaBrowser.Model/Sync/SyncParameter.cs index def4ab3e3..bce2a4f30 100644 --- a/MediaBrowser.Model/Sync/SyncParameter.cs +++ b/MediaBrowser.Model/Sync/SyncParameter.cs @@ -7,6 +7,7 @@ namespace MediaBrowser.Model.Sync Quality = 1, UnwatchedOnly = 2, SyncNewContent = 3, - ItemLimit = 4 + ItemLimit = 4, + Profile = 5 } } From 814c38abfcacb1499cc67811db432eaceb5f12fb Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 16 Mar 2015 23:51:35 -0400 Subject: [PATCH 149/169] set MediaSource SupportsDirectStream --- MediaBrowser.Model/Dlna/StreamBuilder.cs | 7 ++++++- MediaBrowser.Model/Dto/MediaSourceInfo.cs | 2 ++ .../Library/MediaSourceManager.cs | 10 +++++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index b0a3c03ea..6edbe00da 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -275,7 +275,7 @@ namespace MediaBrowser.Model.Dlna if (directPlayProfile != null) { // While options takes the network and other factors into account. Only applies to direct stream - if (IsAudioEligibleForDirectPlay(item, options.GetMaxBitrate())) + if (item.SupportsDirectStream && IsAudioEligibleForDirectPlay(item, options.GetMaxBitrate())) { playMethods.Add(PlayMethod.DirectStream); } @@ -581,6 +581,11 @@ namespace MediaBrowser.Model.Dlna return PlayMethod.DirectPlay; } } + + if (!mediaSource.SupportsDirectStream) + { + return null; + } return PlayMethod.DirectStream; } diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs index cdc97b7ea..3a9c1e7d4 100644 --- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs +++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs @@ -23,6 +23,7 @@ namespace MediaBrowser.Model.Dto public long? RunTimeTicks { get; set; } public bool ReadAtNativeFramerate { get; set; } public bool SupportsTranscoding { get; set; } + public bool SupportsDirectStream { get; set; } public VideoType? VideoType { get; set; } @@ -47,6 +48,7 @@ namespace MediaBrowser.Model.Dto RequiredHttpHeaders = new Dictionary(); PlayableStreamFileNames = new List(); SupportsTranscoding = true; + SupportsDirectStream = true; } public int? DefaultAudioStreamIndex { get; set; } diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index 719c984bd..2880c9e16 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Channels; +using System.IO; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; @@ -11,6 +12,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.Server.Implementations.Library { @@ -160,6 +162,12 @@ namespace MediaBrowser.Server.Implementations.Library foreach (var source in dynamicMediaSources) { source.SupportsTranscoding = false; + + if (source.Protocol == MediaProtocol.File) + { + source.SupportsDirectStream = File.Exists(source.Path); + } + list.Add(source); } From 84244b8cacd86f7da8b587e04b577faea2101099 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 00:08:09 -0400 Subject: [PATCH 150/169] check SupportsDirectStream --- .../Session/SessionManager.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 8a21ed6bd..5ea970426 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -314,7 +314,10 @@ namespace MediaBrowser.Server.Implementations.Session if (!string.Equals(info.ItemId, info.MediaSourceId) && !string.IsNullOrWhiteSpace(info.MediaSourceId)) { - runtimeTicks = _libraryManager.GetItemById(new Guid(info.MediaSourceId)).RunTimeTicks; + var runtimeItem = _libraryManager.GetItemById(new Guid(info.MediaSourceId)) ?? + _libraryManager.GetItemById(info.ItemId); + + runtimeTicks = runtimeItem.RunTimeTicks; } var current = session.NowPlayingItem; From 4915da4cdd9bd7de3f67fa681e06585dbbcfafdb Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 01:58:29 -0400 Subject: [PATCH 151/169] sync updates --- MediaBrowser.Api/ConnectService.cs | 13 ++++++++ .../Connect/ConnectSupporterSummary.cs | 16 +++++++++ .../Connect/IConnectManager.cs | 6 ++++ .../MediaBrowser.Controller.csproj | 1 + .../Connect/ConnectManager.cs | 33 ++++++++++++++++++- .../Localization/JavaScript/javascript.json | 2 ++ .../Localization/Server/server.json | 2 ++ .../Sync/ServerSyncScheduledTask.cs | 2 +- .../Sync/SyncManager.cs | 1 - .../ApplicationHost.cs | 2 +- .../MediaBrowser.WebDashboard.csproj | 1 + 11 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index 4bcd33d9e..09cbafca6 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -73,6 +73,12 @@ namespace MediaBrowser.Api public string ConnectUserId { get; set; } } + [Route("/Connect/Supporters", "GET")] + [Authenticated(Roles = "Admin")] + public class GetConnectSupporterSummary : IReturn + { + } + public class ConnectService : BaseApiService { private readonly IConnectManager _connectManager; @@ -84,6 +90,13 @@ namespace MediaBrowser.Api _userManager = userManager; } + public async Task Get(GetConnectSupporterSummary request) + { + var result = await _connectManager.GetConnectSupporterSummary().ConfigureAwait(false); + + return ToOptimizedResult(result); + } + public object Post(CreateConnectLink request) { return _connectManager.LinkUser(request.Id, request.ConnectUsername); diff --git a/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs b/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs new file mode 100644 index 000000000..47ff90e70 --- /dev/null +++ b/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs @@ -0,0 +1,16 @@ +using MediaBrowser.Model.Connect; +using System.Collections.Generic; + +namespace MediaBrowser.Controller.Connect +{ + public class ConnectSupporterSummary + { + public int MaxUsers { get; set; } + public List Users { get; set; } + + public ConnectSupporterSummary() + { + Users = new List(); + } + } +} diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs index a0ab1f9b6..4003d1bf2 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -69,5 +69,11 @@ namespace MediaBrowser.Controller.Connect /// The token. /// true if [is authorization token valid] [the specified token]; otherwise, false. bool IsAuthorizationTokenValid(string token); + + /// + /// Gets the connect supporter summary. + /// + /// Task<ConnectSupporterSummary>. + Task GetConnectSupporterSummary(); } } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 2a3e23d46..5b8c8d414 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -99,6 +99,7 @@ + diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 52c21af68..c9b690086 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Net; +using MediaBrowser.Common.Security; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Connect; @@ -38,6 +39,7 @@ namespace MediaBrowser.Server.Implementations.Connect private readonly IServerConfigurationManager _config; private readonly IUserManager _userManager; private readonly IProviderManager _providerManager; + private readonly ISecurityManager _securityManager; private ConnectData _data = new ConnectData(); @@ -102,7 +104,7 @@ namespace MediaBrowser.Server.Implementations.Connect IEncryptionManager encryption, IHttpClient httpClient, IServerApplicationHost appHost, - IServerConfigurationManager config, IUserManager userManager, IProviderManager providerManager) + IServerConfigurationManager config, IUserManager userManager, IProviderManager providerManager, ISecurityManager securityManager) { _logger = logger; _appPaths = appPaths; @@ -113,6 +115,7 @@ namespace MediaBrowser.Server.Implementations.Connect _config = config; _userManager = userManager; _providerManager = providerManager; + _securityManager = securityManager; _userManager.UserConfigurationUpdated += _userManager_UserConfigurationUpdated; _config.ConfigurationUpdated += _config_ConfigurationUpdated; @@ -1054,6 +1057,34 @@ namespace MediaBrowser.Server.Implementations.Connect } } + public async Task GetConnectSupporterSummary() + { + if (!_securityManager.IsMBSupporter) + { + return new ConnectSupporterSummary(); + } + + var url = GetConnectUrl("keyAssociation"); + + url += "?serverId=" + ConnectServerId; + url += "&supporterKey=" + _securityManager.SupporterKey; + + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = CancellationToken.None + }; + + SetServerAccessToken(options); + SetApplicationHeader(options); + + // No need to examine the response + using (var stream = (await _httpClient.SendAsync(options, "GET").ConfigureAwait(false)).Content) + { + return _json.DeserializeFromStream(stream); + } + } + public async Task Authenticate(string username, string passwordMd5) { if (string.IsNullOrWhiteSpace(username)) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index d3693840a..9e0260f3c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -36,6 +36,8 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", "PluginCategoryGeneral": "General", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 54ade1332..2f4470c96 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -48,6 +48,8 @@ "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", "ButtonConvertMedia": "Convert media", "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", "LabelPinCode": "Pin code:", "ButtonOk": "Ok", "ButtonCancel": "Cancel", diff --git a/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs index 33b1e13bd..148602bd4 100644 --- a/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs @@ -59,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.Sync { return new ITaskTrigger[] { - new IntervalTrigger { Interval = TimeSpan.FromHours(6) } + new IntervalTrigger { Interval = TimeSpan.FromHours(3) } }; } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 5540c3d59..6e55688a8 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -15,7 +15,6 @@ using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Sync; using MediaBrowser.Controller.TV; -using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Events; diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 0173000cf..f35317cd2 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -457,7 +457,7 @@ namespace MediaBrowser.Server.Startup.Common var encryptionManager = new EncryptionManager(); RegisterSingleInstance(encryptionManager); - ConnectManager = new ConnectManager(LogManager.GetLogger("Connect"), ApplicationPaths, JsonSerializer, encryptionManager, HttpClient, this, ServerConfigurationManager, UserManager, ProviderManager); + ConnectManager = new ConnectManager(LogManager.GetLogger("Connect"), ApplicationPaths, JsonSerializer, encryptionManager, HttpClient, this, ServerConfigurationManager, UserManager, ProviderManager, SecurityManager); RegisterSingleInstance(ConnectManager); DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager")); diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index d7c354da3..6f34f6d15 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -87,6 +87,7 @@ + PreserveNewest From 8b89d0b020c5cf060158007ba55d4dd4d62e0ebf Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 11:03:59 -0400 Subject: [PATCH 152/169] support remove connect user --- MediaBrowser.Api/ConnectService.cs | 15 ++++++++++ .../Connect/IConnectManager.cs | 7 +++++ .../Connect/ConnectManager.cs | 30 ++++++++++++++++++- .../Localization/JavaScript/javascript.json | 2 ++ 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index 09cbafca6..f84b74203 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -79,6 +79,14 @@ namespace MediaBrowser.Api { } + [Route("/Connect/Supporters", "DELETE")] + [Authenticated(Roles = "Admin")] + public class RemoveConnectSupporter : IReturnVoid + { + [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")] + public string Id { get; set; } + } + public class ConnectService : BaseApiService { private readonly IConnectManager _connectManager; @@ -97,6 +105,13 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } + public void Delete(RemoveConnectSupporter request) + { + var task = _connectManager.RemoveConnectSupporter(request.Id); + + Task.WaitAll(task); + } + public object Post(CreateConnectLink request) { return _connectManager.LinkUser(request.Id, request.ConnectUsername); diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs index 4003d1bf2..e745f3df3 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -75,5 +75,12 @@ namespace MediaBrowser.Controller.Connect /// /// Task<ConnectSupporterSummary>. Task GetConnectSupporterSummary(); + + /// + /// Removes the connect supporter. + /// + /// The identifier. + /// Task. + Task RemoveConnectSupporter(string id); } } diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index c9b690086..ac8ce7638 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -1068,7 +1068,7 @@ namespace MediaBrowser.Server.Implementations.Connect url += "?serverId=" + ConnectServerId; url += "&supporterKey=" + _securityManager.SupporterKey; - + var options = new HttpRequestOptions { Url = url, @@ -1085,6 +1085,34 @@ namespace MediaBrowser.Server.Implementations.Connect } } + public async Task RemoveConnectSupporter(string id) + { + if (!_securityManager.IsMBSupporter) + { + throw new InvalidOperationException(); + } + + var url = GetConnectUrl("keyAssociation"); + + url += "?serverId=" + ConnectServerId; + url += "&supporterKey=" + _securityManager.SupporterKey; + url += "&userId=" + id; + + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = CancellationToken.None + }; + + SetServerAccessToken(options); + SetApplicationHeader(options); + + // No need to examine the response + using (var stream = (await _httpClient.SendAsync(options, "DELETE").ConfigureAwait(false)).Content) + { + } + } + public async Task Authenticate(string username, string passwordMd5) { if (string.IsNullOrWhiteSpace(username)) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index 9e0260f3c..d995e485f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -38,6 +38,8 @@ "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove the additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", "PluginCategoryGeneral": "General", From d9d295251cb7ff95173e81db55408adc8de17eab Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 11:57:06 -0400 Subject: [PATCH 153/169] support adding connect user --- MediaBrowser.Api/ConnectService.cs | 27 +++++++++++++++++- .../Connect/ConnectSupporterSummary.cs | 3 ++ .../Connect/IConnectManager.cs | 7 +++++ .../Connect/ConnectManager.cs | 28 +++++++++++++++++++ .../Localization/Server/server.json | 2 ++ 5 files changed, 66 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index f84b74203..bdd2eeaad 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -1,8 +1,10 @@ -using MediaBrowser.Common.Extensions; +using System; +using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Connect; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; using MediaBrowser.Model.Connect; +using MediaBrowser.Model.Dto; using ServiceStack; using System.Collections.Generic; using System.Linq; @@ -87,6 +89,14 @@ namespace MediaBrowser.Api public string Id { get; set; } } + [Route("/Connect/Supporters", "POST")] + [Authenticated(Roles = "Admin")] + public class AddConnectSupporter : IReturnVoid + { + [ApiMember(Name = "Id", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + public string Id { get; set; } + } + public class ConnectService : BaseApiService { private readonly IConnectManager _connectManager; @@ -101,6 +111,14 @@ namespace MediaBrowser.Api public async Task Get(GetConnectSupporterSummary request) { var result = await _connectManager.GetConnectSupporterSummary().ConfigureAwait(false); + var existingConnectUserIds = result.Users.Select(i => i.Id).ToList(); + + result.EligibleUsers = _userManager.Users + .Where(i => !string.IsNullOrWhiteSpace(i.ConnectUserId)) + .Where(i => !existingConnectUserIds.Contains(i.ConnectUserId, StringComparer.OrdinalIgnoreCase)) + .OrderBy(i => i.Name) + .Select(i => _userManager.GetUserDto(i)) + .ToList(); return ToOptimizedResult(result); } @@ -112,6 +130,13 @@ namespace MediaBrowser.Api Task.WaitAll(task); } + public void Post(AddConnectSupporter request) + { + var task = _connectManager.AddConnectSupporter(request.Id); + + Task.WaitAll(task); + } + public object Post(CreateConnectLink request) { return _connectManager.LinkUser(request.Id, request.ConnectUsername); diff --git a/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs b/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs index 47ff90e70..20eef0521 100644 --- a/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs +++ b/MediaBrowser.Controller/Connect/ConnectSupporterSummary.cs @@ -1,5 +1,6 @@ using MediaBrowser.Model.Connect; using System.Collections.Generic; +using MediaBrowser.Model.Dto; namespace MediaBrowser.Controller.Connect { @@ -7,10 +8,12 @@ namespace MediaBrowser.Controller.Connect { public int MaxUsers { get; set; } public List Users { get; set; } + public List EligibleUsers { get; set; } public ConnectSupporterSummary() { Users = new List(); + EligibleUsers = new List(); } } } diff --git a/MediaBrowser.Controller/Connect/IConnectManager.cs b/MediaBrowser.Controller/Connect/IConnectManager.cs index e745f3df3..7eecf6ebf 100644 --- a/MediaBrowser.Controller/Connect/IConnectManager.cs +++ b/MediaBrowser.Controller/Connect/IConnectManager.cs @@ -82,5 +82,12 @@ namespace MediaBrowser.Controller.Connect /// The identifier. /// Task. Task RemoveConnectSupporter(string id); + + /// + /// Adds the connect supporter. + /// + /// The identifier. + /// Task. + Task AddConnectSupporter(string id); } } diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index ac8ce7638..be0b32548 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -1085,6 +1085,34 @@ namespace MediaBrowser.Server.Implementations.Connect } } + public async Task AddConnectSupporter(string id) + { + if (!_securityManager.IsMBSupporter) + { + throw new InvalidOperationException(); + } + + var url = GetConnectUrl("keyAssociation"); + + url += "?serverId=" + ConnectServerId; + url += "&supporterKey=" + _securityManager.SupporterKey; + url += "&userId=" + id; + + var options = new HttpRequestOptions + { + Url = url, + CancellationToken = CancellationToken.None + }; + + SetServerAccessToken(options); + SetApplicationHeader(options); + + // No need to examine the response + using (var stream = (await _httpClient.SendAsync(options, "POST").ConfigureAwait(false)).Content) + { + } + } + public async Task RemoveConnectSupporter(string id) { if (!_securityManager.IsMBSupporter) diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 2f4470c96..18447ade1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -50,6 +50,8 @@ "ButtonOrganize": "Organize", "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their accounts to Media Browser Connect from their user profile page.", "LabelPinCode": "Pin code:", "ButtonOk": "Ok", "ButtonCancel": "Cancel", From 44d0e30e9de8d2eef957eca1f97ee3fd5aa71810 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 12:47:56 -0400 Subject: [PATCH 154/169] perform webp test at startup --- .../Drawing/ImageProcessor.cs | 54 +++++++++++++++---- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs index cb6058f3f..79e5a0cf0 100644 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs @@ -130,7 +130,44 @@ namespace MediaBrowser.Server.Implementations.Drawing public ImageFormat[] GetSupportedImageOutputFormats() { - return new[] { ImageFormat.Webp, ImageFormat.Gif, ImageFormat.Jpg, ImageFormat.Png }; + if (_webpAvailable) + { + return new[] { ImageFormat.Webp, ImageFormat.Gif, ImageFormat.Jpg, ImageFormat.Png }; + } + return new[] { ImageFormat.Gif, ImageFormat.Jpg, ImageFormat.Png }; + } + + private bool _webpAvailable = true; + private void TestWebp() + { + try + { + var tmpPath = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".webp"); + Directory.CreateDirectory(Path.GetDirectoryName(tmpPath)); + + using (var wand = new MagickWand(1, 1, new PixelWand("none", 1))) + { + wand.SaveImage(tmpPath); + } + } + catch (Exception ex) + { + _logger.ErrorException("Error loading webp: ", ex); + _webpAvailable = false; + } + } + + private void LogImageMagickVersionVersion() + { + try + { + _logger.Info("ImageMagick version: " + Wand.VersionString); + } + catch (Exception ex) + { + _logger.ErrorException("Error loading ImageMagick: ", ex); + } + TestWebp(); } public async Task ProcessImage(ImageProcessingOptions options) @@ -179,7 +216,8 @@ namespace MediaBrowser.Server.Implementations.Drawing var quality = options.Quality ?? 90; - var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.UnplayedCount, options.BackgroundColor); + var outputFormat = GetOutputFormat(options.OutputFormat); + var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, outputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.UnplayedCount, options.BackgroundColor); var semaphore = GetLock(cacheFilePath); @@ -250,16 +288,14 @@ namespace MediaBrowser.Server.Implementations.Drawing } } - private void LogImageMagickVersionVersion() + private ImageFormat GetOutputFormat(ImageFormat requestedFormat) { - try + if (requestedFormat == ImageFormat.Webp && !_webpAvailable) { - _logger.Info("ImageMagick version: " + Wand.VersionString); - } - catch (Exception ex) - { - _logger.ErrorException("Error loading ImageMagick: ", ex); + return ImageFormat.Png; } + + return requestedFormat; } /// From 3e8576edd2e06cf12ff99ac681c5f30c96242afc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 13:45:26 -0400 Subject: [PATCH 155/169] update text --- .../Localization/JavaScript/javascript.json | 2 +- .../Localization/Server/server.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index d995e485f..fbfd37ce6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -39,7 +39,7 @@ "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", "HeaderConfirmRemoveUser": "Remove User", - "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove the additional supporter benefits from this user?", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", "PluginCategoryGeneral": "General", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 18447ade1..2ea4b3a5e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -51,7 +51,7 @@ "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", "HeaderSupporterBenefits": "Supporter Benefits", "HeaderAddUser": "Add User", - "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their accounts to Media Browser Connect from their user profile page.", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", "LabelPinCode": "Pin code:", "ButtonOk": "Ok", "ButtonCancel": "Cancel", From f251fd5abf9de16cdd427145ceeb4c2284c4a432 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 15:52:25 -0400 Subject: [PATCH 156/169] update SocketHttpListener --- MediaBrowser.Model/Sync/SyncJobItemQuery.cs | 7 +++---- MediaBrowser.Model/Sync/SyncJobQuery.cs | 7 +++---- MediaBrowser.Server.Implementations/Dto/DtoService.cs | 2 +- .../MediaBrowser.Server.Implementations.csproj | 4 ++-- .../Sync/SyncJobProcessor.cs | 4 ++-- MediaBrowser.Server.Implementations/Sync/SyncManager.cs | 8 ++++---- .../Sync/SyncRepository.cs | 4 ++-- .../Sync/SyncedMediaSourceProvider.cs | 2 +- MediaBrowser.Server.Implementations/packages.config | 2 +- 9 files changed, 19 insertions(+), 21 deletions(-) diff --git a/MediaBrowser.Model/Sync/SyncJobItemQuery.cs b/MediaBrowser.Model/Sync/SyncJobItemQuery.cs index 97f26b324..74d3ac096 100644 --- a/MediaBrowser.Model/Sync/SyncJobItemQuery.cs +++ b/MediaBrowser.Model/Sync/SyncJobItemQuery.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; - + namespace MediaBrowser.Model.Sync { public class SyncJobItemQuery @@ -33,7 +32,7 @@ namespace MediaBrowser.Model.Sync /// Gets or sets the status. /// /// The status. - public List Statuses { get; set; } + public SyncJobItemStatus[] Statuses { get; set; } /// /// Gets or sets a value indicating whether [add metadata]. /// @@ -42,7 +41,7 @@ namespace MediaBrowser.Model.Sync public SyncJobItemQuery() { - Statuses = new List(); + Statuses = new SyncJobItemStatus[] {}; } } } diff --git a/MediaBrowser.Model/Sync/SyncJobQuery.cs b/MediaBrowser.Model/Sync/SyncJobQuery.cs index 233dc7878..e86ec929f 100644 --- a/MediaBrowser.Model/Sync/SyncJobQuery.cs +++ b/MediaBrowser.Model/Sync/SyncJobQuery.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; - + namespace MediaBrowser.Model.Sync { public class SyncJobQuery @@ -28,7 +27,7 @@ namespace MediaBrowser.Model.Sync /// Gets or sets the status. /// /// The status. - public List Statuses { get; set; } + public SyncJobStatus[] Statuses { get; set; } /// /// Gets or sets a value indicating whether [synchronize new content]. /// @@ -37,7 +36,7 @@ namespace MediaBrowser.Model.Sync public SyncJobQuery() { - Statuses = new List(); + Statuses = new SyncJobStatus[] { }; } } } diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 3280cf264..887a94ab3 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -161,7 +161,7 @@ namespace MediaBrowser.Server.Implementations.Dto var result = _syncManager.GetLibraryItemIds(new SyncJobItemQuery { TargetId = deviceId, - Statuses = new List + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Converting, SyncJobItemStatus.Queued, diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 9207b606e..3eb414068 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -68,9 +68,9 @@ ..\ThirdParty\ServiceStack\ServiceStack.Api.Swagger.dll - + False - ..\packages\SocketHttpListener.1.0.0.1\lib\net45\SocketHttpListener.dll + ..\packages\SocketHttpListener.1.0.0.3\lib\net45\SocketHttpListener.dll diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index 76cfa4608..22c59610b 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -364,7 +364,7 @@ namespace MediaBrowser.Server.Implementations.Sync // If it already has a converting status then is must have been aborted during conversion var result = _syncRepo.GetJobItems(new SyncJobItemQuery { - Statuses = new List { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting } + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting } }); await SyncJobItems(result.Items, true, progress, cancellationToken).ConfigureAwait(false); @@ -386,7 +386,7 @@ namespace MediaBrowser.Server.Implementations.Sync // If it already has a converting status then is must have been aborted during conversion var result = _syncRepo.GetJobItems(new SyncJobItemQuery { - Statuses = new List { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, TargetId = targetId }); diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 6e55688a8..dc539b408 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -183,7 +183,7 @@ namespace MediaBrowser.Server.Implementations.Sync // If it already has a converting status then is must have been aborted during conversion var jobItemsResult = _repo.GetJobItems(new SyncJobItemQuery { - Statuses = new List { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, JobId = jobId }); @@ -192,7 +192,7 @@ namespace MediaBrowser.Server.Implementations.Sync jobItemsResult = _repo.GetJobItems(new SyncJobItemQuery { - Statuses = new List { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Queued, SyncJobItemStatus.Converting }, JobId = jobId }); @@ -719,7 +719,7 @@ namespace MediaBrowser.Server.Implementations.Sync var jobItemResult = GetJobItems(new SyncJobItemQuery { TargetId = targetId, - Statuses = new List + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.ReadyToTransfer } @@ -736,7 +736,7 @@ namespace MediaBrowser.Server.Implementations.Sync var jobItemResult = GetJobItems(new SyncJobItemQuery { TargetId = request.TargetId, - Statuses = new List { SyncJobItemStatus.Synced } + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Synced } }); var response = new SyncDataResponse(); diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index ae99c7a1e..5ad351af5 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -440,7 +440,7 @@ namespace MediaBrowser.Server.Implementations.Sync var whereClauses = new List(); - if (query.Statuses.Count > 0) + if (query.Statuses.Length > 0) { var statuses = string.Join(",", query.Statuses.Select(i => "'" + i.ToString() + "'").ToArray()); @@ -571,7 +571,7 @@ namespace MediaBrowser.Server.Implementations.Sync cmd.Parameters.Add(cmd, "@TargetId", DbType.String).Value = query.TargetId; } - if (query.Statuses.Count > 0) + if (query.Statuses.Length > 0) { var statuses = string.Join(",", query.Statuses.Select(i => "'" + i.ToString() + "'").ToArray()); diff --git a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs index 93a466c52..893b16b14 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Server.Implementations.Sync var jobItemResult = _syncManager.GetJobItems(new SyncJobItemQuery { AddMetadata = false, - Statuses = new List { SyncJobItemStatus.Synced }, + Statuses = new SyncJobItemStatus[] { SyncJobItemStatus.Synced }, ItemId = item.Id.ToString("N") }); diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 1e27c1cdc..438ccff92 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -5,5 +5,5 @@ - + \ No newline at end of file From cafc8356b202932f58d902a861bfbc3181b8e0f9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 17:02:54 -0400 Subject: [PATCH 157/169] hls fixes --- MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs | 13 ++++++++----- MediaBrowser.Api/Playback/StreamState.cs | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 7fe8a08c7..054bef1dd 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -290,12 +290,15 @@ namespace MediaBrowser.Api.Playback.Hls { using (var reader = new StreamReader(fileStream)) { - var text = await reader.ReadToEndAsync().ConfigureAwait(false); - - // If it appears in the playlist, it's done - if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + while (!reader.EndOfStream) { - return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); + var text = await reader.ReadLineAsync().ConfigureAwait(false); + + // If it appears in the playlist, it's done + if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + { + return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); + } } } } diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index 6bbcef591..aa382ba43 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -66,7 +66,7 @@ namespace MediaBrowser.Api.Playback public string LiveTvStreamId { get; set; } public int SegmentLength = 3; - public bool EnableGenericHlsSegmenter; + public bool EnableGenericHlsSegmenter = false; public int HlsListSize { get From 6b278f9b041045baa0d6edcfe6cb44819b18bf0d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Mar 2015 22:39:55 -0400 Subject: [PATCH 158/169] stub out localizable plugin --- .../MediaBrowser.Controller.csproj | 1 + .../Plugins/ILocalizablePlugin.cs | 20 +++++++++++++++++++ .../Library/LibraryManager.cs | 2 +- .../Photos/DynamicImageHelpers.cs | 10 ++++++++++ .../UserViews/DynamicImageProvider.cs | 4 +++- 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 MediaBrowser.Controller/Plugins/ILocalizablePlugin.cs diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 5b8c8d414..e4a31c82d 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -249,6 +249,7 @@ + diff --git a/MediaBrowser.Controller/Plugins/ILocalizablePlugin.cs b/MediaBrowser.Controller/Plugins/ILocalizablePlugin.cs new file mode 100644 index 000000000..d294107d7 --- /dev/null +++ b/MediaBrowser.Controller/Plugins/ILocalizablePlugin.cs @@ -0,0 +1,20 @@ +using System.IO; +using System.Reflection; + +namespace MediaBrowser.Controller.Plugins +{ + public interface ILocalizablePlugin + { + Stream GetDictionary(string culture); + } + + public static class LocalizablePluginHelper + { + public static Stream GetDictionary(Assembly assembly, string manifestPrefix, string culture) + { + // Find all dictionaries using GetManifestResourceNames, start start with the prefix + // Return the one for the culture if exists, otherwise return the default + return null; + } + } +} diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 43c985f33..0fda026fd 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1673,7 +1673,7 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("35_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); + var id = GetNewItemId("36_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); diff --git a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs index fce8c9b6b..7f8435097 100644 --- a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs +++ b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs @@ -21,6 +21,11 @@ namespace MediaBrowser.Server.Implementations.Photos throw new ArgumentException("Empty file found in files list"); } + if (files.Count == 0) + { + return null; + } + if (files.Count < 3) { return await GetSingleImage(files, fileSystem).ConfigureAwait(false); @@ -68,6 +73,11 @@ namespace MediaBrowser.Server.Implementations.Photos throw new ArgumentException("Empty file found in files list"); } + if (files.Count == 0) + { + return null; + } + if (files.Count < 4) { return await GetSingleImage(files, fileSystem).ConfigureAwait(false); diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index e213327ea..2af4c6a8c 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -229,7 +229,9 @@ namespace MediaBrowser.Server.Implementations.UserViews CollectionType.Channels, CollectionType.LiveTv, CollectionType.Books, - CollectionType.Photos + CollectionType.Photos, + CollectionType.HomeVideos, + string.Empty }; return collectionStripViewTypes.Contains(view.ViewType ?? string.Empty); From 8c36adc6c313434a220116d1d4a78babaea5f04f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 00:09:31 -0400 Subject: [PATCH 159/169] add transition to remote control --- .../Localization/JavaScript/javascript.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index fbfd37ce6..ffba5e5ab 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -39,9 +39,11 @@ "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", From 79d2f7efd78c027e8c0bd7006591bc48b660a21a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 02:02:22 -0400 Subject: [PATCH 160/169] updated mpeg dash --- .../Playback/BaseStreamingService.cs | 2 +- .../Playback/Dash/MpegDashService.cs | 243 ++++++------------ .../Playback/Hls/DynamicHlsService.cs | 4 +- MediaBrowser.Api/Playback/StreamState.cs | 1 + 4 files changed, 89 insertions(+), 161 deletions(-) diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index d3bae2f52..3a1088182 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1095,7 +1095,7 @@ namespace MediaBrowser.Api.Playback StartStreamingLog(transcodingJob, state, process.StandardError.BaseStream, state.LogFileStream); // Wait for the file to exist before proceeeding - while (!File.Exists(outputPath) && !transcodingJob.HasExited) + while (!File.Exists(state.WaitForPath ?? outputPath) && !transcodingJob.HasExited) { await Task.Delay(100, cancellationTokenSource.Token).ConfigureAwait(false); } diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index 5e4f0ee0b..f2754fe7c 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -55,7 +55,8 @@ namespace MediaBrowser.Api.Playback.Dash public class MpegDashService : BaseHlsService { - public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, INetworkManager networkManager) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) + public MpegDashService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, ILiveTvManager liveTvManager, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IProcessManager processManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, INetworkManager networkManager) + : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, liveTvManager, dlnaManager, subtitleEncoder, deviceManager, processManager, mediaSourceManager, zipClient) { NetworkManager = networkManager; } @@ -118,7 +119,7 @@ namespace MediaBrowser.Api.Playback.Dash var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; - var index = string.Equals(segmentId, "init", StringComparison.OrdinalIgnoreCase) ? + var requestedIndex = string.Equals(segmentId, "init", StringComparison.OrdinalIgnoreCase) ? -1 : int.Parse(segmentId, NumberStyles.Integer, UsCulture); @@ -128,32 +129,35 @@ namespace MediaBrowser.Api.Playback.Dash var segmentExtension = GetSegmentFileExtension(state); - var segmentPath = GetSegmentPath(playlistPath, representationId, segmentExtension, index); + var segmentPath = FindSegment(playlistPath, representationId, segmentExtension, requestedIndex); var segmentLength = state.SegmentLength; TranscodingJob job = null; - if (File.Exists(segmentPath)) + if (!string.IsNullOrWhiteSpace(segmentPath)) { job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); } await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false); try { - if (File.Exists(segmentPath)) + segmentPath = FindSegment(playlistPath, representationId, segmentExtension, requestedIndex); + if (!string.IsNullOrWhiteSpace(segmentPath)) { job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); } else { if (string.Equals(representationId, "0", StringComparison.OrdinalIgnoreCase)) { + job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath, segmentExtension); - Logger.Debug("Current transcoding index is {0}", currentTranscodingIndex ?? -2); - if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > 4) + var segmentGapRequiringTranscodingChange = 24 / state.SegmentLength; + Logger.Debug("Current transcoding index is {0}. requestedIndex={1}. segmentGapRequiringTranscodingChange={2}", currentTranscodingIndex ?? -2, requestedIndex, segmentGapRequiringTranscodingChange); + if (currentTranscodingIndex == null || requestedIndex < currentTranscodingIndex.Value || (requestedIndex - currentTranscodingIndex.Value) > segmentGapRequiringTranscodingChange) { // If the playlist doesn't already exist, startup ffmpeg try @@ -162,22 +166,25 @@ namespace MediaBrowser.Api.Playback.Dash if (currentTranscodingIndex.HasValue) { - DeleteTranscodedFiles(playlistPath, 0); + DeleteLastTranscodedFiles(playlistPath, 0); } - var positionTicks = GetPositionTicks(state, index); + var positionTicks = GetPositionTicks(state, requestedIndex); request.StartTimeTicks = positionTicks; - job = await StartFfMpeg(state, playlistPath, cancellationTokenSource, Path.GetDirectoryName(playlistPath)).ConfigureAwait(false); - Task.Run(() => MonitorDashProcess(playlistPath, positionTicks == 0, job, cancellationToken)); + var startNumber = GetStartNumber(state); + + var workingDirectory = Path.Combine(Path.GetDirectoryName(playlistPath), (startNumber == -1 ? 0 : startNumber).ToString(CultureInfo.InvariantCulture)); + state.WaitForPath = Path.Combine(workingDirectory, Path.GetFileName(playlistPath)); + Directory.CreateDirectory(workingDirectory); + job = await StartFfMpeg(state, playlistPath, cancellationTokenSource, workingDirectory).ConfigureAwait(false); + await WaitForMinimumDashSegmentCount(Path.Combine(workingDirectory, Path.GetFileName(playlistPath)), 1, cancellationTokenSource.Token).ConfigureAwait(false); } catch { state.Dispose(); throw; } - - await WaitForMinimumSegmentCount(playlistPath, 1, cancellationTokenSource.Token).ConfigureAwait(false); } } } @@ -187,15 +194,14 @@ namespace MediaBrowser.Api.Playback.Dash ApiEntryPoint.Instance.TranscodingStartLock.Release(); } - Logger.Info("waiting for {0}", segmentPath); - while (!File.Exists(segmentPath)) + while (string.IsNullOrWhiteSpace(segmentPath)) { + segmentPath = FindSegment(playlistPath, representationId, segmentExtension, requestedIndex); await Task.Delay(50, cancellationToken).ConfigureAwait(false); } Logger.Info("returning {0}", segmentPath); - - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job ?? ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType), cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job ?? ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType), cancellationToken).ConfigureAwait(false); } private void KillTranscodingJobs(string deviceId, string playlistPath) @@ -214,41 +220,9 @@ namespace MediaBrowser.Api.Playback.Dash return TimeSpan.FromSeconds(startSeconds).Ticks; } - protected override async Task WaitForMinimumSegmentCount(string playlist, int segmentCount, CancellationToken cancellationToken) + protected Task WaitForMinimumDashSegmentCount(string playlist, int segmentCount, CancellationToken cancellationToken) { - var tmpPath = playlist + ".tmp"; - Logger.Debug("Waiting for {0} segments in {1}", segmentCount, playlist); - - while (true) - { - FileStream fileStream; - try - { - fileStream = FileSystem.GetFileStream(tmpPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); - } - catch (IOException) - { - fileStream = FileSystem.GetFileStream(playlist, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); - } - // Need to use FileShare.ReadWrite because we're reading the file at the same time it's being written - using (fileStream) - { - using (var reader = new StreamReader(fileStream)) - { - while (!reader.EndOfStream) - { - var line = await reader.ReadLineAsync().ConfigureAwait(false); - - if (line.IndexOf("stream0-" + segmentCount.ToString("00000", CultureInfo.InvariantCulture) + ".m4s", StringComparison.OrdinalIgnoreCase) != -1) - { - Logger.Debug("Finished waiting for {0} segments in {1}", segmentCount, playlist); - return; - } - } - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } - } - } + return WaitForSegment(playlist, "stream0-" + segmentCount.ToString("00000", CultureInfo.InvariantCulture) + ".m4s", cancellationToken); } private async Task GetSegmentResult(string playlistPath, @@ -291,7 +265,7 @@ namespace MediaBrowser.Api.Playback.Dash length = newLength; await Task.Delay(100, cancellationToken).ConfigureAwait(false); } - + return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob); } @@ -324,23 +298,24 @@ namespace MediaBrowser.Api.Playback.Dash return null; } - return GetIndex(file.Name); + return GetIndex(file.FullName); } - public int GetIndex(string segmentFile) + public int GetIndex(string segmentPath) { - var indexString = Path.GetFileNameWithoutExtension(segmentFile).Split('-').LastOrDefault(); + var indexString = Path.GetFileNameWithoutExtension(segmentPath).Split('-').LastOrDefault(); if (string.Equals(indexString, "init", StringComparison.OrdinalIgnoreCase)) { return -1; } - return int.Parse(indexString, NumberStyles.Integer, UsCulture) - 1; + var startNumber = int.Parse(Path.GetFileNameWithoutExtension(Path.GetDirectoryName(segmentPath)), NumberStyles.Integer, UsCulture); + + return startNumber + int.Parse(indexString, NumberStyles.Integer, UsCulture) - 1; } - private void DeleteTranscodedFiles(string path, int retryCount) + private void DeleteLastTranscodedFiles(string playlistPath, int retryCount) { - if (retryCount >= 5) { return; @@ -354,7 +329,7 @@ namespace MediaBrowser.Api.Playback.Dash try { return new DirectoryInfo(folder) - .EnumerateFiles("*", SearchOption.TopDirectoryOnly) + .EnumerateFiles("*", SearchOption.AllDirectories) .Where(i => string.Equals(i.Extension, segmentExtension, StringComparison.OrdinalIgnoreCase)) .OrderByDescending(fileSystem.GetLastWriteTimeUtc) .Take(count) @@ -366,17 +341,35 @@ namespace MediaBrowser.Api.Playback.Dash } } - private string GetSegmentPath(string playlist, string representationId, string segmentExtension, int index) + private string FindSegment(string playlist, string representationId, string segmentExtension, int index) { var folder = Path.GetDirectoryName(playlist); - var number = index == -1 ? - "init" : - index.ToString("00000", CultureInfo.InvariantCulture); + if (index == -1) + { + var path = Path.Combine(folder, "0", "stream" + representationId + "-" + "init" + segmentExtension); + return File.Exists(path) ? path : null; + } - var filename = "stream" + representationId + "-" + number + segmentExtension; + try + { + foreach (var subfolder in new DirectoryInfo(folder).EnumerateDirectories().ToList()) + { + int startNumber; + if (int.TryParse(Path.GetFileNameWithoutExtension(subfolder.FullName), NumberStyles.Any, UsCulture, out startNumber)) + { + var segmentIndex = index - startNumber + 1; + var path = Path.Combine(folder, "0", "stream" + representationId + "-" + segmentIndex.ToString("00000", CultureInfo.InvariantCulture) + segmentExtension); + return File.Exists(path) ? path : null; + } + } + } + catch (DirectoryNotFoundException) + { + + } - return Path.Combine(folder, "completed", filename); + return null; } protected override string GetAudioArguments(StreamState state) @@ -458,7 +451,6 @@ namespace MediaBrowser.Api.Playback.Dash var threads = GetNumberOfThreads(state, false); var inputModifier = GetInputModifier(state); - //var startNumber = GetStartNumber(state); var initSegmentName = "stream$RepresentationID$-init.m4s"; var segmentName = "stream$RepresentationID$-$Number%05d$.m4s"; @@ -473,7 +465,7 @@ namespace MediaBrowser.Api.Playback.Dash initSegmentName, segmentName, (state.SegmentLength * 1000000).ToString(CultureInfo.InvariantCulture), - outputPath + state.WaitForPath ).Trim(); return args; @@ -520,109 +512,44 @@ namespace MediaBrowser.Api.Playback.Dash } } - private async void MonitorDashProcess(string playlist, bool moveInitSegment, TranscodingJob transcodingJob, CancellationToken cancellationToken) + private async Task WaitForSegment(string playlist, string segment, CancellationToken cancellationToken) { - var directory = new DirectoryInfo(Path.GetDirectoryName(playlist)); - var completedDirectory = Path.Combine(Path.GetDirectoryName(playlist), "completed"); - Directory.CreateDirectory(completedDirectory); + var tmpPath = playlist + ".tmp"; - while (!cancellationToken.IsCancellationRequested) + var segmentFilename = Path.GetFileName(segment); + + Logger.Debug("Waiting for {0} in {1}", segmentFilename, playlist); + + while (true) { + FileStream fileStream; try { - var files = directory.EnumerateFiles("*.m4s", SearchOption.TopDirectoryOnly) - .OrderBy(FileSystem.GetCreationTimeUtc) - .ToList(); - - foreach (var file in files) - { - var fileIndex = GetIndex(file.Name); - - if (fileIndex == -1 && !moveInitSegment) - { - continue; - } - - await WaitForFileToBeComplete(file.FullName, playlist, transcodingJob, cancellationToken).ConfigureAwait(false); - - var newName = fileIndex == -1 - ? "init.m4s" - : fileIndex.ToString("00000", CultureInfo.InvariantCulture) + ".m4s"; - - var representationId = file.FullName.IndexOf("stream0", StringComparison.OrdinalIgnoreCase) != -1 ? - "0" : - "1"; - - newName = "stream" + representationId + "-" + newName; - - File.Copy(file.FullName, Path.Combine(completedDirectory, newName), true); - - cancellationToken.ThrowIfCancellationRequested(); - } - - await Task.Delay(250, cancellationToken).ConfigureAwait(false); - } - catch (OperationCanceledException) - { - break; + fileStream = FileSystem.GetFileStream(tmpPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); } catch (IOException) { - + fileStream = FileSystem.GetFileStream(playlist, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true); } - } - } - - private async Task WaitForFileToBeComplete(string segmentPath, string playlistPath, TranscodingJob transcodingJob, CancellationToken cancellationToken) - { - // If all transcoding has completed, just return immediately - if (transcodingJob != null && transcodingJob.HasExited) - { - return; - } - - var segmentFilename = Path.GetFileName(segmentPath); - using (var fileStream = FileSystem.GetFileStream(playlistPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, true)) - { - using (var reader = new StreamReader(fileStream)) + // Need to use FileShare.ReadWrite because we're reading the file at the same time it's being written + using (fileStream) { - var text = await reader.ReadToEndAsync().ConfigureAwait(false); - - // If it appears in the playlist, it's done - if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + using (var reader = new StreamReader(fileStream)) { - return; + while (!reader.EndOfStream) + { + var line = await reader.ReadLineAsync().ConfigureAwait(false); + + if (line.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1) + { + Logger.Debug("Finished waiting for {0} in {1}", segmentFilename, playlist); + return; + } + } + await Task.Delay(100, cancellationToken).ConfigureAwait(false); } } } - - // Wait for the file to stop being written to, then stream it - var length = new FileInfo(segmentPath).Length; - var eofCount = 0; - - while (eofCount < 10) - { - var info = new FileInfo(segmentPath); - - if (!info.Exists) - { - break; - } - - var newLength = info.Length; - - if (newLength == length) - { - eofCount++; - } - else - { - eofCount = 0; - } - - length = newLength; - await Task.Delay(100, cancellationToken).ConfigureAwait(false); - } } } } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 054bef1dd..719e7f156 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -130,8 +130,8 @@ namespace MediaBrowser.Api.Playback.Hls else { var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath, segmentExtension); - - if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > 4) + var segmentGapRequiringTranscodingChange = 24/state.SegmentLength; + if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > segmentGapRequiringTranscodingChange) { // If the playlist doesn't already exist, startup ffmpeg try diff --git a/MediaBrowser.Api/Playback/StreamState.cs b/MediaBrowser.Api/Playback/StreamState.cs index aa382ba43..1d4dd1aaf 100644 --- a/MediaBrowser.Api/Playback/StreamState.cs +++ b/MediaBrowser.Api/Playback/StreamState.cs @@ -52,6 +52,7 @@ namespace MediaBrowser.Api.Playback public IIsoMount IsoMount { get; set; } public string MediaPath { get; set; } + public string WaitForPath { get; set; } public MediaProtocol InputProtocol { get; set; } From 1fb24df504fbb8e9208de13250cb09e5971f753f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 12:40:16 -0400 Subject: [PATCH 161/169] add query by PersonId --- .../Playback/Dash/MpegDashService.cs | 29 ++++++++++++------ .../Playback/Hls/DynamicHlsService.cs | 30 ++++++++++++++----- MediaBrowser.Api/UserLibrary/ItemsService.cs | 16 ++++++++++ .../Entities/InternalItemsQuery.cs | 2 ++ .../Entities/UserViewBuilder.cs | 14 ++++++++- MediaBrowser.Model/Querying/ItemQuery.cs | 3 +- .../Library/LibraryManager.cs | 2 +- .../Library/UserViewManager.cs | 10 ++++++- .../UserViews/DynamicImageProvider.cs | 1 + 9 files changed, 86 insertions(+), 21 deletions(-) diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs index f2754fe7c..2655ff8ad 100644 --- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs +++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs @@ -209,14 +209,14 @@ namespace MediaBrowser.Api.Playback.Dash ApiEntryPoint.Instance.KillTranscodingJobs(j => j.Type == TranscodingJobType && string.Equals(j.DeviceId, deviceId, StringComparison.OrdinalIgnoreCase), p => !string.Equals(p, playlistPath, StringComparison.OrdinalIgnoreCase)); } - private long GetPositionTicks(StreamState state, int segmentIndex) + private long GetPositionTicks(StreamState state, int requestedIndex) { - if (segmentIndex <= 1) + if (requestedIndex <= 0) { return 0; } - var startSeconds = segmentIndex * state.SegmentLength; + var startSeconds = requestedIndex * state.SegmentLength; return TimeSpan.FromSeconds(startSeconds).Ticks; } @@ -291,6 +291,13 @@ namespace MediaBrowser.Api.Playback.Dash public int? GetCurrentTranscodingIndex(string playlist, string segmentExtension) { + var job = ApiEntryPoint.Instance.GetTranscodingJob(playlist, TranscodingJobType); + + if (job == null || job.HasExited) + { + return null; + } + var file = GetLastTranscodingFiles(playlist, segmentExtension, FileSystem, 1).FirstOrDefault(); if (file == null) @@ -341,11 +348,11 @@ namespace MediaBrowser.Api.Playback.Dash } } - private string FindSegment(string playlist, string representationId, string segmentExtension, int index) + private string FindSegment(string playlist, string representationId, string segmentExtension, int requestedIndex) { var folder = Path.GetDirectoryName(playlist); - if (index == -1) + if (requestedIndex == -1) { var path = Path.Combine(folder, "0", "stream" + representationId + "-" + "init" + segmentExtension); return File.Exists(path) ? path : null; @@ -355,12 +362,16 @@ namespace MediaBrowser.Api.Playback.Dash { foreach (var subfolder in new DirectoryInfo(folder).EnumerateDirectories().ToList()) { + var subfolderName = Path.GetFileNameWithoutExtension(subfolder.FullName); int startNumber; - if (int.TryParse(Path.GetFileNameWithoutExtension(subfolder.FullName), NumberStyles.Any, UsCulture, out startNumber)) + if (int.TryParse(subfolderName, NumberStyles.Any, UsCulture, out startNumber)) { - var segmentIndex = index - startNumber + 1; - var path = Path.Combine(folder, "0", "stream" + representationId + "-" + segmentIndex.ToString("00000", CultureInfo.InvariantCulture) + segmentExtension); - return File.Exists(path) ? path : null; + var segmentIndex = requestedIndex - startNumber + 1; + var path = Path.Combine(folder, subfolderName, "stream" + representationId + "-" + segmentIndex.ToString("00000", CultureInfo.InvariantCulture) + segmentExtension); + if (File.Exists(path)) + { + return path; + } } } } diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs index 719e7f156..32bbda8db 100644 --- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs @@ -100,13 +100,13 @@ namespace MediaBrowser.Api.Playback.Hls var cancellationTokenSource = new CancellationTokenSource(); var cancellationToken = cancellationTokenSource.Token; - var index = int.Parse(segmentId, NumberStyles.Integer, UsCulture); + var requestedIndex = int.Parse(segmentId, NumberStyles.Integer, UsCulture); var state = await GetState(request, cancellationToken).ConfigureAwait(false); var playlistPath = Path.ChangeExtension(state.OutputFilePath, ".m3u8"); - var segmentPath = GetSegmentPath(playlistPath, index); + var segmentPath = GetSegmentPath(playlistPath, requestedIndex); var segmentLength = state.SegmentLength; var segmentExtension = GetSegmentFileExtension(state); @@ -116,7 +116,7 @@ namespace MediaBrowser.Api.Playback.Hls if (File.Exists(segmentPath)) { job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); } await ApiEntryPoint.Instance.TranscodingStartLock.WaitAsync(cancellationTokenSource.Token).ConfigureAwait(false); @@ -125,13 +125,13 @@ namespace MediaBrowser.Api.Playback.Hls if (File.Exists(segmentPath)) { job = ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); } else { var currentTranscodingIndex = GetCurrentTranscodingIndex(playlistPath, segmentExtension); var segmentGapRequiringTranscodingChange = 24/state.SegmentLength; - if (currentTranscodingIndex == null || index < currentTranscodingIndex.Value || (index - currentTranscodingIndex.Value) > segmentGapRequiringTranscodingChange) + if (currentTranscodingIndex == null || requestedIndex < currentTranscodingIndex.Value || (requestedIndex - currentTranscodingIndex.Value) > segmentGapRequiringTranscodingChange) { // If the playlist doesn't already exist, startup ffmpeg try @@ -143,8 +143,7 @@ namespace MediaBrowser.Api.Playback.Hls DeleteLastFile(playlistPath, segmentExtension, 0); } - var startSeconds = index * state.SegmentLength; - request.StartTimeTicks = TimeSpan.FromSeconds(startSeconds).Ticks; + request.StartTimeTicks = GetSeekPositionTicks(state, requestedIndex); job = await StartFfMpeg(state, playlistPath, cancellationTokenSource).ConfigureAwait(false); } @@ -171,11 +170,26 @@ namespace MediaBrowser.Api.Playback.Hls Logger.Info("returning {0}", segmentPath); job = job ?? ApiEntryPoint.Instance.GetTranscodingJob(playlistPath, TranscodingJobType); - return await GetSegmentResult(playlistPath, segmentPath, index, segmentLength, job, cancellationToken).ConfigureAwait(false); + return await GetSegmentResult(playlistPath, segmentPath, requestedIndex, segmentLength, job, cancellationToken).ConfigureAwait(false); + } + + private long GetSeekPositionTicks(StreamState state, int requestedIndex) + { + var startSeconds = requestedIndex * state.SegmentLength; + var position = TimeSpan.FromSeconds(startSeconds).Ticks; + + return position; } public int? GetCurrentTranscodingIndex(string playlist, string segmentExtension) { + var job = ApiEntryPoint.Instance.GetTranscodingJob(playlist, TranscodingJobType); + + if (job == null || job.HasExited) + { + return null; + } + var file = GetLastTranscodingFile(playlist, segmentExtension, FileSystem); if (file == null) diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index bdaad49e6..4d222c9bb 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -39,6 +39,9 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "Person", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string Person { get; set; } + [ApiMember(Name = "PersonIds", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string PersonIds { get; set; } + /// /// If the Person filter is used, this can also be used to restrict to a specific person type /// @@ -244,6 +247,11 @@ namespace MediaBrowser.Api.UserLibrary return (PersonTypes ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); } + public string[] GetPersonIds() + { + return (PersonIds ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + } + public VideoType[] GetVideoTypes() { var val = VideoTypes; @@ -477,6 +485,7 @@ namespace MediaBrowser.Api.UserLibrary Studios = request.GetStudios(), StudioIds = request.GetStudioIds(), Person = request.Person, + PersonIds = request.GetPersonIds(), PersonTypes = request.GetPersonTypes(), Years = request.GetYears(), ImageTypes = request.GetImageTypes().ToArray(), @@ -968,6 +977,13 @@ namespace MediaBrowser.Api.UserLibrary // Apply year filter var years = request.GetYears(); if (years.Length > 0 && !(i.ProductionYear.HasValue && years.Contains(i.ProductionYear.Value))) + { + return false; + } + + // Apply person filter + var personIds = request.GetPersonIds(); + if (personIds.Length > 0 && !(personIds.Any(v => i.People.Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) { return false; } diff --git a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs index e1344009f..727f756f1 100644 --- a/MediaBrowser.Controller/Entities/InternalItemsQuery.cs +++ b/MediaBrowser.Controller/Entities/InternalItemsQuery.cs @@ -41,6 +41,7 @@ namespace MediaBrowser.Controller.Entities public string NameLessThan { get; set; } public string Person { get; set; } + public string[] PersonIds { get; set; } public string AdjacentTo { get; set; } public string[] PersonTypes { get; set; } @@ -87,6 +88,7 @@ namespace MediaBrowser.Controller.Entities VideoTypes = new VideoType[] { }; Years = new int[] { }; PersonTypes = new string[] { }; + PersonIds = new string[] { }; } } } diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 2f182273b..f21add553 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -115,6 +115,7 @@ namespace MediaBrowser.Controller.Entities case CollectionType.Books: case CollectionType.Photos: case CollectionType.HomeVideos: + case CollectionType.MusicVideos: return GetResult(queryParent.GetChildren(user, true), queryParent, query); case CollectionType.Folders: @@ -1056,6 +1057,11 @@ namespace MediaBrowser.Controller.Entities return false; } + if (request.PersonIds.Length > 0) + { + return false; + } + if (request.Studios.Length > 0) { return false; @@ -1632,7 +1638,13 @@ namespace MediaBrowser.Controller.Entities } // Apply person filter - if (!string.IsNullOrEmpty(query.Person)) + if (query.PersonIds.Length > 0 && !(query.PersonIds.Any(v => item.People.Select(i => i.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } + + // Apply person filter + if (!string.IsNullOrWhiteSpace(query.Person)) { var personTypes = query.PersonTypes; diff --git a/MediaBrowser.Model/Querying/ItemQuery.cs b/MediaBrowser.Model/Querying/ItemQuery.cs index 6d26a2c0a..0cdf5ca7a 100644 --- a/MediaBrowser.Model/Querying/ItemQuery.cs +++ b/MediaBrowser.Model/Querying/ItemQuery.cs @@ -120,7 +120,7 @@ namespace MediaBrowser.Model.Querying /// Limit results to items containing a specific person /// /// The person. - public string Person { get; set; } + public string[] PersonIds { get; set; } /// /// If the Person filter is used, this can also be used to restrict to a specific person type @@ -307,6 +307,7 @@ namespace MediaBrowser.Model.Querying PersonTypes = new string[] { }; Ids = new string[] { }; ArtistIds = new string[] { }; + PersonIds = new string[] { }; ImageTypes = new ImageType[] { }; AirDays = new DayOfWeek[] { }; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 0fda026fd..1f82e7ef1 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1673,7 +1673,7 @@ namespace MediaBrowser.Server.Implementations.Library throw new ArgumentNullException("viewType"); } - var id = GetNewItemId("36_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); + var id = GetNewItemId("37_namedview_" + name + user.Id.ToString("N") + (parentId ?? string.Empty), typeof(UserView)); var path = Path.Combine(ConfigurationManager.ApplicationPaths.InternalMetadataPath, "views", id.ToString("N")); diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index fb14628d8..e63a27551 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -71,7 +71,15 @@ namespace MediaBrowser.Server.Implementations.Library { var collectionFolder = folder as ICollectionFolder; var folderViewType = collectionFolder == null ? null : collectionFolder.CollectionType; - list.Add(await GetUserView(folder.Id, folder.Name, folderViewType, string.Empty, user, cancellationToken).ConfigureAwait(false)); + + if (string.IsNullOrWhiteSpace(folderViewType)) + { + list.Add(folder); + } + else + { + list.Add(await GetUserView(folder.Id, folder.Name, folderViewType, string.Empty, user, cancellationToken).ConfigureAwait(false)); + } } } else diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index 2af4c6a8c..b98dd2c49 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -231,6 +231,7 @@ namespace MediaBrowser.Server.Implementations.UserViews CollectionType.Books, CollectionType.Photos, CollectionType.HomeVideos, + CollectionType.MusicVideos, string.Empty }; From 8f3256a12ca8bcc1dfcca7f4440d27bf6f585a4b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 12:56:14 -0400 Subject: [PATCH 162/169] combine playlist with remote control --- .../Localization/Server/server.json | 1 + MediaBrowser.WebDashboard/Api/PackageCreator.cs | 1 - MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj | 6 ------ 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 2ea4b3a5e..c2a115df4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -62,6 +62,7 @@ "HeaderVideo": "Video", "HeaderPaths": "Paths", "CategorySync": "Sync", + "TabPlaylist": "Playlist", "HeaderEasyPinCode": "Easy Pin Code", "HeaderGrownupsOnly": "Grown-ups Only!", "DividerOr": "-- or --", diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index ac94f680b..a93cccfbc 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -473,7 +473,6 @@ namespace MediaBrowser.WebDashboard.Api "notificationlist.js", "notificationsetting.js", "notificationsettings.js", - "playlist.js", "playlists.js", "playlistedit.js", diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 6f34f6d15..f945ce082 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -1774,9 +1774,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest @@ -1822,9 +1819,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest From 464570e34a95db8995fff8336fdb5e2b63c7eccd Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 13:04:49 -0400 Subject: [PATCH 163/169] update translations --- MediaBrowser.Api/UserLibrary/ItemsService.cs | 12 +- .../Entities/UserViewBuilder.cs | 13 +- .../Localization/JavaScript/ar.json | 15 +- .../Localization/JavaScript/bg_BG.json | 15 +- .../Localization/JavaScript/ca.json | 15 +- .../Localization/JavaScript/cs.json | 15 +- .../Localization/JavaScript/da.json | 15 +- .../Localization/JavaScript/de.json | 15 +- .../Localization/JavaScript/el.json | 15 +- .../Localization/JavaScript/en_GB.json | 15 +- .../Localization/JavaScript/en_US.json | 15 +- .../Localization/JavaScript/es.json | 15 +- .../Localization/JavaScript/es_MX.json | 19 +- .../Localization/JavaScript/fi.json | 15 +- .../Localization/JavaScript/fr.json | 15 +- .../Localization/JavaScript/he.json | 15 +- .../Localization/JavaScript/hr.json | 15 +- .../Localization/JavaScript/hu.json | 15 +- .../Localization/JavaScript/it.json | 15 +- .../Localization/JavaScript/kk.json | 19 +- .../Localization/JavaScript/ms.json | 15 +- .../Localization/JavaScript/nb.json | 15 +- .../Localization/JavaScript/nl.json | 15 +- .../Localization/JavaScript/pl.json | 15 +- .../Localization/JavaScript/pt_BR.json | 15 +- .../Localization/JavaScript/pt_PT.json | 15 +- .../Localization/JavaScript/ru.json | 31 +- .../Localization/JavaScript/sl_SI.json | 15 +- .../Localization/JavaScript/sv.json | 15 +- .../Localization/JavaScript/tr.json | 15 +- .../Localization/JavaScript/uk.json | 15 +- .../Localization/JavaScript/vi.json | 15 +- .../Localization/JavaScript/zh_CN.json | 15 +- .../Localization/JavaScript/zh_TW.json | 15 +- .../Localization/Server/ar.json | 570 +++++++------ .../Localization/Server/bg_BG.json | 586 ++++++------- .../Localization/Server/ca.json | 560 ++++++------ .../Localization/Server/cs.json | 522 ++++++------ .../Localization/Server/da.json | 564 ++++++------ .../Localization/Server/de.json | 480 ++++++----- .../Localization/Server/el.json | 548 ++++++------ .../Localization/Server/en_GB.json | 600 ++++++------- .../Localization/Server/en_US.json | 804 +++++++++--------- .../Localization/Server/es.json | 714 ++++++++-------- .../Localization/Server/es_MX.json | 752 ++++++++-------- .../Localization/Server/fi.json | 542 ++++++------ .../Localization/Server/fr.json | 472 +++++----- .../Localization/Server/he.json | 594 ++++++------- .../Localization/Server/hr.json | 554 ++++++------ .../Localization/Server/it.json | 494 +++++------ .../Localization/Server/kk.json | 790 ++++++++--------- .../Localization/Server/ko.json | 490 +++++------ .../Localization/Server/ms.json | 634 +++++++------- .../Localization/Server/nb.json | 700 +++++++-------- .../Localization/Server/nl.json | 512 +++++------ .../Localization/Server/pl.json | 532 ++++++------ .../Localization/Server/pt_BR.json | 688 +++++++-------- .../Localization/Server/pt_PT.json | 486 ++++++----- .../Localization/Server/ru.json | 514 +++++------ .../Localization/Server/sl_SI.json | 618 +++++++------- .../Localization/Server/sv.json | 534 ++++++------ .../Localization/Server/tr.json | 526 ++++++------ .../Localization/Server/uk.json | 582 ++++++------- .../Localization/Server/vi.json | 612 ++++++------- .../Localization/Server/zh_CN.json | 460 +++++----- .../Localization/Server/zh_TW.json | 452 +++++----- 66 files changed, 9788 insertions(+), 9227 deletions(-) diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 4d222c9bb..a734581f5 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -983,9 +983,17 @@ namespace MediaBrowser.Api.UserLibrary // Apply person filter var personIds = request.GetPersonIds(); - if (personIds.Length > 0 && !(personIds.Any(v => i.People.Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + if (personIds.Length > 0) { - return false; + var names = personIds + .Select(libraryManager.GetItemById) + .Select(p => p == null ? "-1" : p.Name) + .ToList(); + + if (!(names.Any(v => i.People.Select(p => p.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } } // Apply person filter diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index f21add553..0e602dabe 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -1638,9 +1638,18 @@ namespace MediaBrowser.Controller.Entities } // Apply person filter - if (query.PersonIds.Length > 0 && !(query.PersonIds.Any(v => item.People.Select(i => i.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + if (query.PersonIds.Length > 0) { - return false; + var names = query.PersonIds + .Select(libraryManager.GetItemById) + .Select(i => i == null ? "-1" : i.Name) + .ToList(); + + if (!(names.Any( + v => item.People.Select(i => i.Name).Contains(v, StringComparer.OrdinalIgnoreCase)))) + { + return false; + } } // Apply person filter diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json index 8a4bef458..a14c8b6ea 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json index f13f50b83..41f12525d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 1c61b17c0..7db7c4de8 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 f1d2f9347..70f0526cf 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "U\u017eivatel\u00e9", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 c86876c1b..cb14eb981 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Brugere", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 25f294bba..ae2cceaca 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Danke. Dein Unterst\u00fctzerschl\u00fcssel wurde aktualisiert.", "MessageKeyRemoved": "Danke. Ihr Unterst\u00fctzerschl\u00fcssel wurde entfernt.", "ErrorLaunchingChromecast": "W\u00e4hrend des startens von Chromecast ist ein Fehler aufgetreten. Bitte stelle sicher, dass dein Ger\u00e4te mit dem WLAN verbunden ist.", + "MessageErrorLoadingSupporterInfo": "Es trat ein Fehler beim laden der Unterst\u00fctzer-Informationen auf. Bitte versuchen Sie es sp\u00e4ter erneut.", + "MessageLinkYourSupporterKey": "Verkn\u00fcpfen Sie Ihren Unterst\u00fctzer-Schl\u00fcssel mit bis zu {0} Media Browser Connect Anwendern um Zugriff auf folgende Apps zu erhalten:", + "HeaderConfirmRemoveUser": "Entferne Benutzer", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "M\u00f6chten Sie wirklich zus\u00e4tzliche Unterst\u00fctzer-Features von diesem Anwender entfernen?", "ValueTimeLimitSingleHour": "Zeitlimit: 1 Stunde", "ValueTimeLimitMultiHour": "Zeitlimit: {0} Stunden", + "HeaderUsers": "Benutzer", "PluginCategoryGeneral": "Allgemein", "PluginCategoryContentProvider": "Inhaltsanbieter", "PluginCategoryScreenSaver": "Bildschirmschoner", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "W\u00f6hle Untertitel", "ButtonMarkForRemoval": "Entferne von Ger\u00e4t", "ButtonUnmarkForRemoval": "Abbrechen von Entfernen von Ger\u00e4t", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Erzwungen)", "LabelDefaultForcedStream": "(Standard\/Erzwungen)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Synchronisiere mit:", "LabelSyncJobName": "Synchronisations-Aufgabe:", "LabelQuality": "Qualit\u00e4t:", - "OptionOriginal": "Original", - "OptionHigh": "Hoch", - "OptionMedium": "Mittel", - "OptionLow": "Niedrig", "HeaderSettings": "Einstellungen", "OptionAutomaticallySyncNewContent": "Synchronisiere neue Inhalte automatisch", "OptionAutomaticallySyncNewContentHelp": "Neue Inhalte dieser Kategorie werden automatisch mit dem Ger\u00e4t synchronisiert.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synchronisiert", "SyncJobItemStatusFailed": "Fehlgeschlagen.", "SyncJobItemStatusRemovedFromDevice": "Entfernt von Ger\u00e4t", - "SyncJobItemStatusCancelled": "Abgebrochen" + "SyncJobItemStatusCancelled": "Abgebrochen", + "LabelProfile": "Profil:", + "LabelBitrateMbps": "Datenrate (Mbps):" } \ 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 57e9c49a5..25065a245 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 ", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 eedc35fc5..a4793dc38 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 051cca063..b09d9c148 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 62efecced..3a80d21d9 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Gracias. Su clave de seguidor ha sido actualizada.", "MessageKeyRemoved": "Gracias. Su clave de seguidor ha sido eliminada.", "ErrorLaunchingChromecast": "Ha habido un error al lanzar chromecast. Asegurese que su dispositivo est\u00e1 conectado a su red inal\u00e1mbrica.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Usuarios", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Seleccionar Subt\u00edtulos", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Por defecto)", "LabelForcedStream": "(Forzado)", "LabelDefaultForcedStream": "(Por defecto\/Forzado)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 15bfc076f..25bb38681 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Gracias. Su clave de aficionado ha sido actualizada.", "MessageKeyRemoved": "Gracias. Su clave de aficionado ha sido eliminada.", "ErrorLaunchingChromecast": "Hubo un error iniciando chromecast. Por favor aseg\u00farate de que tu dispositivo este conectado a tu red inalambrica", + "MessageErrorLoadingSupporterInfo": "Se present\u00f3 un error al cargar la informaci\u00f3n del aficionado. Por favor int\u00e9ntelo m\u00e1s tarde.", + "MessageLinkYourSupporterKey": "Ligue su clave de aficionado con hasta {0} miembros de Media Browser Connect para disfrutar de acceso gratuito a las siguientes apps:", + "HeaderConfirmRemoveUser": "Eliminar Usuario", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "\u00bfEst\u00e1 seguro de querer eliminar los beneficios adicionales de aficionado de este usuario?", "ValueTimeLimitSingleHour": "L\u00edmite de tiempo: 1 hora", "ValueTimeLimitMultiHour": "L\u00edmite de tiempo: {0} horas", + "HeaderUsers": "Usuarios", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Proveedores de Contenido", "PluginCategoryScreenSaver": "Protectores de Pantalla", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Seleccionar Subtitulos", "ButtonMarkForRemoval": "Remover de dispositivo", "ButtonUnmarkForRemoval": "Cancelar remover de dispositivo", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Por defecto)", "LabelForcedStream": "(Forzado)", "LabelDefaultForcedStream": "(Por Defecto\/Forzado)", @@ -577,7 +582,7 @@ "ValuePremieres": "Estrenos: {0}", "ValueStudio": "Estudio: {0}", "ValueStudios": "Estudios: {0}", - "ValueStatus": "Status: {0}", + "ValueStatus": "Estado: {0}", "ValueSpecialEpisodeName": "Especial: {0}", "LabelLimit": "L\u00edmite:", "ValueLinks": "Enlaces: {0}", @@ -714,17 +719,13 @@ "ButtonSync": "SInc", "SyncMedia": "Sincronizar Medios", "HeaderCancelSyncJob": "Cancelar Sinc.", - "CancelSyncJobConfirmation": "Cancelling the sync job will remove synced media from the device during the next sync process. Are you sure you wish to proceed?", + "CancelSyncJobConfirmation": "Cancelando el trabajo de sincronizaci\u00f3n eliminara los medios sincronizados del dispositivo durante el pr\u00f3ximo proceso de sincronizaci\u00f3n. \u00bfEsta seguro de que desea continuar?", "TabSync": "Sinc", "MessagePleaseSelectDeviceToSyncTo": "Por favor seleccione un dispositivo con el que desea sincronizar.", "MessageSyncJobCreated": "Trabajo de sinc. creado.", "LabelSyncTo": "Sincronizar con:", "LabelSyncJobName": "Nombre del trabajo de sinc:", "LabelQuality": "Calidad:", - "OptionOriginal": "Original", - "OptionHigh": "Alta", - "OptionMedium": "Media", - "OptionLow": "Baja", "HeaderSettings": "Configuraci\u00f3n", "OptionAutomaticallySyncNewContent": "Sincronizar autom\u00e1ticamente nuevos contenidos", "OptionAutomaticallySyncNewContentHelp": "Los contenidos nuevos agregados a esta categor\u00eda ser\u00e1n sincronizados autom\u00e1ticamente con el dispositivo.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Sincronizado", "SyncJobItemStatusFailed": "Fall\u00f3", "SyncJobItemStatusRemovedFromDevice": "Eliminado del dispositivo", - "SyncJobItemStatusCancelled": "Cancelado" + "SyncJobItemStatusCancelled": "Cancelado", + "LabelProfile": "Perf\u00edl:", + "LabelBitrateMbps": "Tasa de bits (Mbps):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json index e27d111c1..49541164d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 ba3fdc50e..665ec3e98 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Merci. Votre cl\u00e9 de supporteur a \u00e9t\u00e9 mise \u00e0 jour.", "MessageKeyRemoved": "Merci. Votre cl\u00e9 de supporteur a \u00e9t\u00e9 supprim\u00e9e.", "ErrorLaunchingChromecast": "Une erreur a \u00e9t\u00e9 rencontr\u00e9e lors du lancement de Chromecast. Veuillez vous assurer que votre appareil est bien connect\u00e9 \u00e0 votre r\u00e9seau sans-fil.", + "MessageErrorLoadingSupporterInfo": "Il y a eu une erreur lors du chargement des informations de supporter. Veuillez r\u00e9essayer plus tard.", + "MessageLinkYourSupporterKey": "Liez votre cl\u00e9 de supporteur avec {0} utilisateurs de Media Browser Connect au maximum et profitez d'un acc\u00e8s gratuit aux applications suivantes :", + "HeaderConfirmRemoveUser": "Supprimer l'utilisateur", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Etes-vous s\u00fbr de vouloir supprimer les avantages additionnels de supporteur pour cet utilisateur ?", "ValueTimeLimitSingleHour": "Limite de temps : 1 heure", "ValueTimeLimitMultiHour": "Limite de temps : {0} heures", + "HeaderUsers": "Utilisateurs", "PluginCategoryGeneral": "G\u00e9n\u00e9ral", "PluginCategoryContentProvider": "Fournisseurs de contenus", "PluginCategoryScreenSaver": "Ecrans de veille", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "S\u00e9lectionner sous-titres", "ButtonMarkForRemoval": "Supprimer de l'appareil", "ButtonUnmarkForRemoval": "Annuler la suppression de l'appareil", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Par d\u00e9faut)", "LabelForcedStream": "(Forc\u00e9)", "LabelDefaultForcedStream": "(Par d\u00e9faut\/Forc\u00e9)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Synchronis\u00e9 avec:", "LabelSyncJobName": "Nom du job de synchronisation:", "LabelQuality": "Qualit\u00e9:", - "OptionOriginal": "Original", - "OptionHigh": "Haute", - "OptionMedium": "Moyenne", - "OptionLow": "Basse", "HeaderSettings": "Param\u00e8tres", "OptionAutomaticallySyncNewContent": "Synchroniser automatiquement le nouveau contenu", "OptionAutomaticallySyncNewContentHelp": "Les nouveaux contenus ajout\u00e9s \u00e0 cette cat\u00e9gorie seront automatiquement synchronis\u00e9s avec le p\u00e9riph\u00e9rique.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synchronis\u00e9", "SyncJobItemStatusFailed": "Echou\u00e9", "SyncJobItemStatusRemovedFromDevice": "Supprim\u00e9 de l'appareil", - "SyncJobItemStatusCancelled": "Annul\u00e9" + "SyncJobItemStatusCancelled": "Annul\u00e9", + "LabelProfile": "Profil :", + "LabelBitrateMbps": "D\u00e9bit (Mbps) :" } \ 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 9bc3660b7..22b96c594 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 9cb62ec10..e6095bb53 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Korisnici", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json index f5a873522..da7219d2b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 bc1784f97..e6c944d37 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Grazie. La vostra chiave supporter \u00e8 stato aggiornato.", "MessageKeyRemoved": "Grazie. La vostra chiave supporter \u00e8 stata rimossa.", "ErrorLaunchingChromecast": "Si \u00e8 verificato un errore all'avvio di chromecast. Assicurati che il tuo dispositivo sia connesso alla rete wireless.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Tempo limite: 1 ora", "ValueTimeLimitMultiHour": "Tempo limite: {0} ore", + "HeaderUsers": "Utenti", "PluginCategoryGeneral": "Generale", "PluginCategoryContentProvider": "Fornitori di contenuti", "PluginCategoryScreenSaver": "Salva schermo", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Seleziona sottotitoli", "ButtonMarkForRemoval": "Rimuovi dal dispositivo", "ButtonUnmarkForRemoval": "Annulla rimozione dal dispositivo", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Predefinito)", "LabelForcedStream": "(forzato)", "LabelDefaultForcedStream": "(Predefinito\/Forzato)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sincronizza su:", "LabelSyncJobName": "Nome Attivit\u00e0 di Sincroniz.:", "LabelQuality": "Qualit\u00e0:", - "OptionOriginal": "Originale", - "OptionHigh": "Alto", - "OptionMedium": "Medio", - "OptionLow": "Basso", "HeaderSettings": "Configurazione", "OptionAutomaticallySyncNewContent": "Sincronizza automaticamente nuovi contenuti", "OptionAutomaticallySyncNewContentHelp": "Nuovi contenuti aggiunti a questa categoria viene sincronizzata automaticamente al dispositivo.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Sincronizzato", "SyncJobItemStatusFailed": "Fallito", "SyncJobItemStatusRemovedFromDevice": "Rimosso dal dispositivo", - "SyncJobItemStatusCancelled": "Cancellato" + "SyncJobItemStatusCancelled": "Cancellato", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index 57c91dae0..eaa186aa3 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.", "MessageKeyRemoved": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456\u04a3\u0456\u0437 \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b.", "ErrorLaunchingChromecast": "Chromecast \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u04a3\u044b\u0437 \u0441\u044b\u043c\u0441\u044b\u0437 \u0436\u0435\u043b\u0456\u0433\u0435 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", + "MessageErrorLoadingSupporterInfo": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u0430\u0442\u0435 \u043e\u0440\u044b\u043d \u0430\u043b\u0434\u044b. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", + "MessageLinkYourSupporterKey": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u043b\u0430\u0440\u0493\u0430 \u0442\u0435\u0433\u0456\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0443 \u04af\u0448\u0456\u043d Media Browser Connect {0} \u043c\u04af\u0448\u0435\u0441\u0456\u043d\u0435 \u0434\u0435\u0439\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u044b\u04a3\u044b\u0437.", + "HeaderConfirmRemoveUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0430\u043b\u0430\u0441\u0442\u0430\u0443", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043d\u044b\u04a3 \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u044b\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "ValueTimeLimitSingleHour": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456: 1 \u0441\u0430\u0493\u0430\u0442", "ValueTimeLimitMultiHour": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456: {0} \u0441\u0430\u0493\u0430\u0442", + "HeaderUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", "PluginCategoryGeneral": "\u0416\u0430\u043b\u043f\u044b", "PluginCategoryContentProvider": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456\u043b\u0435\u0440", "PluginCategoryScreenSaver": "\u042d\u043a\u0440\u0430\u043d \u049b\u043e\u0440\u0493\u0430\u0443\u044b\u0448\u0442\u0430\u0440", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0442\u0430\u04a3\u0434\u0430\u0443", "ButtonMarkForRemoval": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443", "ButtonUnmarkForRemoval": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "LabelSyncQualityHelp": "\u049a\u0430\u043b\u0430\u0493\u0430\u043d \u0441\u0430\u043f\u0430\u043d\u044b \u0442\u0430\u043d\u0434\u0430\u04a3\u044b\u0437. \u0422\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b \u0441\u0430\u043f\u0430 - \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043d\u044b\u04a3 \u043e\u0439\u043d\u0430\u0442\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456 \u0431\u0430\u0440-\u0436\u043e\u0493\u044b\u043d\u0430 \u049b\u0430\u0440\u0430\u043c\u0430\u0441\u0442\u0430\u043d \u0431\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0444\u0430\u0439\u043b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0435\u0434\u0456.", "LabelDefaultStream": "(\u04d8\u0434\u0435\u043f\u043a\u0456)", "LabelForcedStream": "(\u041c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456)", "LabelDefaultForcedStream": "(\u04d8\u0434\u0435\u043f\u043a\u0456\/\u041c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456)", @@ -488,8 +493,8 @@ "HeaderMediaLocations": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u043e\u0440\u043d\u0430\u043b\u0430\u0441\u0443\u043b\u0430\u0440\u044b", "LabelContentTypeValue": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456: {0}", "LabelPathSubstitutionHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441: \u0416\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0435\u0433\u0456 \u0436\u043e\u043b\u0434\u0430\u0440\u0434\u044b \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u0435\u043b\u0456\u043b\u0456\u043a \u049b\u043e\u0440 \u043a\u04e9\u0437\u0434\u0435\u0440\u0456\u043c\u0435\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", - "FolderTypeUnset": "\u0422\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u043c\u0430\u0493\u0430\u043d (\u04d9\u0440\u0442\u04af\u0440\u043b\u0456 \u043c\u0430\u0437\u043c\u04b1\u043d)", - "FolderTypeMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "FolderTypeUnset": "\u0422\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u043c\u0430\u0493\u0430\u043d (\u0430\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d)", + "FolderTypeMovies": "\u041a\u0438\u043d\u043e", "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", @@ -721,10 +726,6 @@ "LabelSyncTo": "\u041e\u0441\u044b\u043c\u0435\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443:", "LabelSyncJobName": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d\u044b\u04a3 \u0430\u0442\u044b:", "LabelQuality": "\u0421\u0430\u043f\u0430\u0441\u044b:", - "OptionOriginal": "\u0422\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b", - "OptionHigh": "\u0416\u043e\u0493\u0430\u0440\u044b", - "OptionMedium": "\u041e\u0440\u0442\u0430\u0448\u0430", - "OptionLow": "\u0422\u04e9\u043c\u0435\u043d", "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440", "OptionAutomaticallySyncNewContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "OptionAutomaticallySyncNewContentHelp": "\u041e\u0441\u044b \u0441\u0430\u043d\u0430\u0442\u049b\u0430 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u0436\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u049b\u04b1\u0440-\u043c\u0435\u043d \u04af\u043d\u0434-\u0434\u0456.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d", "SyncJobItemStatusFailed": "\u0421\u04d9\u0442\u0441\u0456\u0437", "SyncJobItemStatusRemovedFromDevice": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0493\u0430\u043d", - "SyncJobItemStatusCancelled": "\u0411\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b" + "SyncJobItemStatusCancelled": "\u0411\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b", + "LabelProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b:", + "LabelBitrateMbps": "\u049a\u0430\u0440\u049b\u044b\u043d\u044b (\u041c\u0431\u0438\u0442\/\u0441):" } \ 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 ceb662004..801a3e8d3 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 2456887a2..c27cc7cf1 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Takk. Din supportern\u00f8kkel har blitt oppdatert.", "MessageKeyRemoved": "Takk. Din supportern\u00f8kkel har blitt fjernet.", "ErrorLaunchingChromecast": "Det var en feil ved start av Chromecast. Vennligst forsikre deg om at enheten har korrekt forbindelse til ditt tr\u00e5dl\u00f8se nettverk.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Brukere", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Velg Undertekst", "ButtonMarkForRemoval": "Fjern fra enheten.", "ButtonUnmarkForRemoval": "Avbryt fjerning fra enheten", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Standard)", "LabelForcedStream": "(Tvunget)", "LabelDefaultForcedStream": "(Standard\/Tvunget)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Synkroniser til:", "LabelSyncJobName": "Navn p\u00e5 synkroniseringsjobb:", "LabelQuality": "Kvalitet:", - "OptionOriginal": "Original", - "OptionHigh": "H\u00f8y", - "OptionMedium": "Medium", - "OptionLow": "Lav", "HeaderSettings": "Innstillinger", "OptionAutomaticallySyncNewContent": "Automatisk synkroniser nytt innhold", "OptionAutomaticallySyncNewContentHelp": "Nytt innhold lagt til i denne kategorien vil bli automatisk synkronisert til enheten.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synkronisert", "SyncJobItemStatusFailed": "Feilet", "SyncJobItemStatusRemovedFromDevice": "Fjernet fra enheten", - "SyncJobItemStatusCancelled": "Kansellert" + "SyncJobItemStatusCancelled": "Kansellert", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 e8de6898f..f40cd11ed 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Dank u. Uw supporter sleutel is bijgewerkt.", "MessageKeyRemoved": "Dank u. Uw supporter sleutel is verwijderd.", "ErrorLaunchingChromecast": "Er is een fout opgetreden bij het starten van chromecast. Zorg ervoor dat uw apparaat is aangesloten op uw draadloze netwerk.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur", "ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren", + "HeaderUsers": "Gebruikers", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Selecteer Ondertitels", "ButtonMarkForRemoval": "Van apparaat verwijderen", "ButtonUnmarkForRemoval": "Afbreken verwijderen van apparaat", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Standaard)", "LabelForcedStream": "(Geforceerd)", "LabelDefaultForcedStream": "(Standaard \/ Georceerd)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Synchroniseer naar:", "LabelSyncJobName": "Naam synchroniseer taak:", "LabelQuality": "Kwaliteit", - "OptionOriginal": "Origineel", - "OptionHigh": "Hoog", - "OptionMedium": "Gemiddeld", - "OptionLow": "Laag", "HeaderSettings": "Instellingen", "OptionAutomaticallySyncNewContent": "Nieuwe inhoud automatisch synchroniseren", "OptionAutomaticallySyncNewContentHelp": "Nieuwe inhoud toegevoegd aan deze categorie wordt automatisch gesynchroniseerd met het apparaat.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Gesynchroniseerd", "SyncJobItemStatusFailed": "Mislukt", "SyncJobItemStatusRemovedFromDevice": "Van apparaat verwijderd", - "SyncJobItemStatusCancelled": "Geannuleerd" + "SyncJobItemStatusCancelled": "Geannuleerd", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 8e2329f2d..4ff24e13f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "U\u017cytkownicy", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 10f47e410..119f41e10 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Obrigado. Sua chave de colaborador foi atualizada.", "MessageKeyRemoved": "Obrigado. Sua chave de colaborador foi removida.", "ErrorLaunchingChromecast": "Ocorreu um erro ao iniciar o chromecast. Por favor verifique se seu dispositivo est\u00e1 conectado \u00e0 sua rede sem fio.", + "MessageErrorLoadingSupporterInfo": "Ocorreu um erro ao carregar a informa\u00e7\u00e3o do colaborador. Por favor, tente novamente mais tarde.", + "MessageLinkYourSupporterKey": "Conecte sua chave de colaborador com at\u00e9 {0} membros do Media Browser Connect para desfrutar de acesso livre \u00e0s seguintes apps:", + "HeaderConfirmRemoveUser": "Remover Usu\u00e1rio", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Deseja realmente remover os benef\u00edcios adicionais de colaborador deste usu\u00e1rio?", "ValueTimeLimitSingleHour": "Limite de tempo: 1 hora", "ValueTimeLimitMultiHour": "Limite de tempo: {0} horas", + "HeaderUsers": "Usu\u00e1rios", "PluginCategoryGeneral": "Geral", "PluginCategoryContentProvider": "Provedores de Conte\u00fado", "PluginCategoryScreenSaver": "Protetores de Tela", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Selecione Legendas", "ButtonMarkForRemoval": "Remover do dispositivo", "ButtonUnmarkForRemoval": "Cancelar remo\u00e7\u00e3o do dispositivo", - "LabelSyncQualityHelp": "Selecione a qualidade desejada. Qualidade original sincronizar\u00e1 o arquivo original, independente se o dispositivo ser\u00e1 capaz de reproduzi-lo.", "LabelDefaultStream": "(Padr\u00e3o)", "LabelForcedStream": "(For\u00e7ada)", "LabelDefaultForcedStream": "(Padr\u00e3o\/For\u00e7ada)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sincronizar para:", "LabelSyncJobName": "Nome da tarefa de sincroniza\u00e7\u00e3o:", "LabelQuality": "Qualidade:", - "OptionOriginal": "Original", - "OptionHigh": "Alta", - "OptionMedium": "M\u00e9dia", - "OptionLow": "Baixa", "HeaderSettings": "Ajustes", "OptionAutomaticallySyncNewContent": "Sincronizar novo conte\u00fado automaticamente", "OptionAutomaticallySyncNewContentHelp": "Novo conte\u00fado adicionado a esta categoria ser\u00e1 automaticamente sincronizado com o dispositivo.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Sincronizado", "SyncJobItemStatusFailed": "Falhou", "SyncJobItemStatusRemovedFromDevice": "Removido do dispositivo", - "SyncJobItemStatusCancelled": "Cancelado" + "SyncJobItemStatusCancelled": "Cancelado", + "LabelProfile": "Perfil:", + "LabelBitrateMbps": "Taxa (Mbps):" } \ 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 53a5c61b9..9bc831d5f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Utilizadores", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 764abc5d6..f5fedaffe 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -31,13 +31,19 @@ "NoPluginsInstalledMessage": "\u041d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u0430.", "BrowsePluginCatalogMessage": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u043c\u0435\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u043c\u0438.", "MessageKeyEmailedTo": "\u041a\u043b\u044e\u0447 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u042d-\u043f\u043e\u0447\u0442\u043e\u0439 \u043a {0}.", - "MessageKeysLinked": "\u041a\u043b\u044e\u0447\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b.", + "MessageKeysLinked": "\u041a\u043b\u044e\u0447\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b.", "HeaderConfirmation": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435", "MessageKeyUpdated": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d.", "MessageKeyRemoved": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d.", "ErrorLaunchingChromecast": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Chromecast. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.", + "MessageErrorLoadingSupporterInfo": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0435. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", + "MessageLinkYourSupporterKey": "\u0421\u0432\u044f\u0436\u0438\u0442\u0435 \u0432\u0430\u0448 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e {0} \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 Media Browser Connect, \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c:", + "HeaderConfirmRemoveUser": "\u0418\u0437\u044a\u044f\u0442\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0438\u0437\u044a\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f?", "ValueTimeLimitSingleHour": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: 1 \u0447\u0430\u0441", "ValueTimeLimitMultiHour": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438: {0} \u0447\u0430\u0441(\u0430\/\u043e\u0432)", + "HeaderUsers": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", "PluginCategoryGeneral": "\u041e\u0431\u0449\u0438\u0435", "PluginCategoryContentProvider": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f", "PluginCategoryScreenSaver": "\u0425\u0440\u0430\u043d\u0438\u0442\u0435\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u0430", @@ -66,10 +72,10 @@ "SyncJobStatusFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", "SyncJobStatusCancelled": "\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e", "SyncJobStatusCompleted": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "SyncJobStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432\u043e \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443", - "SyncJobStatusTransferring": "\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f", + "SyncJobStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432 \u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443", + "SyncJobStatusTransferring": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f", "SyncJobStatusCompletedWithError": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438", - "SyncJobItemStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432 \u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443", + "SyncJobItemStatusReadyToTransfer": "\u0413\u043e\u0442\u043e\u0432 \u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0443", "LabelCollection": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f", "HeaderAddToCollection": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", "NewCollectionNameExample": "\u041f\u0440\u0438\u043c\u0435\u0440: \u0417\u0432\u0451\u0437\u0434\u043d\u044b\u0435 \u0432\u043e\u0439\u043d\u044b (\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f)", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "\u0412\u044b\u0431\u043e\u0440 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", "ButtonMarkForRemoval": "\u0418\u0437\u044a\u044f\u0442\u044c \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "ButtonUnmarkForRemoval": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u044a\u044f\u0442\u0438\u0435 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "LabelSyncQualityHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e - \u0431\u0443\u0434\u0435\u0442 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0442.", "LabelDefaultStream": "(\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435)", "LabelForcedStream": "(\u0424\u043e\u0440\u0441-\u044b\u0435)", "LabelDefaultForcedStream": "(\u0423\u043c\u043e\u043b\u0447.\/\u0424\u043e\u0440\u0441-\u044b\u0435)", @@ -489,7 +494,7 @@ "LabelContentTypeValue": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f: {0}", "LabelPathSubstitutionHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u041f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0443\u0442\u0435\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 \u0441\u043e \u0441\u0435\u0442\u0435\u0432\u044b\u043c\u0438 \u043e\u0431\u0449\u0438\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.", "FolderTypeUnset": "\u041d\u0435\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 (\u0440\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435)", - "FolderTypeMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", + "FolderTypeMovies": "\u041a\u0438\u043d\u043e", "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", "FolderTypeAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", @@ -529,7 +534,7 @@ "MessagePendingMediaBrowserAccountAdded": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Media Browser \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d-\u043f\u043e\u0447\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0443 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c, \u0449\u0451\u043b\u043a\u043d\u0443\u0432 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u042d-\u043f\u043e\u0447\u0442\u0435.", "HeaderMediaBrowserAccountRemoved": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Media Browser \u0438\u0437\u044a\u044f\u0442\u0430", "MessageMediaBrowserAccontRemoved": "\u0423\u0447\u0451\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c Media Browser \u0431\u044b\u043b\u0430 \u0438\u0437\u044a\u044f\u0442\u0430 \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.", - "TooltipLinkedToMediaBrowserConnect": "\u0421\u0432\u044f\u0437\u044c \u0441 Media Browser Connect", + "TooltipLinkedToMediaBrowserConnect": "\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u044c \u0441 Media Browser Connect", "HeaderUnrated": "\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438", "ValueDiscNumber": "\u0414\u0438\u0441\u043a {0}", "HeaderUnknownDate": "\u041d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0430\u044f \u0434\u0430\u0442\u0430", @@ -710,7 +715,7 @@ "MessagePasswordResetForUsers": "\u041f\u0430\u0440\u043e\u043b\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u044a\u044f\u0442\u044b \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", "HeaderInviteGuest": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0433\u043e\u0441\u0442\u044f", "ButtonLinkMyMediaBrowserAccount": "\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c", - "MessageConnectAccountRequiredToInviteGuest": "\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c \u0433\u043e\u0441\u0442\u0435\u0439, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Media Browser \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.", + "MessageConnectAccountRequiredToInviteGuest": "\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c \u0433\u043e\u0441\u0442\u0435\u0439, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Media Browser \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c.", "ButtonSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c", "SyncMedia": "\u0421\u0438\u043d\u0445\u0440-\u0438\u044f", "HeaderCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", @@ -721,10 +726,6 @@ "LabelSyncTo": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0441:", "LabelSyncJobName": "\u0418\u043c\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440-\u0438\u0438:", "LabelQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e:", - "OptionOriginal": "\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435", - "OptionHigh": "\u0412\u044b\u0441\u043e\u043a\u043e\u0435", - "OptionMedium": "\u0421\u0440\u0435\u0434\u043d\u0435\u0435", - "OptionLow": "\u041d\u0438\u0437\u043a\u043e\u0435", "HeaderSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "OptionAutomaticallySyncNewContent": "\u0421\u0438\u043d\u0445\u0440-\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", "OptionAutomaticallySyncNewContentHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0435 \u0432 \u044d\u0442\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e, \u0430\u0432\u0442\u043e-\u043a\u0438 \u0441\u0438\u043d\u0445\u0440-\u0442\u0441\u044f \u0441 \u0443\u0441\u0442\u0440-\u043e\u043c.", @@ -737,9 +738,11 @@ "MessageUnsetContentHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438. \u0414\u043b\u044f \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0442\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u043f\u0430\u043f\u043e\u043a.", "SyncJobItemStatusQueued": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u0438", "SyncJobItemStatusConverting": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f", - "SyncJobItemStatusTransferring": "\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f", + "SyncJobItemStatusTransferring": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u0441\u044f", "SyncJobItemStatusSynced": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e", "SyncJobItemStatusFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u043e", "SyncJobItemStatusRemovedFromDevice": "\u0418\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "SyncJobItemStatusCancelled": "\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e" + "SyncJobItemStatusCancelled": "\u041e\u0442\u043c\u0435\u043d\u0435\u043d\u043e", + "LabelProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c:", + "LabelBitrateMbps": "\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c (\u041c\u0431\u0438\u0442\/\u0441):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json index cccab7018..46812271e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Users", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Kvaliteta:", - "OptionOriginal": "Original", - "OptionHigh": "Visoka", - "OptionMedium": "Srednja", - "OptionLow": "Nizka", "HeaderSettings": "Nastavitve", "OptionAutomaticallySyncNewContent": "Samodejno sinhroniziraj nove vsebine", "OptionAutomaticallySyncNewContentHelp": "Nova vsebina, dodana v to kategorijo, bo samodejno sinhronizirana v napravo", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 40a90d5b4..212f9a392 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Tack. Din donationskod har uppdaterats.", "MessageKeyRemoved": "Tack. Din donationskod har raderats.", "ErrorLaunchingChromecast": "Det gick inte att starta Chromecast. Kontrollera att enheten \u00e4r ansluten till det tr\u00e5dl\u00f6sa n\u00e4tverket.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Anv\u00e4ndare", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "V\u00e4lj undertexter", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(f\u00f6rvalda)", "LabelForcedStream": "(tvingade)", "LabelDefaultForcedStream": "(f\u00f6rvalda\/tvingade)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Synkronisera automatiskt nytt inneh\u00e5ll", "OptionAutomaticallySyncNewContentHelp": "Nytt inneh\u00e5ll som l\u00e4ggs till i denna kategori kommer automatiskt synkroniseras till enheten.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synkad", "SyncJobItemStatusFailed": "Misslyckades", "SyncJobItemStatusRemovedFromDevice": "Borttagen fr\u00e5n enhet", - "SyncJobItemStatusCancelled": "Avbruten" + "SyncJobItemStatusCancelled": "Avbruten", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 a1720162c..867500c67 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "Kullan\u0131c\u0131lar", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json index 8138f170e..33e3e5335 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u043e\u0432\u0430\u043d\u043e", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "\u0421\u043a\u0430\u0441\u043e\u0432\u0430\u043d\u043e" + "SyncJobItemStatusCancelled": "\u0421\u043a\u0430\u0441\u043e\u0432\u0430\u043d\u043e", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 1e6538c3d..85e6f730d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "d\u00f9ng", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 e5f8fb767..0afd39eea 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "\u8c22\u8c22\u3002\u4f60\u7684\u652f\u6301\u8005\u5e8f\u53f7\u5df2\u66f4\u65b0\u3002", "MessageKeyRemoved": "\u8c22\u8c22\u3002\u4f60\u7684\u652f\u6301\u8005\u5e8f\u53f7\u5df2\u79fb\u9664\u3002", "ErrorLaunchingChromecast": "\u542f\u52a8chromecast\u9047\u5230\u9519\u8bef\uff0c\u8bf7\u786e\u8ba4\u8bbe\u5907\u5df2\u7ecf\u8fde\u63a5\u5230\u4f60\u7684\u65e0\u7ebf\u7f51\u7edc\u3002", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u7528\u6237", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "\u9009\u62e9\u5b57\u5e55", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(\u9ed8\u8ba4)", "LabelForcedStream": "(\u5f3a\u5236)", "LabelDefaultForcedStream": "(\u9ed8\u8ba4\/\u5f3a\u5236)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 8523dcbe0..6afd967d3 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json @@ -36,8 +36,14 @@ "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", "ErrorLaunchingChromecast": "There was an error launching chromecast. Please ensure your device is connected to your wireless network.", + "MessageErrorLoadingSupporterInfo": "There was an error loading supporter information. Please try again later.", + "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Media Browser Connect members to enjoy free access to the following apps:", + "HeaderConfirmRemoveUser": "Remove User", + "MessageSwipeDownOnRemoteControl": "Welcome to remote control. Swipe down anywhere on this screen to go back to where you came from.", + "MessageConfirmRemoveConnectSupporter": "Are you sure you wish to remove additional supporter benefits from this user?", "ValueTimeLimitSingleHour": "Time limit: 1 hour", "ValueTimeLimitMultiHour": "Time limit: {0} hours", + "HeaderUsers": "\u7528\u6236", "PluginCategoryGeneral": "General", "PluginCategoryContentProvider": "Content Providers", "PluginCategoryScreenSaver": "Screen Savers", @@ -117,7 +123,6 @@ "HeaderSelectSubtitles": "Select Subtitles", "ButtonMarkForRemoval": "Remove from device", "ButtonUnmarkForRemoval": "Cancel removal from device", - "LabelSyncQualityHelp": "Select the desired quality. Original quality will sync the original file, regardless of whether the device is capable of playing it or not.", "LabelDefaultStream": "(Default)", "LabelForcedStream": "(Forced)", "LabelDefaultForcedStream": "(Default\/Forced)", @@ -721,10 +726,6 @@ "LabelSyncTo": "Sync to:", "LabelSyncJobName": "Sync job name:", "LabelQuality": "Quality:", - "OptionOriginal": "Original", - "OptionHigh": "High", - "OptionMedium": "Medium", - "OptionLow": "Low", "HeaderSettings": "Settings", "OptionAutomaticallySyncNewContent": "Automatically sync new content", "OptionAutomaticallySyncNewContentHelp": "New content added to this category will be automatically synced to the device.", @@ -741,5 +742,7 @@ "SyncJobItemStatusSynced": "Synced", "SyncJobItemStatusFailed": "Failed", "SyncJobItemStatusRemovedFromDevice": "Removed from device", - "SyncJobItemStatusCancelled": "Cancelled" + "SyncJobItemStatusCancelled": "Cancelled", + "LabelProfile": "Profile:", + "LabelBitrateMbps": "Bitrate (Mbps):" } \ 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 cd54793e4..43851c6f0 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -1,281 +1,4 @@ { - "LabelExit": "\u062e\u0631\u0648\u062c", - "LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u0642\u064a\u0627\u0633\u0649", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "LabelConfigureMediaBrowser": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631", - "LabelOpenLibraryViewer": "\u0641\u062a\u062d \u0645\u062a\u0635\u062d\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", - "LabelShowLogWindow": "\u0639\u0631\u0636 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0633\u062c\u0644", - "LabelPrevious": "\u0627\u0644\u0633\u0627\u0628\u0642", - "LabelFinish": "\u0627\u0646\u062a\u0647\u0627\u0621", - "LabelNext": "\u0627\u0644\u062a\u0627\u0644\u0649", - "LabelYoureDone": "\u062a\u0645 \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621!", - "WelcomeToMediaBrowser": "\u0645\u0631\u062d\u0628\u0627 \u0628\u0643 \u0644\u0644\u0645\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631!", - "TitleMediaBrowser": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631", - "ThisWizardWillGuideYou": "\u0645\u0631\u0634\u062f \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0633\u064a\u0633\u0627\u0639\u062f\u0643 \u062e\u0644\u0627\u0644 \u062e\u0637\u0648\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a. \u0644\u0644\u0628\u062f\u0621, \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u063a\u062a\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629.", - "TellUsAboutYourself": "\u0627\u062e\u0628\u0631\u0646\u0627 \u0639\u0646 \u0646\u0641\u0633\u0643", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0627\u0633\u0645\u0643 \u0627\u0644\u0627\u0648\u0644:", - "MoreUsersCanBeAddedLater": "\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u064a\u0645\u0643\u0646 \u0627\u0636\u0627\u0641\u062a\u0647\u0645 \u0644\u0627\u062d\u0642\u0627 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a.", - "UserProfilesIntro": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u0645\u062f\u0645\u062c \u0628\u0647 \u062f\u0639\u0645 \u0644\u0645\u0644\u0641\u0627\u062a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646, \u0648\u062a\u0645\u0643\u064a\u0646 \u0643\u0644 \u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0646 \u062d\u0635\u0648\u0644\u0647 \u0639\u0644\u0649 \u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u062e\u0627\u0635\u0647 \u0628\u0647\u0645, \u0648\u0627\u0644\u0640 playstate \u0648\u0627\u0644\u0631\u0642\u0627\u0628\u0629 \u0627\u0644\u0627\u0628\u0648\u064a\u0629.", - "LabelWindowsService": "\u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", - "AWindowsServiceHasBeenInstalled": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", - "WindowsServiceIntro1": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u0639\u0627\u062f\u0629 \u064a\u0639\u0645\u0644 \u0643\u0628\u0631\u0646\u0627\u0645\u062c \u0639\u0644\u0649 \u0633\u0637\u062d \u0627\u0644\u0645\u0643\u062a\u0628 \u0645\u0639 \u0627\u064a\u0642\u0648\u0646\u0629 \u0644\u0648\u062d\u0629 \u0627\u0644\u0646\u0638\u0627\u0645, \u0648\u0644\u0643\u0646 \u0627\u0630\u0627 \u0627\u062d\u0628\u0628\u062a \u0645\u0645\u0643\u0646 \u062a\u0634\u063a\u064a\u0644\u0647 \u0643\u062e\u062f\u0645\u0629 \u062e\u0644\u0641\u064a\u0629, \u064a\u0645\u0643\u0646 \u0627\u0646 \u064a\u0628\u062f\u0623 \u0645\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0648\u0646\u062f\u0648\u0632 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u0636\u0628\u0637 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a", - "LabelEnableVideoImageExtraction": "\u062a\u0641\u0639\u064a\u0644 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0635\u0648\u0631 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "\u0645\u0648\u0627\u0641\u0642", - "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "\u0627\u0639\u062f\u0627\u062f \u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "ButtonAddMediaFolder": "\u0627\u0636\u0627\u0641\u0629 \u0645\u062c\u0644\u062f \u0644\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelFolderType": "\u0646\u0648\u0639 \u0627\u0644\u0645\u062c\u0644\u062f:", - "ReferToMediaLibraryWiki": "\u0627\u0644\u0631\u062c\u0648\u0639 \u0627\u0644\u0649 wiki \u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelCountry": "\u0627\u0644\u0628\u0644\u062f:", - "LabelLanguage": "\u0627\u0644\u0644\u063a\u0629:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a:", - "LabelSaveLocalMetadata": "\u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637", - "LabelSaveLocalMetadataHelp": "\u0628\u062d\u0642\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0628\u0627\u0634\u0631\u0629 \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0633\u064a\u0633\u0647\u0644 \u0639\u0644\u064a\u0643 \u0627\u0644\u0648\u0635\u0648\u0644 \u0648\u0639\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u0627\u062a \u0639\u0644\u064a\u0647\u0627.", - "LabelDownloadInternetMetadata": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0627\u0646\u062a\u0631\u0646\u062a", - "LabelDownloadInternetMetadataHelp": "\u064a\u0645\u0643\u0646 \u0644\u0644\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0639\u0646 \u0648\u0633\u0627\u0626\u0637\u0643 \u0644\u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u063a\u0646\u064a\u0629.", - "TabPreferences": "\u062a\u0641\u0636\u064a\u0644\u0627\u062a", - "TabPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", - "TabLibraryAccess": "\u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0649 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "TabAccess": "Access", - "TabImage": "\u0635\u0648\u0631\u0629", - "TabProfile": "\u0633\u062c\u0644", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u0635\u0648\u062a:", - "LabelSubtitleLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u062a\u0631\u062c\u0645\u0629:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u0633\u062c\u0644 (\u0646\u0628\u0630\u0629)", - "TabSecurity": "\u062d\u0645\u0627\u064a\u0629", - "ButtonAddUser": "\u0627\u0636\u0627\u0641\u0629 \u0645\u0633\u062a\u062e\u062f\u0645", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u062a\u062e\u0632\u064a\u0646", - "ButtonResetPassword": "\u0645\u0633\u062d \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", - "LabelNewPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u062c\u062f\u064a\u062f\u0629:", - "LabelNewPasswordConfirm": "\u062a\u0627\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629:", - "HeaderCreatePassword": "\u0627\u0646\u0634\u0627\u0621 \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", - "LabelCurrentPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0627\u0644\u062d\u0627\u0644\u064a\u0629", - "LabelMaxParentalRating": "\u0627\u0644\u062d\u062f \u0627\u0644\u0627\u0642\u0635\u0649 \u0644\u0644\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647 \u0644\u0644\u0631\u0642\u0627\u0628\u0629 \u0627\u0644\u0627\u0628\u0648\u064a\u0629:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "\u0627\u0632\u0627\u0644\u0629 \u0635\u0648\u0631\u0629", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "\u062a\u062d\u0645\u064a\u0644", - "HeaderUploadNewImage": "\u062a\u062d\u0645\u064a\u0644 \u0635\u0648\u0631\u0629 \u062c\u062f\u064a\u062f\u0629", - "LabelDropImageHere": "\u0627\u0633\u0642\u0627\u0637 \u0627\u0644\u0635\u0648\u0631\u0629 \u0647\u0646\u0627", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "\u0644\u0627 \u0634\u0649\u0621 \u0647\u0646\u0627.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "\u0645\u0642\u062a\u0631\u062d", - "TabLatest": "\u0627\u0644\u0627\u062e\u064a\u0631", - "TabUpcoming": "\u0627\u0644\u0642\u0627\u062f\u0645", - "TabShows": "\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a", - "TabEpisodes": "\u0627\u0644\u062d\u0644\u0642\u0627\u062a", - "TabGenres": "\u0627\u0646\u0648\u0627\u0639", - "TabPeople": "\u0627\u0644\u0646\u0627\u0633", - "TabNetworks": "\u0627\u0644\u0634\u0628\u0643\u0627\u062a", - "HeaderUsers": "\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646", - "HeaderFilters": "\u0641\u0644\u062a\u0631\u0627\u062a:", - "ButtonFilter": "\u0641\u0644\u062a\u0631", - "OptionFavorite": "\u0627\u0644\u0645\u0641\u0636\u0644\u0627\u062a", - "OptionLikes": "\u0645\u062d\u0628\u0628", - "OptionDislikes": "\u0645\u0643\u0631\u0648\u0647", - "OptionActors": "\u0627\u0644\u0645\u0645\u062b\u0644\u0648\u0646", - "OptionGuestStars": "\u0636\u064a\u0648\u0641", - "OptionDirectors": "\u0627\u0644\u0645\u062e\u0631\u062c\u0648\u0646", - "OptionWriters": "\u0645\u0624\u0644\u0641\u0648\u0646", - "OptionProducers": "\u0645\u0646\u062a\u062c\u0648\u0646", - "HeaderResume": "\u0627\u0633\u062a\u0623\u0646\u0641", - "HeaderNextUp": "\u0627\u0644\u062a\u0627\u0644\u0649", - "NoNextUpItemsMessage": "\u0644\u0645 \u064a\u062a\u0645 \u0627\u064a\u062c\u0627\u062f \u0634\u0649\u0621, \u0627\u0628\u062f\u0627 \u0628\u0645\u0634\u0627\u0647\u062f\u0629 \u0628\u0631\u0627\u0645\u062c\u0643!", - "HeaderLatestEpisodes": "\u0627\u062d\u062f\u062b \u0627\u0644\u062d\u0644\u0642\u0627\u062a", - "HeaderPersonTypes": "\u0646\u0648\u0639\u064a\u0629 \u0627\u0644\u0634\u062e\u0635:", - "TabSongs": "\u0627\u0644\u0627\u063a\u0627\u0646\u0649", - "TabAlbums": "\u0627\u0644\u0628\u0648\u0645\u0627\u062a", - "TabArtists": "\u0627\u0644\u0641\u0646\u0627\u0646\u064a\u0646", - "TabAlbumArtists": "\u0627\u0644\u0628\u0648\u0645 \u0627\u0644\u0641\u0646\u0627\u0646\u064a\u0646", - "TabMusicVideos": "\u0645\u0648\u0633\u064a\u0642\u0649 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", - "ButtonSort": "\u062a\u0631\u062a\u064a\u0628", - "HeaderSortBy": "\u062a\u0631\u062a\u064a\u0628 \u062d\u0633\u0628:", - "HeaderSortOrder": "\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u0631\u062a\u064a\u0628:", - "OptionPlayed": "\u0645\u0639\u0632\u0648\u0641", - "OptionUnplayed": "\u063a\u064a\u0631 \u0645\u0639\u0632\u0648\u0641", - "OptionAscending": "\u062a\u0635\u0627\u0639\u062f\u0649", - "OptionDescending": "\u062a\u0646\u0627\u0632\u0644\u0649", - "OptionRuntime": "\u0632\u0645\u0646 \u0627\u0644\u062a\u0634\u063a\u064a\u0644", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "\u0639\u062f\u062f \u0627\u0644\u062a\u0634\u063a\u064a\u0644", - "OptionDatePlayed": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062a\u0634\u063a\u064a\u0644", - "OptionDateAdded": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0627\u0636\u0627\u0641\u0629", - "OptionAlbumArtist": "\u0627\u0644\u0628\u0648\u0645 \u0627\u0644\u0641\u0646\u0627\u0646", - "OptionArtist": "\u0641\u0646\u0627\u0646", - "OptionAlbum": "\u0627\u0644\u0628\u0648\u0645", - "OptionTrackName": "\u0627\u0633\u0645 \u0627\u0644\u0627\u063a\u0646\u064a\u0629", - "OptionCommunityRating": "\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", - "OptionNameSort": "\u0627\u0633\u0645", - "OptionFolderSort": "Folders", - "OptionBudget": "\u0645\u064a\u0632\u0627\u0646\u064a\u0629", - "OptionRevenue": "\u0627\u064a\u0631\u0627\u062f\u0627\u062a", - "OptionPoster": "\u0627\u0644\u0645\u0644\u0635\u0642", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "\u0627\u0637\u0627\u0631 \u0632\u0645\u0646\u0649", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0646\u0627\u0642\u062f", - "OptionVideoBitrate": "\u0645\u0639\u062f\u0644 \u0627\u0644\u0628\u062a \u0644\u0644\u0641\u064a\u062f\u064a\u0648", - "OptionResumable": "\u062a\u0643\u0645\u0644\u0629", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "\u062c\u062f\u0648\u0644\u0629 \u0627\u0644\u0645\u0647\u0627\u0645", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0639\u0631\u0636", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "\u0627\u0644\u0627\u062d\u062f", - "OptionMonday": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", - "OptionTuesday": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", - "OptionWednesday": "\u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621", - "OptionThursday": "\u0627\u0644\u062e\u0645\u064a\u0633", - "OptionFriday": "\u0627\u0644\u062c\u0645\u0639\u0629", - "OptionSaturday": "\u0627\u0644\u0633\u0628\u062a", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", "OptionMissingOverview": "Missing Overview", "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", @@ -917,6 +640,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +883,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1096,294 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u062e\u0631\u0648\u062c", + "LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u0642\u064a\u0627\u0633\u0649", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "LabelConfigureMediaBrowser": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631", + "LabelOpenLibraryViewer": "\u0641\u062a\u062d \u0645\u062a\u0635\u062d\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", + "LabelShowLogWindow": "\u0639\u0631\u0636 \u0646\u0627\u0641\u0630\u0629 \u0627\u0644\u0633\u062c\u0644", + "LabelPrevious": "\u0627\u0644\u0633\u0627\u0628\u0642", + "LabelFinish": "\u0627\u0646\u062a\u0647\u0627\u0621", + "LabelNext": "\u0627\u0644\u062a\u0627\u0644\u0649", + "LabelYoureDone": "\u062a\u0645 \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621!", + "WelcomeToMediaBrowser": "\u0645\u0631\u062d\u0628\u0627 \u0628\u0643 \u0644\u0644\u0645\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631!", + "TitleMediaBrowser": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631", + "ThisWizardWillGuideYou": "\u0645\u0631\u0634\u062f \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0633\u064a\u0633\u0627\u0639\u062f\u0643 \u062e\u0644\u0627\u0644 \u062e\u0637\u0648\u0627\u062a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a. \u0644\u0644\u0628\u062f\u0621, \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u062e\u062a\u064a\u0627\u0631 \u0644\u063a\u062a\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629.", + "TellUsAboutYourself": "\u0627\u062e\u0628\u0631\u0646\u0627 \u0639\u0646 \u0646\u0641\u0633\u0643", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0627\u0633\u0645\u0643 \u0627\u0644\u0627\u0648\u0644:", + "MoreUsersCanBeAddedLater": "\u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u064a\u0645\u0643\u0646 \u0627\u0636\u0627\u0641\u062a\u0647\u0645 \u0644\u0627\u062d\u0642\u0627 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a.", + "UserProfilesIntro": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u0645\u062f\u0645\u062c \u0628\u0647 \u062f\u0639\u0645 \u0644\u0645\u0644\u0641\u0627\u062a \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646, \u0648\u062a\u0645\u0643\u064a\u0646 \u0643\u0644 \u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0646 \u062d\u0635\u0648\u0644\u0647 \u0639\u0644\u0649 \u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u062e\u0627\u0635\u0647 \u0628\u0647\u0645, \u0648\u0627\u0644\u0640 playstate \u0648\u0627\u0644\u0631\u0642\u0627\u0628\u0629 \u0627\u0644\u0627\u0628\u0648\u064a\u0629.", + "LabelWindowsService": "\u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", + "AWindowsServiceHasBeenInstalled": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u062e\u062f\u0645\u0629 \u0627\u0644\u0648\u0646\u062f\u0648\u0632", + "WindowsServiceIntro1": "\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u0639\u0627\u062f\u0629 \u064a\u0639\u0645\u0644 \u0643\u0628\u0631\u0646\u0627\u0645\u062c \u0639\u0644\u0649 \u0633\u0637\u062d \u0627\u0644\u0645\u0643\u062a\u0628 \u0645\u0639 \u0627\u064a\u0642\u0648\u0646\u0629 \u0644\u0648\u062d\u0629 \u0627\u0644\u0646\u0638\u0627\u0645, \u0648\u0644\u0643\u0646 \u0627\u0630\u0627 \u0627\u062d\u0628\u0628\u062a \u0645\u0645\u0643\u0646 \u062a\u0634\u063a\u064a\u0644\u0647 \u0643\u062e\u062f\u0645\u0629 \u062e\u0644\u0641\u064a\u0629, \u064a\u0645\u0643\u0646 \u0627\u0646 \u064a\u0628\u062f\u0623 \u0645\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0644\u0648\u0646\u062f\u0648\u0632 \u0645\u0646 \u0644\u0648\u062d\u0629 \u0627\u0644\u062a\u062d\u0643\u0645 \u0628\u062f\u0644\u0627 \u0645\u0646 \u0630\u0644\u0643.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u0636\u0628\u0637 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a", + "LabelEnableVideoImageExtraction": "\u062a\u0641\u0639\u064a\u0644 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0635\u0648\u0631 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "\u0645\u0648\u0627\u0641\u0642", + "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "\u0627\u0639\u062f\u0627\u062f \u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "ButtonAddMediaFolder": "\u0627\u0636\u0627\u0641\u0629 \u0645\u062c\u0644\u062f \u0644\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelFolderType": "\u0646\u0648\u0639 \u0627\u0644\u0645\u062c\u0644\u062f:", + "ReferToMediaLibraryWiki": "\u0627\u0644\u0631\u062c\u0648\u0639 \u0627\u0644\u0649 wiki \u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelCountry": "\u0627\u0644\u0628\u0644\u062f:", + "LabelLanguage": "\u0627\u0644\u0644\u063a\u0629:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a:", + "LabelSaveLocalMetadata": "\u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637", + "LabelSaveLocalMetadataHelp": "\u0628\u062d\u0642\u0638 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0628\u0627\u0634\u0631\u0629 \u0641\u0649 \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0648\u0633\u0627\u0626\u0637 \u0633\u064a\u0633\u0647\u0644 \u0639\u0644\u064a\u0643 \u0627\u0644\u0648\u0635\u0648\u0644 \u0648\u0639\u0645\u0644 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u0627\u062a \u0639\u0644\u064a\u0647\u0627.", + "LabelDownloadInternetMetadata": "\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0627\u0639\u0645\u0627\u0644 \u0627\u0644\u0641\u0646\u064a\u0629 \u0648\u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0627\u0646\u062a\u0631\u0646\u062a", + "LabelDownloadInternetMetadataHelp": "\u064a\u0645\u0643\u0646 \u0644\u0644\u0645\u064a\u062f\u064a\u0627 \u0628\u0631\u0627\u0648\u0632\u0631 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0639\u0646 \u0648\u0633\u0627\u0626\u0637\u0643 \u0644\u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u063a\u0646\u064a\u0629.", + "TabPreferences": "\u062a\u0641\u0636\u064a\u0644\u0627\u062a", + "TabPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", + "TabLibraryAccess": "\u0627\u0644\u062f\u062e\u0648\u0644 \u0627\u0644\u0649 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "TabAccess": "Access", + "TabImage": "\u0635\u0648\u0631\u0629", + "TabProfile": "\u0633\u062c\u0644", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u0635\u0648\u062a:", + "LabelSubtitleLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u062a\u0631\u062c\u0645\u0629:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u0633\u062c\u0644 (\u0646\u0628\u0630\u0629)", + "TabSecurity": "\u062d\u0645\u0627\u064a\u0629", + "ButtonAddUser": "\u0627\u0636\u0627\u0641\u0629 \u0645\u0633\u062a\u062e\u062f\u0645", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u062a\u062e\u0632\u064a\u0646", + "ButtonResetPassword": "\u0645\u0633\u062d \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", + "LabelNewPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u062c\u062f\u064a\u062f\u0629:", + "LabelNewPasswordConfirm": "\u062a\u0627\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0627\u0644\u062c\u062f\u064a\u062f\u0629:", + "HeaderCreatePassword": "\u0627\u0646\u0634\u0627\u0621 \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631", + "LabelCurrentPassword": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0627\u0644\u062d\u0627\u0644\u064a\u0629", + "LabelMaxParentalRating": "\u0627\u0644\u062d\u062f \u0627\u0644\u0627\u0642\u0635\u0649 \u0644\u0644\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647 \u0644\u0644\u0631\u0642\u0627\u0628\u0629 \u0627\u0644\u0627\u0628\u0648\u064a\u0629:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "\u0627\u0632\u0627\u0644\u0629 \u0635\u0648\u0631\u0629", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "\u062a\u062d\u0645\u064a\u0644", + "HeaderUploadNewImage": "\u062a\u062d\u0645\u064a\u0644 \u0635\u0648\u0631\u0629 \u062c\u062f\u064a\u062f\u0629", + "LabelDropImageHere": "\u0627\u0633\u0642\u0627\u0637 \u0627\u0644\u0635\u0648\u0631\u0629 \u0647\u0646\u0627", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "\u0644\u0627 \u0634\u0649\u0621 \u0647\u0646\u0627.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "\u0645\u0642\u062a\u0631\u062d", + "TabLatest": "\u0627\u0644\u0627\u062e\u064a\u0631", + "TabUpcoming": "\u0627\u0644\u0642\u0627\u062f\u0645", + "TabShows": "\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a", + "TabEpisodes": "\u0627\u0644\u062d\u0644\u0642\u0627\u062a", + "TabGenres": "\u0627\u0646\u0648\u0627\u0639", + "TabPeople": "\u0627\u0644\u0646\u0627\u0633", + "TabNetworks": "\u0627\u0644\u0634\u0628\u0643\u0627\u062a", + "HeaderUsers": "\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646", + "HeaderFilters": "\u0641\u0644\u062a\u0631\u0627\u062a:", + "ButtonFilter": "\u0641\u0644\u062a\u0631", + "OptionFavorite": "\u0627\u0644\u0645\u0641\u0636\u0644\u0627\u062a", + "OptionLikes": "\u0645\u062d\u0628\u0628", + "OptionDislikes": "\u0645\u0643\u0631\u0648\u0647", + "OptionActors": "\u0627\u0644\u0645\u0645\u062b\u0644\u0648\u0646", + "OptionGuestStars": "\u0636\u064a\u0648\u0641", + "OptionDirectors": "\u0627\u0644\u0645\u062e\u0631\u062c\u0648\u0646", + "OptionWriters": "\u0645\u0624\u0644\u0641\u0648\u0646", + "OptionProducers": "\u0645\u0646\u062a\u062c\u0648\u0646", + "HeaderResume": "\u0627\u0633\u062a\u0623\u0646\u0641", + "HeaderNextUp": "\u0627\u0644\u062a\u0627\u0644\u0649", + "NoNextUpItemsMessage": "\u0644\u0645 \u064a\u062a\u0645 \u0627\u064a\u062c\u0627\u062f \u0634\u0649\u0621, \u0627\u0628\u062f\u0627 \u0628\u0645\u0634\u0627\u0647\u062f\u0629 \u0628\u0631\u0627\u0645\u062c\u0643!", + "HeaderLatestEpisodes": "\u0627\u062d\u062f\u062b \u0627\u0644\u062d\u0644\u0642\u0627\u062a", + "HeaderPersonTypes": "\u0646\u0648\u0639\u064a\u0629 \u0627\u0644\u0634\u062e\u0635:", + "TabSongs": "\u0627\u0644\u0627\u063a\u0627\u0646\u0649", + "TabAlbums": "\u0627\u0644\u0628\u0648\u0645\u0627\u062a", + "TabArtists": "\u0627\u0644\u0641\u0646\u0627\u0646\u064a\u0646", + "TabAlbumArtists": "\u0627\u0644\u0628\u0648\u0645 \u0627\u0644\u0641\u0646\u0627\u0646\u064a\u0646", + "TabMusicVideos": "\u0645\u0648\u0633\u064a\u0642\u0649 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "ButtonSort": "\u062a\u0631\u062a\u064a\u0628", + "HeaderSortBy": "\u062a\u0631\u062a\u064a\u0628 \u062d\u0633\u0628:", + "HeaderSortOrder": "\u0646\u0638\u0627\u0645 \u0627\u0644\u062a\u0631\u062a\u064a\u0628:", + "OptionPlayed": "\u0645\u0639\u0632\u0648\u0641", + "OptionUnplayed": "\u063a\u064a\u0631 \u0645\u0639\u0632\u0648\u0641", + "OptionAscending": "\u062a\u0635\u0627\u0639\u062f\u0649", + "OptionDescending": "\u062a\u0646\u0627\u0632\u0644\u0649", + "OptionRuntime": "\u0632\u0645\u0646 \u0627\u0644\u062a\u0634\u063a\u064a\u0644", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "\u0639\u062f\u062f \u0627\u0644\u062a\u0634\u063a\u064a\u0644", + "OptionDatePlayed": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062a\u0634\u063a\u064a\u0644", + "OptionDateAdded": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0627\u0636\u0627\u0641\u0629", + "OptionAlbumArtist": "\u0627\u0644\u0628\u0648\u0645 \u0627\u0644\u0641\u0646\u0627\u0646", + "OptionArtist": "\u0641\u0646\u0627\u0646", + "OptionAlbum": "\u0627\u0644\u0628\u0648\u0645", + "OptionTrackName": "\u0627\u0633\u0645 \u0627\u0644\u0627\u063a\u0646\u064a\u0629", + "OptionCommunityRating": "\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", + "OptionNameSort": "\u0627\u0633\u0645", + "OptionFolderSort": "Folders", + "OptionBudget": "\u0645\u064a\u0632\u0627\u0646\u064a\u0629", + "OptionRevenue": "\u0627\u064a\u0631\u0627\u062f\u0627\u062a", + "OptionPoster": "\u0627\u0644\u0645\u0644\u0635\u0642", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "\u0627\u0637\u0627\u0631 \u0632\u0645\u0646\u0649", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0646\u0627\u0642\u062f", + "OptionVideoBitrate": "\u0645\u0639\u062f\u0644 \u0627\u0644\u0628\u062a \u0644\u0644\u0641\u064a\u062f\u064a\u0648", + "OptionResumable": "\u062a\u0643\u0645\u0644\u0629", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "\u062c\u062f\u0648\u0644\u0629 \u0627\u0644\u0645\u0647\u0627\u0645", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0639\u0631\u0636", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "\u0627\u0644\u0627\u062d\u062f", + "OptionMonday": "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", + "OptionTuesday": "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", + "OptionWednesday": "\u0627\u0644\u0627\u0631\u0628\u0639\u0627\u0621", + "OptionThursday": "\u0627\u0644\u062e\u0645\u064a\u0633", + "OptionFriday": "\u0627\u0644\u062c\u0645\u0639\u0629", + "OptionSaturday": "\u0627\u0644\u0633\u0628\u062a", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json index b455cf727..089c6e166 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json @@ -1,289 +1,4 @@ { - "LabelExit": "\u0418\u0437\u043b\u0435\u0437", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e", - "LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", - "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "LabelConfigureMediaBrowser": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Media Browser", - "LabelOpenLibraryViewer": "\u041e\u0442\u0432\u043e\u0440\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", - "LabelShowLogWindow": "\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u043e\u0433\u043e\u0432\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446", - "LabelPrevious": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", - "LabelFinish": "\u041a\u0440\u0430\u0439", - "LabelNext": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", - "LabelYoureDone": "\u0413\u043e\u0442\u043e\u0432\u0438 \u0441\u0442\u0435!", - "WelcomeToMediaBrowser": "\u0414\u043e\u0431\u0440\u0435 \u0434\u043e\u0448\u043b\u0438 \u0432 Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u0422\u043e\u0437\u0438 \u043c\u0430\u0433\u044c\u043e\u0441\u043d\u0438\u043a \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u044a\u0442\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0430 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. \u0417\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435, \u043c\u043e\u043b\u044f \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u043e\u0442 \u0432\u0430\u0441 \u0435\u0437\u0438\u043a.", - "TellUsAboutYourself": "\u0420\u0430\u0437\u043a\u0430\u0436\u0435\u0442\u0435 \u0437\u0430 \u0441\u0435\u0431\u0435 \u0441\u0438", - "ButtonQuickStartGuide": "\u0420\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0437\u0430 \u0431\u044a\u0440\u0437\u043e \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u043d\u0435", - "LabelYourFirstName": "\u041f\u044a\u0440\u0432\u043e\u0442\u043e \u0432\u0438 \u0438\u043c\u0435:", - "MoreUsersCanBeAddedLater": "\u041f\u043e\u0432\u0435\u0447\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438 \u043f\u043e-\u043a\u044a\u0441\u043d\u043e \u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b.", - "UserProfilesIntro": "Media Browser \u0432\u043a\u043b\u044e\u0447\u0432\u0430 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u0434\u0430 \u0438\u043c\u0430\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service \u0431\u0435\u0448\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d.", - "WindowsServiceIntro1": "Media Browser Server \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0438 \u043a\u0430\u0442\u043e \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 tray \u0438\u043a\u043e\u043d\u0430, \u043d\u043e \u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0442\u0435 \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u0432\u044a\u0432 \u0444\u043e\u043d\u043e\u0432 \u0440\u0435\u0436\u0438\u043c, \u0442\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b \u043d\u0430 Windows Services.", - "WindowsServiceIntro2": "\u0410\u043a\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 Windows \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430, \u043c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0442\u043e\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0443\u0441\u043d\u0430\u0442 \u0434\u043e\u043a\u0430\u0442\u043e \u044f \u0438\u043c\u0430 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u0432 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 ,\u0442\u0430\u043a\u0430 \u0447\u0435 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442 \u043d\u0435\u044f, \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430. \u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0441\u044a\u0449\u043e \u0442\u0430\u043a\u0430 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430 \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0447\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b. \u041c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0432 \u0442\u043e\u0437\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u043d\u0435 \u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u043d\u043e, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0449\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430\u0442 \u0440\u044a\u0447\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", - "WizardCompleted": "\u0422\u043e\u0432\u0430 \u0435 \u0432\u0441\u0438\u0447\u043a\u043e \u043e\u0442 \u043a\u043e\u0435\u0442\u043e \u0441\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u043c \u0437\u0430\u0441\u0435\u0433\u0430. Media Browser \u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u043b \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430. \u0412\u0438\u0436\u0442\u0435 \u043d\u044f\u043a\u043e\u0438 \u043e\u0442 \u043d\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 \u041a\u0440\u0430\u0439<\/b>. \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0413\u043b\u0430\u0432\u0435\u043d \u043f\u0430\u043d\u0435\u043b \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430<\/b>.", - "LabelConfigureSettings": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "LabelEnableVideoImageExtraction": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.", - "VideoImageExtractionHelp": "\u0417\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u043e\u0432\u0435, \u043a\u043e\u0438\u0442\u043e \u0432\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437\u043f\u043e\u043b\u0430\u0433\u0430\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u0437\u0430 \u043a\u043e\u0438\u0442\u043e \u043d\u0435 \u0441\u043c\u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0432\u0430. \u0422\u043e\u0432\u0430 \u0449\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u043a\u044a\u043c \u043f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430, \u043d\u043e \u0449\u0435 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u043f\u043e-\u043f\u0440\u0438\u044f\u0442\u0435\u043d \u0432\u0438\u0434.", - "LabelEnableChapterImageExtractionForMovies": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u0438\u0442\u0435 \u0437\u0430 \u0424\u0438\u043b\u043c\u0438.", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432\u0435\u0442\u0435", - "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0442\u0435\u0440\u0430 \u0437\u0430 \u043b\u0435\u0441\u0435\u043d \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f. \u0422\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438 \u0441 \u043d\u044f\u043a\u043e\u0438 \u0440\u0443\u0442\u0435\u0440\u0438.", - "HeaderTermsOfService": "Media Browser \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u041f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "MessagePleaseAcceptTermsOfService": "\u041c\u043e\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442, \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435.", - "OptionIAcceptTermsOfService": "\u041f\u0440\u0438\u0435\u043c\u0430\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "ButtonPrivacyPolicy": "\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442", - "ButtonTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", - "HeaderDeveloperOptions": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", - "OptionEnableWebClientResponseCache": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043a\u0435\u0448\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438\u0442\u0435", - "OptionDisableForDevelopmentHelp": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439\u0442\u0435 \u0442\u0435\u0437\u0438 \u0441\u043f\u043e\u0440\u0435\u0434 \u043d\u0443\u0436\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438.", - "OptionEnableWebClientResourceMinification": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0441\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435(\u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "LabelDashboardSourcePath": "\u0413\u043b\u0430\u0432\u0435\u043d \u043f\u044a\u0442 \u043a\u044a\u043c \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "LabelDashboardSourcePathHelp": "\u0410\u043a\u043e \u043f\u0443\u0441\u043a\u0430\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043e\u0442 \u0438\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434, \u043f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u043f\u044a\u0442\u044f \u043a\u044a\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0442\u043e \u0442\u0430\u0431\u043b\u043e. \u0412\u0441\u0438\u0447\u043a\u0438 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0432\u0430\u043d\u0438 \u043e\u0442 \u0442\u0430\u043c.", - "ButtonConvertMedia": "\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", - "ButtonOrganize": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0438\u0440\u0430\u0439", - "LabelPinCode": "Pin code:", - "ButtonOk": "\u041e\u043a", - "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438", - "ButtonExit": "Exit", - "ButtonNew": "\u041d\u043e\u0432", - "HeaderTV": "TV", - "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderPaths": "\u041f\u044a\u0442\u0438\u0449\u0430", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", - "ButtonDonateWithPayPal": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u0434\u0430\u0440\u0435\u043d\u0438\u0435 \u0441 PayPal", - "OptionDetectArchiveFilesAsMedia": "\u0420\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435", - "OptionDetectArchiveFilesAsMediaHelp": "\u0410\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 \u0440\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438\u044f .rar \u0438 .zip \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435.", - "LabelEnterConnectUserName": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 email:", - "LabelEnterConnectUserNameHelp": "\u0422\u043e\u0432\u0430 \u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e\u0442\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f Media Brower \u043e\u043d\u043b\u0430\u0439\u043d \u0430\u043a\u0430\u0443\u043d\u0442.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "\u0421\u0438\u043d\u0445\u0440. \u0417\u0430\u0434\u0430\u0447\u0430", - "FolderTypeMixed": "\u0421\u043c\u0435\u0441\u0435\u043d\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", - "FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", - "FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeGames": "\u0418\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", - "LabelContentType": "\u0422\u0438\u043f \u043d\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e:", - "TitleScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438", - "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0441\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", - "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043c\u0435\u0434\u0438\u0439\u043d\u0430 \u043f\u0430\u043f\u043a\u0430", - "LabelFolderType": "\u0422\u0438\u043f \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430:", - "ReferToMediaLibraryWiki": "\u0414\u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0435 \u0434\u043e wiki \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", - "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", - "LabelLanguage": "\u0415\u0437\u0438\u043a:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "\u041f\u0440\u0438\u0441\u044a\u0435\u0434\u0438\u043d\u0435\u0442\u0435 \u0441\u0435 \u043a\u044a\u043c \u043e\u0442\u0431\u043e\u0440\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438\u0442\u0435", - "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430:", - "LabelSaveLocalMetadata": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", - "LabelSaveLocalMetadataHelp": "\u0417\u0430\u043f\u043e\u043c\u043d\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438 \u0449\u0435 \u0433\u0438 \u0441\u043b\u043e\u0436\u0438 \u043d\u0430 \u043c\u044f\u0441\u0442\u043e, \u043a\u044a\u0434\u0435\u0442\u043e \u043b\u0435\u0441\u043d\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0438.", - "LabelDownloadInternetMetadata": "\u0421\u0432\u0430\u043b\u044f\u0439 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442", - "LabelDownloadInternetMetadataHelp": "Media Browser \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0432\u0430\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u043c\u0435\u0434\u0438\u044f, \u043a\u043e\u0435\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435.", - "TabPreferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f", - "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u0430", - "TabLibraryAccess": "\u0414\u043e\u0441\u044a\u043f \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "TabAccess": "\u0414\u043e\u0441\u0442\u044a\u043f", - "TabImage": "\u041a\u0430\u0440\u0442\u0438\u043d\u0430", - "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b", - "TabMetadata": "\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", - "TabImages": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", - "TabNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", - "TabCollectionTitles": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", - "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u044a\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0442\u0430", - "OptionEnableAccessFromAllDevices": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "OptionEnableAccessToAllChannels": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438", - "OptionEnableAccessToAllLibraries": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438", - "DeviceAccessHelp": "\u0422\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0441\u0430\u043c\u043e \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0438\u0442\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d\u0438 \u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u043f\u043e\u043f\u0440\u0435\u0447\u0438 \u043d\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440. \u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0449\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438 \u0442\u0443\u043a.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043b\u0438\u043f\u0441\u0432\u0430\u0449\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", - "LabelUnairedMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043d\u0435\u0438\u0437\u043b\u044a\u0447\u0435\u043d\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", - "HeaderVideoPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", - "HeaderPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e", - "LabelAudioLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e:", - "LabelSubtitleLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", - "OptionDefaultSubtitles": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", - "OptionOnlyForcedSubtitles": "\u0421\u0430\u043c\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionAlwaysPlaySubtitles": "\u0412\u0438\u043d\u0430\u0433\u0438 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u0443\u0434\u0438\u043e\u0442\u043e \u0435 \u043d\u0430 \u0434\u0440\u0443\u0433 \u0435\u0437\u0438\u043a.", - "OptionOnlyForcedSubtitlesHelp": "\u0421\u0430\u043c\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438", - "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u043e\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u0435, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0435\u0437\u0438\u043a\u0430 \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e.", - "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", - "TabSecurity": "\u0417\u0430\u0449\u0438\u0442\u0430", - "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043b\u043e\u043a\u0430\u043b\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonInviteUser": "\u041f\u043e\u043a\u0430\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", - "ButtonSave": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438", - "ButtonResetPassword": "\u041d\u0443\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0430", - "LabelNewPassword": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", - "LabelNewPasswordConfirm": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430(\u043e\u0442\u043d\u043e\u0432\u043e):", - "HeaderCreatePassword": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u043f\u0430\u0440\u043e\u043b\u0430", - "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", - "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433:", - "MaxParentalRatingHelp": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e-\u0432\u0438\u0441\u043e\u043a \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0441\u043a\u0440\u0438\u0442\u043e \u043e\u0442 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b.", - "LibraryAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", - "ChannelAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", - "ButtonDeleteImage": "\u0418\u0437\u0442\u0440\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", - "LabelSelectUsers": "\u0418\u0437\u0431\u0435\u0440\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438:", - "ButtonUpload": "\u041a\u0430\u0447\u0438:", - "HeaderUploadNewImage": "\u041a\u0430\u0447\u0438 \u041d\u043e\u0432\u043e \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:", - "LabelDropImageHere": "\u041f\u0443\u0441\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0442\u0443\u043a", - "ImageUploadAspectRatioHelp": "1:1 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0430\u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f. \u0421\u0430\u043c\u043e JPG\/PNG", - "MessageNothingHere": "\u0422\u0443\u043a \u043d\u044f\u043c\u0430 \u043d\u0438\u0449\u043e.", - "MessagePleaseEnsureInternetMetadata": "\u041c\u043e\u043b\u044f, \u0443\u0432\u0435\u0440\u0435\u0442\u0435 \u0441\u0435 \u0447\u0435 \u0441\u0432\u0430\u043b\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e.", - "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f", - "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438", - "TabUpcoming": "\u041f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438", - "TabShows": "\u041f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", - "TabEpisodes": "\u0415\u043f\u0438\u0437\u043e\u0434\u0438", - "TabGenres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435", - "TabPeople": "\u0425\u043e\u0440\u0430", - "TabNetworks": "\u041c\u0440\u0435\u0436\u0438", - "HeaderUsers": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", - "HeaderFilters": "\u0424\u0438\u043b\u0442\u0440\u0438:", - "ButtonFilter": "\u0424\u0438\u043b\u0442\u044a\u0440", - "OptionFavorite": "\u041b\u044e\u0431\u0438\u043c\u0438:", - "OptionLikes": "\u0425\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0438\u044f", - "OptionDislikes": "\u041d\u0435\u0445\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0438\u044f", - "OptionActors": "\u0410\u043a\u0442\u044c\u043e\u0440\u0438", - "OptionGuestStars": "\u0413\u043e\u0441\u0442\u0443\u0432\u0430\u0449\u0438 \u0437\u0432\u0435\u0437\u0434\u0438", - "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u044c\u043e\u0440\u0438", - "OptionWriters": "\u041f\u0438\u0441\u0430\u0442\u0435\u043b\u0438", - "OptionProducers": "\u041f\u0440\u043e\u0434\u0443\u0446\u0435\u043d\u0442\u0438", - "HeaderResume": "\u041f\u0440\u043e\u0436\u044a\u043b\u0436\u0438", - "HeaderNextUp": "\u0421\u043b\u0435\u0434\u0432\u0430", - "NoNextUpItemsMessage": "\u041d\u0438\u0449\u043e \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043e. \u0417\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u0434\u0430 \u0433\u043b\u0435\u0434\u0430\u0442\u0435 \u0432\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f!", - "HeaderLatestEpisodes": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0415\u043f\u0438\u0437\u043e\u0434\u0438", - "HeaderPersonTypes": "\u0422\u0438\u043f\u043e\u0432\u0435 \u0425\u043e\u0440\u0430:", - "TabSongs": "\u041f\u0435\u0441\u043d\u0438", - "TabAlbums": "\u0410\u043b\u0431\u0443\u043c\u0438", - "TabArtists": "\u0410\u0440\u0442\u0438\u0441\u0442\u0438", - "TabAlbumArtists": "\u0410\u043b\u0431\u0443\u043c\u043e\u0432\u0438 \u0410\u0440\u0442\u0438\u0441\u0442\u0438", - "TabMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "ButtonSort": "\u041f\u043e\u0434\u0440\u0435\u0434\u0438", - "HeaderSortBy": "\u041f\u043e\u0434\u0440\u0435\u0434\u0438 \u043f\u043e:", - "HeaderSortOrder": "\u0420\u0435\u0434 \u043d\u0430 \u043f\u043e\u0434\u0440\u0435\u0434\u0431\u0430:", - "OptionPlayed": "\u041f\u0443\u0441\u043a\u0430\u043d\u0438", - "OptionUnplayed": "\u041d\u0435 \u043f\u0443\u0441\u043a\u0430\u043d\u0438", - "OptionAscending": "\u0412\u044a\u0437\u0445\u043e\u0434\u044f\u0449", - "OptionDescending": "\u041d\u0438\u0437\u0445\u043e\u0434\u044f\u0449", - "OptionRuntime": "\u0412\u0440\u0435\u043c\u0435\u0442\u0440\u0430\u0435\u043d\u0435", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u043d\u0435", - "OptionPlayCount": "\u0411\u0440\u043e\u0439 \u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f", - "OptionDatePlayed": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435", - "OptionDateAdded": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435", - "OptionAlbumArtist": "\u0410\u043b\u0431\u0443\u043c\u043e\u0432 \u0410\u0440\u0442\u0438\u0441\u0442", - "OptionArtist": "\u0410\u0440\u0442\u0438\u0441\u0442", - "OptionAlbum": "\u0410\u043b\u0431\u0443\u043c", - "OptionTrackName": "\u0418\u043c\u0435 \u043d\u0430 \u043f\u0435\u0441\u0435\u043d\u0442\u0430:", - "OptionCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u0430 \u043e\u0449\u0435\u043d\u043a\u0430", - "OptionNameSort": "Name", - "OptionFolderSort": "\u041f\u0430\u043f\u043a\u0438", - "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", - "OptionRevenue": "\u041f\u0440\u0438\u0445\u043e\u0434\u0438", - "OptionPoster": "\u041f\u043b\u0430\u043a\u0430\u0442", - "OptionPosterCard": "\u041a\u0430\u0440\u0442\u0430 \u043f\u043b\u0430\u043a\u0430\u0442", - "OptionBackdrop": "\u0424\u043e\u043d", - "OptionTimeline": "\u0413\u0440\u0430\u0444\u0438\u043a", - "OptionThumb": "\u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430", - "OptionThumbCard": "\u041a\u0430\u0440\u0442\u0430 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430", - "OptionBanner": "\u0411\u0430\u043d\u0435\u0440", - "OptionCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0446\u0438\u0442\u0435", - "OptionVideoBitrate": "\u0412\u0438\u0434\u0435\u043e \u0431\u0438\u0442\u0440\u0435\u0439\u0442", - "OptionResumable": "\u0412\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0441\u0442", - "ScheduledTasksHelp": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u0437\u0430 \u0434\u0430 \u043d\u0430\u0433\u043b\u0430\u0441\u0438\u0442\u0435 \u043f\u043b\u0430\u043d\u0430 \u045d.", - "ScheduledTasksTitle": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0417\u0430\u0434\u0430\u0447\u0438", - "TabMyPlugins": "\u041c\u043e\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438", - "TabCatalog": "\u041a\u0430\u0442\u0430\u043b\u043e\u0433", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0438 \u0412\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", - "HeaderNowPlaying": "\u0421\u0435\u0433\u0430 \u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u043e:", - "HeaderLatestAlbums": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0410\u043b\u0431\u0443\u043c\u0438", - "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u041f\u0435\u0441\u043d\u0438", - "HeaderRecentlyPlayed": "\u0421\u043a\u043e\u0440\u043e \u041f\u0443\u0441\u043a\u0430\u043d\u0438", - "HeaderFrequentlyPlayed": "\u0427\u0435\u0441\u0442\u043e \u041f\u0443\u0441\u043a\u0430\u043d\u0438", - "DevBuildWarning": "\u0412\u0435\u0440\u0441\u0438\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438 \u0441\u0430 \u043d\u0430\u0439-\u043d\u043e\u0432\u043e\u0442\u043e. \u0422\u0435 \u0441\u0435 \u0432\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u0442 \u0447\u0435\u0441\u0442\u043e, \u043d\u043e \u043d\u0435 \u0441\u0435 \u0442\u0435\u0441\u0442\u0432\u0430\u0442. \u041c\u043e\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0434\u0430 \u0441\u0435 \u0447\u0443\u043f\u0438 \u0438 \u0446\u0435\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0449\u043e \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u044f\u0442.", - "LabelVideoType": "\u0422\u0438\u043f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u0442\u043e:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "\u0424\u0443\u043d\u043a\u0446\u0438\u0438:", - "LabelService": "\u0423\u0441\u043b\u0443\u0433\u0430:", - "LabelStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", - "LabelVersion": "\u0412\u0435\u0440\u0441\u0438\u044f:", - "LabelLastResult": "\u041f\u043e\u0441\u043b\u0435\u0434\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442:", - "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440", - "OptionHasThemeSong": "\u0424\u043e\u043d\u043e\u0432\u0430 \u041f\u0435\u0441\u0435\u043d", - "OptionHasThemeVideo": "\u0424\u043e\u043d\u043e\u0432\u043e \u0412\u0438\u0434\u0435\u043e", - "TabMovies": "\u0424\u0438\u043b\u043c\u0438", - "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u0430", - "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440\u0438", - "LabelArtists": "\u0410\u0440\u0442\u0438\u0441\u0442\u0438:", - "LabelArtistsHelp": "\u041e\u0442\u0434\u0435\u043b\u0435\u0442\u0435 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441 ;", - "HeaderLatestMovies": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0424\u0438\u043b\u043c\u0438", - "HeaderLatestTrailers": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0422\u0440\u0435\u0439\u043b\u044a\u0440\u0438", - "OptionHasSpecialFeatures": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u043d\u0438 \u0414\u043e\u0431\u0430\u0432\u043a\u0438", - "OptionImdbRating": "IMDb \u0420\u0435\u0439\u0442\u0438\u043d\u0433", - "OptionParentalRating": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0420\u0435\u0439\u0442\u0438\u043d\u0433", - "OptionPremiereDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u0435\u043c\u0438\u0435\u0440\u0430", - "TabBasic": "\u041e\u0441\u043d\u043e\u0432\u043d\u0438", - "TabAdvanced": "\u0414\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u0438", - "HeaderStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", - "OptionContinuing": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u0449\u043e", - "OptionEnded": "\u041f\u0440\u0438\u043a\u043b\u044e\u0447\u0438\u043b\u043e", - "HeaderAirDays": "\u0414\u043d\u0438 \u043d\u0430 \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435", - "OptionSunday": "\u041d\u0435\u0434\u0435\u043b\u044f", - "OptionMonday": "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", - "OptionTuesday": "\u0412\u0442\u043e\u0440\u043d\u0438\u043a", - "OptionWednesday": "\u0421\u0440\u044f\u0434\u0430", - "OptionThursday": "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", - "OptionFriday": "\u041f\u0435\u0442\u044a\u043a", - "OptionSaturday": "\u0421\u044a\u0431\u043e\u0442\u0430", - "HeaderManagement": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435", - "LabelManagement": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:", - "OptionMissingImdbId": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u043e IMDb ID", - "OptionMissingTvdbId": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u043e TheTVDB ID", - "OptionMissingOverview": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u0430 \u043e\u0431\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", - "OptionFileMetadataYearMismatch": "\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 \u0432\u044a\u0432 \u0424\u0430\u0439\u043b\/\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", - "TabGeneral": "\u0413\u043b\u0430\u0432\u043d\u043e", - "TitleSupport": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430", - "TabLog": "\u041b\u043e\u0433", - "TabAbout": "\u041e\u0442\u043d\u043e\u0441\u043d\u043e", - "TabSupporterKey": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a\u043e\u0432 \u043a\u043b\u044e\u0447", - "TabBecomeSupporter": "\u0421\u0442\u0430\u043d\u0438 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a", "MediaBrowserHasCommunity": "Media Browser \u0438\u043c\u0430 \u043f\u0440\u043e\u0446\u044a\u0444\u0442\u044f\u0432\u0430\u0449\u0430 \u043e\u0431\u0449\u043d\u043e\u0441\u0442 \u043e\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0438 \u0441\u044a\u0442\u0440\u0443\u0434\u043d\u0438\u0446\u0438.", "CheckoutKnowledgeBase": "\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u043d\u0430\u0448\u0430\u0442\u0430 \u0431\u0430\u0437\u0430 \u043e\u0442 \u0437\u043d\u0430\u043d\u0438\u044f, \u0437\u0430 \u0434\u0430 \u0432\u0438 \u043f\u043e\u043c\u043e\u0433\u043d\u0435 \u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u043d\u0430\u0439-\u0434\u043e\u0431\u0440\u043e\u0442\u043e \u043e\u0442 Media Browser.", "SearchKnowledgeBase": "\u0422\u044a\u0440\u0441\u0438 \u0432 \u0411\u0430\u0437\u0430\u0442\u0430 \u043e\u0442 \u0417\u043d\u0430\u043d\u0438\u044f", @@ -917,6 +632,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +875,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1088,302 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u0418\u0437\u043b\u0435\u0437", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e", + "LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", + "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", + "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "LabelConfigureMediaBrowser": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Media Browser", + "LabelOpenLibraryViewer": "\u041e\u0442\u0432\u043e\u0440\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", + "LabelShowLogWindow": "\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u043e\u0433\u043e\u0432\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446", + "LabelPrevious": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", + "LabelFinish": "\u041a\u0440\u0430\u0439", + "LabelNext": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", + "LabelYoureDone": "\u0413\u043e\u0442\u043e\u0432\u0438 \u0441\u0442\u0435!", + "WelcomeToMediaBrowser": "\u0414\u043e\u0431\u0440\u0435 \u0434\u043e\u0448\u043b\u0438 \u0432 Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u0422\u043e\u0437\u0438 \u043c\u0430\u0433\u044c\u043e\u0441\u043d\u0438\u043a \u0449\u0435 \u0432\u0438 \u043d\u0430\u043f\u044a\u0442\u0441\u0442\u0432\u0430 \u043f\u0440\u0435\u0437 \u043f\u0440\u043e\u0446\u0435\u0441\u0430 \u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f. \u0417\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435, \u043c\u043e\u043b\u044f \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u043e\u0442 \u0432\u0430\u0441 \u0435\u0437\u0438\u043a.", + "TellUsAboutYourself": "\u0420\u0430\u0437\u043a\u0430\u0436\u0435\u0442\u0435 \u0437\u0430 \u0441\u0435\u0431\u0435 \u0441\u0438", + "ButtonQuickStartGuide": "\u0420\u044a\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0437\u0430 \u0431\u044a\u0440\u0437\u043e \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u043d\u0435", + "LabelYourFirstName": "\u041f\u044a\u0440\u0432\u043e\u0442\u043e \u0432\u0438 \u0438\u043c\u0435:", + "MoreUsersCanBeAddedLater": "\u041f\u043e\u0432\u0435\u0447\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0434\u043e\u0431\u0430\u0432\u0435\u043d\u0438 \u043f\u043e-\u043a\u044a\u0441\u043d\u043e \u043e\u0442 \u0433\u043b\u0430\u0432\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b.", + "UserProfilesIntro": "Media Browser \u0432\u043a\u043b\u044e\u0447\u0432\u0430 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438, \u043a\u043e\u0438\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u0434\u0430 \u0438\u043c\u0430\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f, \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u0438 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service \u0431\u0435\u0448\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d.", + "WindowsServiceIntro1": "Media Browser Server \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0438 \u043a\u0430\u0442\u043e \u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 tray \u0438\u043a\u043e\u043d\u0430, \u043d\u043e \u0430\u043a\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0442\u0435 \u0434\u0430 \u0433\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0442\u0435 \u043a\u0430\u0442\u043e \u0443\u0441\u043b\u0443\u0433\u0430 \u0432\u044a\u0432 \u0444\u043e\u043d\u043e\u0432 \u0440\u0435\u0436\u0438\u043c, \u0442\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b \u043d\u0430 Windows Services.", + "WindowsServiceIntro2": "\u0410\u043a\u043e \u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 Windows \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430, \u043c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0442\u043e\u0439 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0443\u0441\u043d\u0430\u0442 \u0434\u043e\u043a\u0430\u0442\u043e \u044f \u0438\u043c\u0430 \u0438\u043a\u043e\u043d\u0430\u0442\u0430 \u0432 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 ,\u0442\u0430\u043a\u0430 \u0447\u0435 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442 \u043d\u0435\u044f, \u0437\u0430 \u0434\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430. \u0423\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u0441\u044a\u0449\u043e \u0442\u0430\u043a\u0430 \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0430 \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438 \u0447\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043d\u0438\u044f \u043f\u0430\u043d\u0435\u043b. \u041c\u043e\u043b\u044f, \u0438\u043c\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0438\u0434, \u0447\u0435 \u0432 \u0442\u043e\u0437\u0438 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0441\u043b\u0443\u0433\u0430\u0442\u0430 \u043d\u0435 \u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u043d\u043e, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0449\u0435 \u0438\u0437\u0438\u0441\u043a\u0432\u0430\u0442 \u0440\u044a\u0447\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.", + "WizardCompleted": "\u0422\u043e\u0432\u0430 \u0435 \u0432\u0441\u0438\u0447\u043a\u043e \u043e\u0442 \u043a\u043e\u0435\u0442\u043e \u0441\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u043c \u0437\u0430\u0441\u0435\u0433\u0430. Media Browser \u0435 \u0437\u0430\u043f\u043e\u0447\u043d\u0430\u043b \u0434\u0430 \u0441\u044a\u0431\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430. \u0412\u0438\u0436\u0442\u0435 \u043d\u044f\u043a\u043e\u0438 \u043e\u0442 \u043d\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 \u041a\u0440\u0430\u0439<\/b>. \u0437\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0413\u043b\u0430\u0432\u0435\u043d \u043f\u0430\u043d\u0435\u043b \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430<\/b>.", + "LabelConfigureSettings": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "LabelEnableVideoImageExtraction": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.", + "VideoImageExtractionHelp": "\u0417\u0430 \u0432\u0438\u0434\u0435\u043e\u043a\u043b\u0438\u043f\u043e\u0432\u0435, \u043a\u043e\u0438\u0442\u043e \u0432\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0440\u0430\u0437\u043f\u043e\u043b\u0430\u0433\u0430\u0442 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0438 \u0437\u0430 \u043a\u043e\u0438\u0442\u043e \u043d\u0435 \u0441\u043c\u0435 \u0432 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u043c \u0442\u0430\u043a\u0438\u0432\u0430. \u0422\u043e\u0432\u0430 \u0449\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0440\u0435\u043c\u0435 \u043a\u044a\u043c \u043f\u044a\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u043d\u043e\u0442\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430, \u043d\u043e \u0449\u0435 \u0434\u043e\u0432\u0435\u0434\u0435 \u0434\u043e \u043f\u043e-\u043f\u0440\u0438\u044f\u0442\u0435\u043d \u0432\u0438\u0434.", + "LabelEnableChapterImageExtractionForMovies": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0438\u0437\u0432\u043b\u0438\u0447\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0433\u043b\u0430\u0432\u0438\u0442\u0435 \u0437\u0430 \u0424\u0438\u043b\u043c\u0438.", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0430 \u043f\u043e\u0440\u0442\u043e\u0432\u0435\u0442\u0435", + "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 \u0440\u0443\u0442\u0435\u0440\u0430 \u0437\u0430 \u043b\u0435\u0441\u0435\u043d \u043e\u0442\u0434\u0430\u043b\u0435\u0447\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f. \u0422\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0438 \u0441 \u043d\u044f\u043a\u043e\u0438 \u0440\u0443\u0442\u0435\u0440\u0438.", + "HeaderTermsOfService": "Media Browser \u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u041f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "MessagePleaseAcceptTermsOfService": "\u041c\u043e\u043b\u044f \u043f\u0440\u0438\u0435\u043c\u0435\u0442\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u0438 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442, \u043f\u0440\u0435\u0434\u0438 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435.", + "OptionIAcceptTermsOfService": "\u041f\u0440\u0438\u0435\u043c\u0430\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "ButtonPrivacyPolicy": "\u0414\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442", + "ButtonTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430 \u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435", + "HeaderDeveloperOptions": "\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", + "OptionEnableWebClientResponseCache": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043a\u0435\u0448\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438\u0442\u0435", + "OptionDisableForDevelopmentHelp": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439\u0442\u0435 \u0442\u0435\u0437\u0438 \u0441\u043f\u043e\u0440\u0435\u0434 \u043d\u0443\u0436\u0434\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438.", + "OptionEnableWebClientResourceMinification": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u0441\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435(\u043c\u0438\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f) \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0438\u0442\u0435 \u043d\u0430 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "LabelDashboardSourcePath": "\u0413\u043b\u0430\u0432\u0435\u043d \u043f\u044a\u0442 \u043a\u044a\u043c \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "LabelDashboardSourcePathHelp": "\u0410\u043a\u043e \u043f\u0443\u0441\u043a\u0430\u0442\u0435 \u0441\u044a\u0440\u0432\u044a\u0440\u0430 \u043e\u0442 \u0438\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434, \u043f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u043f\u044a\u0442\u044f \u043a\u044a\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0442\u043e \u0442\u0430\u0431\u043b\u043e. \u0412\u0441\u0438\u0447\u043a\u0438 \u0443\u0435\u0431 \u043a\u043b\u0438\u0435\u043d\u0442\u0438 \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0432\u0430\u043d\u0438 \u043e\u0442 \u0442\u0430\u043c.", + "ButtonConvertMedia": "\u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", + "ButtonOrganize": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0438\u0440\u0430\u0439", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "\u041e\u043a", + "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438", + "ButtonExit": "Exit", + "ButtonNew": "\u041d\u043e\u0432", + "HeaderTV": "TV", + "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", + "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", + "HeaderPaths": "\u041f\u044a\u0442\u0438\u0449\u0430", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", + "ButtonDonateWithPayPal": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u0434\u0430\u0440\u0435\u043d\u0438\u0435 \u0441 PayPal", + "OptionDetectArchiveFilesAsMedia": "\u0420\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u0440\u0445\u0438\u0432\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435", + "OptionDetectArchiveFilesAsMediaHelp": "\u0410\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 \u0440\u0430\u0437\u0448\u0438\u0440\u0435\u043d\u0438\u044f .rar \u0438 .zip \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043c\u0435\u0434\u0438\u0439\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435.", + "LabelEnterConnectUserName": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 email:", + "LabelEnterConnectUserNameHelp": "\u0422\u043e\u0432\u0430 \u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e\u0442\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u0430\u0442\u0430 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f Media Brower \u043e\u043d\u043b\u0430\u0439\u043d \u0430\u043a\u0430\u0443\u043d\u0442.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "\u0421\u0438\u043d\u0445\u0440. \u0417\u0430\u0434\u0430\u0447\u0430", + "FolderTypeMixed": "\u0421\u043c\u0435\u0441\u0435\u043d\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", + "FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", + "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", + "FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", + "FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", + "FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "FolderTypeGames": "\u0418\u0433\u0440\u0438", + "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", + "LabelContentType": "\u0422\u0438\u043f \u043d\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e:", + "TitleScheduledTasks": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0437\u0430\u0434\u0430\u0447\u0438", + "HeaderSetupLibrary": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0441\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", + "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043c\u0435\u0434\u0438\u0439\u043d\u0430 \u043f\u0430\u043f\u043a\u0430", + "LabelFolderType": "\u0422\u0438\u043f \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430:", + "ReferToMediaLibraryWiki": "\u0414\u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0441\u0435 \u0434\u043e wiki \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u0439\u043d\u0430\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430", + "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", + "LabelLanguage": "\u0415\u0437\u0438\u043a:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "\u041f\u0440\u0438\u0441\u044a\u0435\u0434\u0438\u043d\u0435\u0442\u0435 \u0441\u0435 \u043a\u044a\u043c \u043e\u0442\u0431\u043e\u0440\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438\u0442\u0435", + "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430:", + "LabelSaveLocalMetadata": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u043c\u0435\u0434\u0438\u044f\u0442\u0430", + "LabelSaveLocalMetadataHelp": "\u0417\u0430\u043f\u043e\u043c\u043d\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438 \u0449\u0435 \u0433\u0438 \u0441\u043b\u043e\u0436\u0438 \u043d\u0430 \u043c\u044f\u0441\u0442\u043e, \u043a\u044a\u0434\u0435\u0442\u043e \u043b\u0435\u0441\u043d\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0438.", + "LabelDownloadInternetMetadata": "\u0421\u0432\u0430\u043b\u044f\u0439 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u043e \u0438 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442", + "LabelDownloadInternetMetadataHelp": "Media Browser \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0432\u0430\u043b\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u043c\u0435\u0434\u0438\u044f, \u043a\u043e\u0435\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435.", + "TabPreferences": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f", + "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u0430", + "TabLibraryAccess": "\u0414\u043e\u0441\u044a\u043f \u0434\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "TabAccess": "\u0414\u043e\u0441\u0442\u044a\u043f", + "TabImage": "\u041a\u0430\u0440\u0442\u0438\u043d\u0430", + "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b", + "TabMetadata": "\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", + "TabImages": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", + "TabNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", + "TabCollectionTitles": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", + "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u044a\u043f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0442\u0430", + "OptionEnableAccessFromAllDevices": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", + "OptionEnableAccessToAllChannels": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438", + "OptionEnableAccessToAllLibraries": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0439 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u0432\u0441\u0438\u0447\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438", + "DeviceAccessHelp": "\u0422\u043e\u0432\u0430 \u0441\u0435 \u043e\u0442\u043d\u0430\u0441\u044f \u0441\u0430\u043c\u043e \u0437\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a\u043e\u0438\u0442\u043e \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d\u0438 \u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u043f\u043e\u043f\u0440\u0435\u0447\u0438 \u043d\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u043e\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440. \u0424\u0438\u043b\u0442\u0440\u0438\u0440\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0449\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u0438\u043c \u0434\u043e\u043a\u0430\u0442\u043e \u043d\u0435 \u0431\u044a\u0434\u0430\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438 \u0442\u0443\u043a.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043b\u0438\u043f\u0441\u0432\u0430\u0449\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", + "LabelUnairedMissingEpisodesWithinSeasons": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u043d\u0435\u0438\u0437\u043b\u044a\u0447\u0435\u043d\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438 \u0432 \u0441\u0435\u0437\u043e\u043d\u0438\u0442\u0435", + "HeaderVideoPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", + "HeaderPlaybackSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0432\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e", + "LabelAudioLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e:", + "LabelSubtitleLanguagePreference": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d \u0435\u0437\u0438\u043a \u043d\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438\u0442\u0435:", + "OptionDefaultSubtitles": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", + "OptionOnlyForcedSubtitles": "\u0421\u0430\u043c\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionAlwaysPlaySubtitles": "\u0412\u0438\u043d\u0430\u0433\u0438 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u0443\u0434\u0438\u043e\u0442\u043e \u0435 \u043d\u0430 \u0434\u0440\u0443\u0433 \u0435\u0437\u0438\u043a.", + "OptionOnlyForcedSubtitlesHelp": "\u0421\u0430\u043c\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0438 \u043a\u0430\u0442\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u043d\u0438, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438", + "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438, \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0449\u0438 \u043d\u0430 \u0435\u0437\u0438\u043a\u043e\u0432\u043e\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u0435, \u0449\u0435 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0435\u0437\u0438\u043a\u0430 \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u0442\u043e.", + "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0438 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", + "TabSecurity": "\u0417\u0430\u0449\u0438\u0442\u0430", + "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438 \u043b\u043e\u043a\u0430\u043b\u0435\u043d \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonInviteUser": "\u041f\u043e\u043a\u0430\u043d\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "ButtonSave": "\u0417\u0430\u043f\u043e\u043c\u043d\u0438", + "ButtonResetPassword": "\u041d\u0443\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u0440\u043e\u043b\u0430", + "LabelNewPassword": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", + "LabelNewPasswordConfirm": "\u041d\u043e\u0432\u0430 \u043f\u0430\u0440\u043e\u043b\u0430(\u043e\u0442\u043d\u043e\u0432\u043e):", + "HeaderCreatePassword": "\u041d\u0430\u043f\u0440\u0430\u0432\u0438 \u043f\u0430\u0440\u043e\u043b\u0430", + "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u0430\u0440\u043e\u043b\u0430:", + "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433:", + "MaxParentalRatingHelp": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e-\u0432\u0438\u0441\u043e\u043a \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0441\u043a\u0440\u0438\u0442\u043e \u043e\u0442 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b.", + "LibraryAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043c\u0435\u0434\u0438\u0439\u043d\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043f\u0430\u043f\u043a\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", + "ChannelAccessHelp": "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435 \u0441 \u0442\u043e\u0437\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0438\u0442\u0435 \u0449\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u043a\u0438 \u043c\u0435\u043d\u0438\u0434\u0436\u044a\u0440\u0430 \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f.", + "ButtonDeleteImage": "\u0418\u0437\u0442\u0440\u0438\u0439 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", + "LabelSelectUsers": "\u0418\u0437\u0431\u0435\u0440\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438:", + "ButtonUpload": "\u041a\u0430\u0447\u0438:", + "HeaderUploadNewImage": "\u041a\u0430\u0447\u0438 \u041d\u043e\u0432\u043e \u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:", + "LabelDropImageHere": "\u041f\u0443\u0441\u043d\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0442\u0443\u043a", + "ImageUploadAspectRatioHelp": "1:1 \u043f\u0440\u0435\u043f\u043e\u0440\u044a\u0447\u0430\u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u044f. \u0421\u0430\u043c\u043e JPG\/PNG", + "MessageNothingHere": "\u0422\u0443\u043a \u043d\u044f\u043c\u0430 \u043d\u0438\u0449\u043e.", + "MessagePleaseEnsureInternetMetadata": "\u041c\u043e\u043b\u044f, \u0443\u0432\u0435\u0440\u0435\u0442\u0435 \u0441\u0435 \u0447\u0435 \u0441\u0432\u0430\u043b\u044f\u043d\u0435\u0442\u043e \u043d\u0430 \u043c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e.", + "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f", + "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438", + "TabUpcoming": "\u041f\u0440\u0435\u0434\u0441\u0442\u043e\u044f\u0449\u0438", + "TabShows": "\u041f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f", + "TabEpisodes": "\u0415\u043f\u0438\u0437\u043e\u0434\u0438", + "TabGenres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435", + "TabPeople": "\u0425\u043e\u0440\u0430", + "TabNetworks": "\u041c\u0440\u0435\u0436\u0438", + "HeaderUsers": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438", + "HeaderFilters": "\u0424\u0438\u043b\u0442\u0440\u0438:", + "ButtonFilter": "\u0424\u0438\u043b\u0442\u044a\u0440", + "OptionFavorite": "\u041b\u044e\u0431\u0438\u043c\u0438:", + "OptionLikes": "\u0425\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0438\u044f", + "OptionDislikes": "\u041d\u0435\u0445\u0430\u0440\u0435\u0441\u0432\u0430\u043d\u0438\u044f", + "OptionActors": "\u0410\u043a\u0442\u044c\u043e\u0440\u0438", + "OptionGuestStars": "\u0413\u043e\u0441\u0442\u0443\u0432\u0430\u0449\u0438 \u0437\u0432\u0435\u0437\u0434\u0438", + "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u044c\u043e\u0440\u0438", + "OptionWriters": "\u041f\u0438\u0441\u0430\u0442\u0435\u043b\u0438", + "OptionProducers": "\u041f\u0440\u043e\u0434\u0443\u0446\u0435\u043d\u0442\u0438", + "HeaderResume": "\u041f\u0440\u043e\u0436\u044a\u043b\u0436\u0438", + "HeaderNextUp": "\u0421\u043b\u0435\u0434\u0432\u0430", + "NoNextUpItemsMessage": "\u041d\u0438\u0449\u043e \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043e. \u0417\u0430\u043f\u043e\u0447\u043d\u0435\u0442\u0435 \u0434\u0430 \u0433\u043b\u0435\u0434\u0430\u0442\u0435 \u0432\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f!", + "HeaderLatestEpisodes": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0415\u043f\u0438\u0437\u043e\u0434\u0438", + "HeaderPersonTypes": "\u0422\u0438\u043f\u043e\u0432\u0435 \u0425\u043e\u0440\u0430:", + "TabSongs": "\u041f\u0435\u0441\u043d\u0438", + "TabAlbums": "\u0410\u043b\u0431\u0443\u043c\u0438", + "TabArtists": "\u0410\u0440\u0442\u0438\u0441\u0442\u0438", + "TabAlbumArtists": "\u0410\u043b\u0431\u0443\u043c\u043e\u0432\u0438 \u0410\u0440\u0442\u0438\u0441\u0442\u0438", + "TabMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "ButtonSort": "\u041f\u043e\u0434\u0440\u0435\u0434\u0438", + "HeaderSortBy": "\u041f\u043e\u0434\u0440\u0435\u0434\u0438 \u043f\u043e:", + "HeaderSortOrder": "\u0420\u0435\u0434 \u043d\u0430 \u043f\u043e\u0434\u0440\u0435\u0434\u0431\u0430:", + "OptionPlayed": "\u041f\u0443\u0441\u043a\u0430\u043d\u0438", + "OptionUnplayed": "\u041d\u0435 \u043f\u0443\u0441\u043a\u0430\u043d\u0438", + "OptionAscending": "\u0412\u044a\u0437\u0445\u043e\u0434\u044f\u0449", + "OptionDescending": "\u041d\u0438\u0437\u0445\u043e\u0434\u044f\u0449", + "OptionRuntime": "\u0412\u0440\u0435\u043c\u0435\u0442\u0440\u0430\u0435\u043d\u0435", + "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u043d\u0435", + "OptionPlayCount": "\u0411\u0440\u043e\u0439 \u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f", + "OptionDatePlayed": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0443\u0441\u043a\u0430\u043d\u0435", + "OptionDateAdded": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u044f\u043d\u0435", + "OptionAlbumArtist": "\u0410\u043b\u0431\u0443\u043c\u043e\u0432 \u0410\u0440\u0442\u0438\u0441\u0442", + "OptionArtist": "\u0410\u0440\u0442\u0438\u0441\u0442", + "OptionAlbum": "\u0410\u043b\u0431\u0443\u043c", + "OptionTrackName": "\u0418\u043c\u0435 \u043d\u0430 \u043f\u0435\u0441\u0435\u043d\u0442\u0430:", + "OptionCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u0430 \u043e\u0449\u0435\u043d\u043a\u0430", + "OptionNameSort": "Name", + "OptionFolderSort": "\u041f\u0430\u043f\u043a\u0438", + "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", + "OptionRevenue": "\u041f\u0440\u0438\u0445\u043e\u0434\u0438", + "OptionPoster": "\u041f\u043b\u0430\u043a\u0430\u0442", + "OptionPosterCard": "\u041a\u0430\u0440\u0442\u0430 \u043f\u043b\u0430\u043a\u0430\u0442", + "OptionBackdrop": "\u0424\u043e\u043d", + "OptionTimeline": "\u0413\u0440\u0430\u0444\u0438\u043a", + "OptionThumb": "\u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430", + "OptionThumbCard": "\u041a\u0430\u0440\u0442\u0430 \u043c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430", + "OptionBanner": "\u0411\u0430\u043d\u0435\u0440", + "OptionCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0446\u0438\u0442\u0435", + "OptionVideoBitrate": "\u0412\u0438\u0434\u0435\u043e \u0431\u0438\u0442\u0440\u0435\u0439\u0442", + "OptionResumable": "\u0412\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u0441\u0442", + "ScheduledTasksHelp": "\u0426\u044a\u043a\u043d\u0435\u0442\u0435 \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430, \u0437\u0430 \u0434\u0430 \u043d\u0430\u0433\u043b\u0430\u0441\u0438\u0442\u0435 \u043f\u043b\u0430\u043d\u0430 \u045d.", + "ScheduledTasksTitle": "\u041f\u043b\u0430\u043d\u0438\u0440\u0430\u043d\u0438 \u0417\u0430\u0434\u0430\u0447\u0438", + "TabMyPlugins": "\u041c\u043e\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0438", + "TabCatalog": "\u041a\u0430\u0442\u0430\u043b\u043e\u0433", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0438 \u0412\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", + "HeaderNowPlaying": "\u0421\u0435\u0433\u0430 \u0412\u044a\u0437\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0436\u0434\u0430\u043d\u043e:", + "HeaderLatestAlbums": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0410\u043b\u0431\u0443\u043c\u0438", + "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u041f\u0435\u0441\u043d\u0438", + "HeaderRecentlyPlayed": "\u0421\u043a\u043e\u0440\u043e \u041f\u0443\u0441\u043a\u0430\u043d\u0438", + "HeaderFrequentlyPlayed": "\u0427\u0435\u0441\u0442\u043e \u041f\u0443\u0441\u043a\u0430\u043d\u0438", + "DevBuildWarning": "\u0412\u0435\u0440\u0441\u0438\u0438\u0442\u0435 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438 \u0441\u0430 \u043d\u0430\u0439-\u043d\u043e\u0432\u043e\u0442\u043e. \u0422\u0435 \u0441\u0435 \u0432\u044a\u0437\u043e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u0442 \u0447\u0435\u0441\u0442\u043e, \u043d\u043e \u043d\u0435 \u0441\u0435 \u0442\u0435\u0441\u0442\u0432\u0430\u0442. \u041c\u043e\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u0434\u0430 \u0441\u0435 \u0447\u0443\u043f\u0438 \u0438 \u0446\u0435\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0449\u043e \u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u044f\u0442.", + "LabelVideoType": "\u0422\u0438\u043f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u0442\u043e:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "\u0424\u0443\u043d\u043a\u0446\u0438\u0438:", + "LabelService": "\u0423\u0441\u043b\u0443\u0433\u0430:", + "LabelStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", + "LabelVersion": "\u0412\u0435\u0440\u0441\u0438\u044f:", + "LabelLastResult": "\u041f\u043e\u0441\u043b\u0435\u0434\u0435\u043d \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442:", + "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440", + "OptionHasThemeSong": "\u0424\u043e\u043d\u043e\u0432\u0430 \u041f\u0435\u0441\u0435\u043d", + "OptionHasThemeVideo": "\u0424\u043e\u043d\u043e\u0432\u043e \u0412\u0438\u0434\u0435\u043e", + "TabMovies": "\u0424\u0438\u043b\u043c\u0438", + "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u0430", + "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u044a\u0440\u0438", + "LabelArtists": "\u0410\u0440\u0442\u0438\u0441\u0442\u0438:", + "LabelArtistsHelp": "\u041e\u0442\u0434\u0435\u043b\u0435\u0442\u0435 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441 ;", + "HeaderLatestMovies": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0424\u0438\u043b\u043c\u0438", + "HeaderLatestTrailers": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438 \u0422\u0440\u0435\u0439\u043b\u044a\u0440\u0438", + "OptionHasSpecialFeatures": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u043d\u0438 \u0414\u043e\u0431\u0430\u0432\u043a\u0438", + "OptionImdbRating": "IMDb \u0420\u0435\u0439\u0442\u0438\u043d\u0433", + "OptionParentalRating": "\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u0441\u043a\u0438 \u0420\u0435\u0439\u0442\u0438\u043d\u0433", + "OptionPremiereDate": "\u0414\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u0435\u043c\u0438\u0435\u0440\u0430", + "TabBasic": "\u041e\u0441\u043d\u043e\u0432\u043d\u0438", + "TabAdvanced": "\u0414\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u0438", + "HeaderStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", + "OptionContinuing": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u0449\u043e", + "OptionEnded": "\u041f\u0440\u0438\u043a\u043b\u044e\u0447\u0438\u043b\u043e", + "HeaderAirDays": "\u0414\u043d\u0438 \u043d\u0430 \u0438\u0437\u043b\u044a\u0447\u0432\u0430\u043d\u0435", + "OptionSunday": "\u041d\u0435\u0434\u0435\u043b\u044f", + "OptionMonday": "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", + "OptionTuesday": "\u0412\u0442\u043e\u0440\u043d\u0438\u043a", + "OptionWednesday": "\u0421\u0440\u044f\u0434\u0430", + "OptionThursday": "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", + "OptionFriday": "\u041f\u0435\u0442\u044a\u043a", + "OptionSaturday": "\u0421\u044a\u0431\u043e\u0442\u0430", + "HeaderManagement": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435", + "LabelManagement": "\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:", + "OptionMissingImdbId": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u043e IMDb ID", + "OptionMissingTvdbId": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u043e TheTVDB ID", + "OptionMissingOverview": "\u041b\u0438\u043f\u0441\u0432\u0430\u0449\u0430 \u043e\u0431\u0449\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", + "OptionFileMetadataYearMismatch": "\u0420\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430 \u0432\u044a\u0432 \u0424\u0430\u0439\u043b\/\u041c\u0435\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f", + "TabGeneral": "\u0413\u043b\u0430\u0432\u043d\u043e", + "TitleSupport": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043a\u0430", + "TabLog": "\u041b\u043e\u0433", + "TabAbout": "\u041e\u0442\u043d\u043e\u0441\u043d\u043e", + "TabSupporterKey": "\u041f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a\u043e\u0432 \u043a\u043b\u044e\u0447", + "TabBecomeSupporter": "\u0421\u0442\u0430\u043d\u0438 \u043f\u043e\u0434\u0434\u0440\u044a\u0436\u043d\u0438\u043a" } \ 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 1db0b338b..8fa64aab8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -1,276 +1,4 @@ { - "LabelExit": "Sortir", - "LabelVisitCommunity": "Visitar la comunitat", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e0ndard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Examinar la biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Obrir el visor de la biblioteca", - "LabelRestartServer": "Reiniciar el servidor", - "LabelShowLogWindow": "Veure la finestra del registre", - "LabelPrevious": "Anterior", - "LabelFinish": "Finalitzar", - "LabelNext": "Seg\u00fcent", - "LabelYoureDone": "Ja est\u00e0!", - "WelcomeToMediaBrowser": "Benvingut a Meida Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Expliqui'ns sobre vost\u00e8", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "El seu nom:", - "MoreUsersCanBeAddedLater": "M\u00e9s usuaris es poden afegir m\u00e9s tard en el tauler d'instruments.", - "UserProfilesIntro": "Media Browser inclou suport integrat per als perfils d'usuari, la qual cosa permet que cada usuari tingui la seva pr\u00f2pia configuraci\u00f3 de pantalla, estat de reproducci\u00f3 i controls dels pares.", - "LabelWindowsService": "Servei de Windows", - "AWindowsServiceHasBeenInstalled": "El servei de Windows s'ha instal \u00b7 lat.", - "WindowsServiceIntro1": "Media Browser Server s'executa normalment com una aplicaci\u00f3 d'escriptori amb una icona de la safata, per\u00f2 si ho prefereix, per executar com un servei en segon pla, es pot iniciar des del panell de control de serveis de Windows.", - "WindowsServiceIntro2": "Si s'utilitza el servei de Windows, tingui en compte que no es pot executar a la vegada que la icona de la safata, de manera que haur\u00e0 de sortir de la safata per tal d'executar el servei. Tamb\u00e9 haur\u00e0 de ser configurat amb privilegis administratius a trav\u00e9s del panell de control del servei. Tingueu en compte que en aquest moment el servei no \u00e9s capa\u00e7 d'auto-actualitzaci\u00f3, de manera que les noves versions requereixen la interacci\u00f3 manual.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", "OptionSaturday": "Saturday", "HeaderManagement": "Management", "LabelManagement": "Management:", @@ -917,6 +645,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +888,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1101,289 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Sortir", + "LabelVisitCommunity": "Visitar la comunitat", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e0ndard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Examinar la biblioteca", + "LabelConfigureMediaBrowser": "Configurar Media Browser", + "LabelOpenLibraryViewer": "Obrir el visor de la biblioteca", + "LabelRestartServer": "Reiniciar el servidor", + "LabelShowLogWindow": "Veure la finestra del registre", + "LabelPrevious": "Anterior", + "LabelFinish": "Finalitzar", + "LabelNext": "Seg\u00fcent", + "LabelYoureDone": "Ja est\u00e0!", + "WelcomeToMediaBrowser": "Benvingut a Meida Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Expliqui'ns sobre vost\u00e8", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "El seu nom:", + "MoreUsersCanBeAddedLater": "M\u00e9s usuaris es poden afegir m\u00e9s tard en el tauler d'instruments.", + "UserProfilesIntro": "Media Browser inclou suport integrat per als perfils d'usuari, la qual cosa permet que cada usuari tingui la seva pr\u00f2pia configuraci\u00f3 de pantalla, estat de reproducci\u00f3 i controls dels pares.", + "LabelWindowsService": "Servei de Windows", + "AWindowsServiceHasBeenInstalled": "El servei de Windows s'ha instal \u00b7 lat.", + "WindowsServiceIntro1": "Media Browser Server s'executa normalment com una aplicaci\u00f3 d'escriptori amb una icona de la safata, per\u00f2 si ho prefereix, per executar com un servei en segon pla, es pot iniciar des del panell de control de serveis de Windows.", + "WindowsServiceIntro2": "Si s'utilitza el servei de Windows, tingui en compte que no es pot executar a la vegada que la icona de la safata, de manera que haur\u00e0 de sortir de la safata per tal d'executar el servei. Tamb\u00e9 haur\u00e0 de ser configurat amb privilegis administratius a trav\u00e9s del panell de control del servei. Tingueu en compte que en aquest moment el servei no \u00e9s capa\u00e7 d'auto-actualitzaci\u00f3, de manera que les noves versions requereixen la interacci\u00f3 manual.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday" } \ 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 a1a418031..d4de51312 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -1,257 +1,4 @@ { - "LabelExit": "Zav\u0159\u00edt", - "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standardn\u00ed", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", - "LabelConfigureMediaBrowser": "Konfigurovat Media Browser", - "LabelOpenLibraryViewer": "Otev\u0159\u00edt knihovnu", - "LabelRestartServer": "Restartovat server", - "LabelShowLogWindow": "Zobrazit okno z\u00e1znam\u016f", - "LabelPrevious": "P\u0159edchoz\u00ed", - "LabelFinish": "Dokon\u010dit", - "LabelNext": "Dal\u0161\u00ed", - "LabelYoureDone": "Hotovo!", - "WelcomeToMediaBrowser": "V\u00edtejte v programu Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Tento pr\u016fvodce V\u00e1m pom\u016f\u017ee proj\u00edt procesem nastaven\u00ed. Pro za\u010d\u00e1tek vyberte jazyk.", - "TellUsAboutYourself": "\u0158ekn\u011bte n\u00e1m n\u011bco o sob\u011b", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Va\u0161e k\u0159estn\u00ed jm\u00e9no:", - "MoreUsersCanBeAddedLater": "Dal\u0161\u00ed u\u017eivatele m\u016f\u017eete p\u0159idat pozd\u011bji na n\u00e1st\u011bnce.", - "UserProfilesIntro": "Media Browser obsahuje zabudovanou podporu u\u017eivatelsk\u00fdch profil\u016f dovoluj\u00edc\u00ed ka\u017ed\u00e9mu u\u017eivateli konfigurovat nastaven\u00ed zobrazen\u00ed, p\u0159ehr\u00e1v\u00e1n\u00ed a rodi\u010dovskou kontrolu.", - "LabelWindowsService": "Slu\u017eba Windows", - "AWindowsServiceHasBeenInstalled": "Slu\u017eba Windows byla nainstalov\u00e1na.", - "WindowsServiceIntro1": "Media Browser b\u011b\u017e\u00ed standardn\u011b jako desktopov\u00e1 aplikace s ikonou v oznamovac\u00ed oblasti, pokud ov\u0161em preferujete nastaven\u00ed jako slu\u017eby na pozad\u00ed, m\u016f\u017eete tak u\u010dinit v ovl\u00e1dac\u00edch panelech Va\u0161eho syst\u00e9mu pod polo\u017ekou Slu\u017eby Windows.", - "WindowsServiceIntro2": "Pokud pou\u017e\u00edv\u00e1te Slu\u017ebu Windows berte na v\u011bdom\u00ed, \u017ee nem\u016f\u017ee b\u00fdt spu\u0161t\u011bna z\u00e1rove\u0148 s programem v oznamovac\u00ed oblasti. Bude nutn\u00e9 b\u011b\u017e\u00edc\u00ed aplikaci v oznamovac\u00ed oblasti ukon\u010dit. Slu\u017eba Windows mus\u00ed b\u00fdt z\u00e1rove\u0148 nakonfigurov\u00e1na s pr\u00e1vy administr\u00e1tora v ovl\u00e1dac\u00edch panelech. V tuto chv\u00edli slu\u017eba neumo\u017e\u0148uje automatickou aktualizaci, bude proto nutn\u00e9 novou verzi nainstalovat ru\u010dn\u011b.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurovat nastaven\u00ed", - "LabelEnableVideoImageExtraction": "Povolit extrahov\u00e1n\u00ed obr\u00e1zku ze souboru", - "VideoImageExtractionHelp": "Pro videa, kter\u00e9 je\u0161t\u011b nemaj\u00ed obr\u00e1zky obalu, a zat\u00edm nejsme schopni je dohledat. Tato operace vy\u017eaduje n\u011bjak\u00fd ten \u010das nav\u00edc, ve v\u00fdsledku ale p\u0159isp\u011bje k hez\u010d\u00edmu zobrazen\u00ed knihovny.", - "LabelEnableChapterImageExtractionForMovies": "Extrahov\u00e1n\u00ed obr\u00e1zk\u016f sc\u00e9n pro Filmy", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Povolit automatick\u00e9 mapov\u00e1n\u00ed port\u016f", - "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017e\u0148uje automatick\u00e9 nastaven\u00ed routeru pro vzd\u00e1len\u00fd p\u0159\u00edstup. Nemus\u00ed fungovat s n\u011bkter\u00fdmi typy router\u016f.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Zru\u0161it", - "ButtonExit": "Exit", - "ButtonNew": "Nov\u00e9", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Nastaven\u00ed Va\u0161i knihovny m\u00e9di\u00ed", - "ButtonAddMediaFolder": "P\u0159idat slo\u017eku m\u00e9di\u00ed", - "LabelFolderType": "Typ slo\u017eky:", - "ReferToMediaLibraryWiki": "Pod\u00edvejte se na wiki knihovny m\u00e9di\u00ed.", - "LabelCountry": "Zem\u011b:", - "LabelLanguage": "Jazyk:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferovan\u00fd jazyk metadat:", - "LabelSaveLocalMetadata": "Ulo\u017eit p\u0159ebaly a metadata do slo\u017eky s m\u00e9dii", - "LabelSaveLocalMetadataHelp": "Povol\u00edte-li ulo\u017een\u00ed p\u0159ebal\u016f a metadat do slo\u017eky s m\u00e9dii bude mo\u017en\u00e9 je jednodu\u0161e upravovat.", - "LabelDownloadInternetMetadata": "St\u00e1hnout p\u0159ebal a metadata z internetu", - "LabelDownloadInternetMetadataHelp": "Media Browser m\u016f\u017ee st\u00e1hnout informace o Va\u0161ich m\u00e9di\u00edch z internetu pro bohat\u0161\u00ed prezentaci.", - "TabPreferences": "P\u0159edvolby", - "TabPassword": "Heslo", - "TabLibraryAccess": "P\u0159\u00edstup ke knihovn\u011b", - "TabAccess": "Access", - "TabImage": "Obr\u00e1zek", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Obr\u00e1zky", - "TabNotifications": "Notifications", - "TabCollectionTitles": "N\u00e1zvy", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazit chyb\u011bj\u00edc\u00ed epizody", - "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazit neprov\u011btran\u00e9 epizody v r\u00e1mci sez\u00f3n", - "HeaderVideoPlaybackSettings": "Nastaven\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed videa", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Up\u0159ednost\u0148ovan\u00fd jazyk videa:", - "LabelSubtitleLanguagePreference": "Up\u0159ednost\u0148ovan\u00fd jazyk titulk\u016f:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Pouze vynucen\u00e9 titulky", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profily", - "TabSecurity": "Zabezpe\u010den\u00ed", - "ButtonAddUser": "P\u0159idat u\u017eivatele", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Ulo\u017eit", - "ButtonResetPassword": "Obnovit heslo", - "LabelNewPassword": "Nov\u00e9 heslo:", - "LabelNewPasswordConfirm": "Potvrzen\u00ed nov\u00e9ho heslo:", - "HeaderCreatePassword": "Vytvo\u0159it heslo", - "LabelCurrentPassword": "Aktu\u00e1ln\u00ed heslo:", - "LabelMaxParentalRating": "Maxim\u00e1ln\u00ed povolen\u00e9 rodi\u010dovsk\u00e9 hodnocen\u00ed:", - "MaxParentalRatingHelp": "Obsah s vy\u0161\u0161\u00edm hodnocen\u00edm bude tomuto u\u017eivateli blokov\u00e1n.", - "LibraryAccessHelp": "Vyberte slo\u017eky m\u00e9di\u00ed pro sd\u00edlen\u00ed s t\u00edmto u\u017eivatelem. Administr\u00e1to\u0159i budou moci editovat v\u0161echny slo\u017eky pomoc\u00ed metadata mana\u017eeru.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Odstranit obr\u00e1zek", - "LabelSelectUsers": "Vyberte u\u017eivatele:", - "ButtonUpload": "Nahr\u00e1t", - "HeaderUploadNewImage": "Nahr\u00e1t nov\u00fd obr\u00e1zek", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "Doporu\u010den pom\u011br 1:1. Pouze JPG\/PNG.", - "MessageNothingHere": "Tady nic nen\u00ed.", - "MessagePleaseEnsureInternetMetadata": "Pros\u00edm zkontrolujte, zda m\u00e1te povoleno stahov\u00e1n\u00ed metadat z internetu.", - "TabSuggested": "Doporu\u010den\u00e9", - "TabLatest": "Posledn\u00ed", - "TabUpcoming": "Nadch\u00e1zej\u00edc\u00ed", - "TabShows": "Seri\u00e1ly", - "TabEpisodes": "Epizody", - "TabGenres": "\u017d\u00e1nry", - "TabPeople": "Lid\u00e9", - "TabNetworks": "S\u00edt\u011b", - "HeaderUsers": "U\u017eivatel\u00e9", - "HeaderFilters": "Filtry:", - "ButtonFilter": "Filtr", - "OptionFavorite": "Obl\u00edben\u00e9", - "OptionLikes": "L\u00edb\u00ed se", - "OptionDislikes": "Nel\u00edb\u00ed se", - "OptionActors": "Herci", - "OptionGuestStars": "Host\u00e9", - "OptionDirectors": "Re\u017eis\u00e9\u0159i", - "OptionWriters": "Spisovatel\u00e9", - "OptionProducers": "Producenti", - "HeaderResume": "Pozastavit", - "HeaderNextUp": "Dal\u0161\u00ed nahoru", - "NoNextUpItemsMessage": "Nic nenalezeno. Za\u010dn\u011bte sledovat Va\u0161e obl\u00edben\u00e9 seri\u00e1ly!", - "HeaderLatestEpisodes": "Posledn\u00ed d\u00edly", - "HeaderPersonTypes": "Typy osob:", - "TabSongs": "Skladby", - "TabAlbums": "Alba", - "TabArtists": "Um\u011blec", - "TabAlbumArtists": "Um\u011blci alba", - "TabMusicVideos": "Hudebn\u00ed videa", - "ButtonSort": "Se\u0159adit", - "HeaderSortBy": "Se\u0159adit podle:", - "HeaderSortOrder": "Po\u0159ad\u00ed \u0159azen\u00ed:", - "OptionPlayed": "Shl\u00e9dnuto", - "OptionUnplayed": "Neshl\u00e9dnuto", - "OptionAscending": "Vzestupn\u011b", - "OptionDescending": "Sestupn\u011b", - "OptionRuntime": "D\u00e9lka", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Po\u010det p\u0159ehr\u00e1n\u00ed", - "OptionDatePlayed": "Datum p\u0159ehr\u00e1n\u00ed", - "OptionDateAdded": "Datum p\u0159id\u00e1n\u00ed", - "OptionAlbumArtist": "Um\u011blec Alba", - "OptionArtist": "Um\u011blec", - "OptionAlbum": "Album", - "OptionTrackName": "N\u00e1zev skladby", - "OptionCommunityRating": "Hodnocen\u00ed komunity", - "OptionNameSort": "N\u00e1zev", - "OptionFolderSort": "Slo\u017eky", - "OptionBudget": "Rozpo\u010det", - "OptionRevenue": "P\u0159\u00edjem", - "OptionPoster": "Plak\u00e1t", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Pozad\u00ed", - "OptionTimeline": "\u010casov\u00e1 osa", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Prapor", - "OptionCriticRating": "Hodnocen\u00ed kritik\u016f", - "OptionVideoBitrate": "Bitrate videa", - "OptionResumable": "Pozastavaviteln\u00fd", - "ScheduledTasksHelp": "Klikn\u011bte na \u00falohu pro zobrazen\u00ed rozvrhu.", - "ScheduledTasksTitle": "Rozvrh \u00faloh", - "TabMyPlugins": "Moje pluginy", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatick\u00e9 aktualizace", - "HeaderNowPlaying": "Pr\u00e1v\u011b hraje", - "HeaderLatestAlbums": "Posledn\u00ed alba", - "HeaderLatestSongs": "Posledn\u00ed skladby", - "HeaderRecentlyPlayed": "Naposledy p\u0159ehr\u00e1v\u00e1no", - "HeaderFrequentlyPlayed": "Nej\u010dast\u011bji p\u0159ehr\u00e1v\u00e1no", - "DevBuildWarning": "Dev (v\u00fdvoj\u00e1\u0159sk\u00e1) sestaven\u00ed jsou vyd\u00e1v\u00e1na ob\u010das a nepravideln\u011b. Tato sestaven\u00ed nejsou testov\u00e1na, aplikace mohou b\u00fdt nestabiln\u00ed a n\u011bkter\u00e9 sou\u010d\u00e1sti nemus\u00ed fungovat v\u016fbec.", - "LabelVideoType": "Typ vide:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Vlastnosti:", - "LabelService": "Service:", - "LabelStatus": "Stav:", - "LabelVersion": "Verze:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Titulky", - "OptionHasTrailer": "Uk\u00e1zka\/trailer", - "OptionHasThemeSong": "Tematick\u00e1 hudba", - "OptionHasThemeVideo": "Tematick\u00e9 video", - "TabMovies": "Filmy", - "TabStudios": "Studia", - "TabTrailers": "Uk\u00e1zky\/trailery", - "LabelArtists": "Artists:", "LabelArtistsHelp": "Separate multiple using ;", "HeaderLatestMovies": "Posledn\u00ed filmy", "HeaderLatestTrailers": "Posledn\u00ed uk\u00e1zky\/trailery", @@ -917,6 +664,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Filmy", "ViewTypeTvShows": "Televize", "ViewTypeGames": "Hry", @@ -1159,6 +907,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1120,270 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Zav\u0159\u00edt", + "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standardn\u00ed", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", + "LabelConfigureMediaBrowser": "Konfigurovat Media Browser", + "LabelOpenLibraryViewer": "Otev\u0159\u00edt knihovnu", + "LabelRestartServer": "Restartovat server", + "LabelShowLogWindow": "Zobrazit okno z\u00e1znam\u016f", + "LabelPrevious": "P\u0159edchoz\u00ed", + "LabelFinish": "Dokon\u010dit", + "LabelNext": "Dal\u0161\u00ed", + "LabelYoureDone": "Hotovo!", + "WelcomeToMediaBrowser": "V\u00edtejte v programu Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Tento pr\u016fvodce V\u00e1m pom\u016f\u017ee proj\u00edt procesem nastaven\u00ed. Pro za\u010d\u00e1tek vyberte jazyk.", + "TellUsAboutYourself": "\u0158ekn\u011bte n\u00e1m n\u011bco o sob\u011b", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Va\u0161e k\u0159estn\u00ed jm\u00e9no:", + "MoreUsersCanBeAddedLater": "Dal\u0161\u00ed u\u017eivatele m\u016f\u017eete p\u0159idat pozd\u011bji na n\u00e1st\u011bnce.", + "UserProfilesIntro": "Media Browser obsahuje zabudovanou podporu u\u017eivatelsk\u00fdch profil\u016f dovoluj\u00edc\u00ed ka\u017ed\u00e9mu u\u017eivateli konfigurovat nastaven\u00ed zobrazen\u00ed, p\u0159ehr\u00e1v\u00e1n\u00ed a rodi\u010dovskou kontrolu.", + "LabelWindowsService": "Slu\u017eba Windows", + "AWindowsServiceHasBeenInstalled": "Slu\u017eba Windows byla nainstalov\u00e1na.", + "WindowsServiceIntro1": "Media Browser b\u011b\u017e\u00ed standardn\u011b jako desktopov\u00e1 aplikace s ikonou v oznamovac\u00ed oblasti, pokud ov\u0161em preferujete nastaven\u00ed jako slu\u017eby na pozad\u00ed, m\u016f\u017eete tak u\u010dinit v ovl\u00e1dac\u00edch panelech Va\u0161eho syst\u00e9mu pod polo\u017ekou Slu\u017eby Windows.", + "WindowsServiceIntro2": "Pokud pou\u017e\u00edv\u00e1te Slu\u017ebu Windows berte na v\u011bdom\u00ed, \u017ee nem\u016f\u017ee b\u00fdt spu\u0161t\u011bna z\u00e1rove\u0148 s programem v oznamovac\u00ed oblasti. Bude nutn\u00e9 b\u011b\u017e\u00edc\u00ed aplikaci v oznamovac\u00ed oblasti ukon\u010dit. Slu\u017eba Windows mus\u00ed b\u00fdt z\u00e1rove\u0148 nakonfigurov\u00e1na s pr\u00e1vy administr\u00e1tora v ovl\u00e1dac\u00edch panelech. V tuto chv\u00edli slu\u017eba neumo\u017e\u0148uje automatickou aktualizaci, bude proto nutn\u00e9 novou verzi nainstalovat ru\u010dn\u011b.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfigurovat nastaven\u00ed", + "LabelEnableVideoImageExtraction": "Povolit extrahov\u00e1n\u00ed obr\u00e1zku ze souboru", + "VideoImageExtractionHelp": "Pro videa, kter\u00e9 je\u0161t\u011b nemaj\u00ed obr\u00e1zky obalu, a zat\u00edm nejsme schopni je dohledat. Tato operace vy\u017eaduje n\u011bjak\u00fd ten \u010das nav\u00edc, ve v\u00fdsledku ale p\u0159isp\u011bje k hez\u010d\u00edmu zobrazen\u00ed knihovny.", + "LabelEnableChapterImageExtractionForMovies": "Extrahov\u00e1n\u00ed obr\u00e1zk\u016f sc\u00e9n pro Filmy", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Povolit automatick\u00e9 mapov\u00e1n\u00ed port\u016f", + "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017e\u0148uje automatick\u00e9 nastaven\u00ed routeru pro vzd\u00e1len\u00fd p\u0159\u00edstup. Nemus\u00ed fungovat s n\u011bkter\u00fdmi typy router\u016f.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Zru\u0161it", + "ButtonExit": "Exit", + "ButtonNew": "Nov\u00e9", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Nastaven\u00ed Va\u0161i knihovny m\u00e9di\u00ed", + "ButtonAddMediaFolder": "P\u0159idat slo\u017eku m\u00e9di\u00ed", + "LabelFolderType": "Typ slo\u017eky:", + "ReferToMediaLibraryWiki": "Pod\u00edvejte se na wiki knihovny m\u00e9di\u00ed.", + "LabelCountry": "Zem\u011b:", + "LabelLanguage": "Jazyk:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferovan\u00fd jazyk metadat:", + "LabelSaveLocalMetadata": "Ulo\u017eit p\u0159ebaly a metadata do slo\u017eky s m\u00e9dii", + "LabelSaveLocalMetadataHelp": "Povol\u00edte-li ulo\u017een\u00ed p\u0159ebal\u016f a metadat do slo\u017eky s m\u00e9dii bude mo\u017en\u00e9 je jednodu\u0161e upravovat.", + "LabelDownloadInternetMetadata": "St\u00e1hnout p\u0159ebal a metadata z internetu", + "LabelDownloadInternetMetadataHelp": "Media Browser m\u016f\u017ee st\u00e1hnout informace o Va\u0161ich m\u00e9di\u00edch z internetu pro bohat\u0161\u00ed prezentaci.", + "TabPreferences": "P\u0159edvolby", + "TabPassword": "Heslo", + "TabLibraryAccess": "P\u0159\u00edstup ke knihovn\u011b", + "TabAccess": "Access", + "TabImage": "Obr\u00e1zek", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Obr\u00e1zky", + "TabNotifications": "Notifications", + "TabCollectionTitles": "N\u00e1zvy", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Zobrazit chyb\u011bj\u00edc\u00ed epizody", + "LabelUnairedMissingEpisodesWithinSeasons": "Zobrazit neprov\u011btran\u00e9 epizody v r\u00e1mci sez\u00f3n", + "HeaderVideoPlaybackSettings": "Nastaven\u00ed p\u0159ehr\u00e1v\u00e1n\u00ed videa", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Up\u0159ednost\u0148ovan\u00fd jazyk videa:", + "LabelSubtitleLanguagePreference": "Up\u0159ednost\u0148ovan\u00fd jazyk titulk\u016f:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Pouze vynucen\u00e9 titulky", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profily", + "TabSecurity": "Zabezpe\u010den\u00ed", + "ButtonAddUser": "P\u0159idat u\u017eivatele", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Ulo\u017eit", + "ButtonResetPassword": "Obnovit heslo", + "LabelNewPassword": "Nov\u00e9 heslo:", + "LabelNewPasswordConfirm": "Potvrzen\u00ed nov\u00e9ho heslo:", + "HeaderCreatePassword": "Vytvo\u0159it heslo", + "LabelCurrentPassword": "Aktu\u00e1ln\u00ed heslo:", + "LabelMaxParentalRating": "Maxim\u00e1ln\u00ed povolen\u00e9 rodi\u010dovsk\u00e9 hodnocen\u00ed:", + "MaxParentalRatingHelp": "Obsah s vy\u0161\u0161\u00edm hodnocen\u00edm bude tomuto u\u017eivateli blokov\u00e1n.", + "LibraryAccessHelp": "Vyberte slo\u017eky m\u00e9di\u00ed pro sd\u00edlen\u00ed s t\u00edmto u\u017eivatelem. Administr\u00e1to\u0159i budou moci editovat v\u0161echny slo\u017eky pomoc\u00ed metadata mana\u017eeru.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Odstranit obr\u00e1zek", + "LabelSelectUsers": "Vyberte u\u017eivatele:", + "ButtonUpload": "Nahr\u00e1t", + "HeaderUploadNewImage": "Nahr\u00e1t nov\u00fd obr\u00e1zek", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "Doporu\u010den pom\u011br 1:1. Pouze JPG\/PNG.", + "MessageNothingHere": "Tady nic nen\u00ed.", + "MessagePleaseEnsureInternetMetadata": "Pros\u00edm zkontrolujte, zda m\u00e1te povoleno stahov\u00e1n\u00ed metadat z internetu.", + "TabSuggested": "Doporu\u010den\u00e9", + "TabLatest": "Posledn\u00ed", + "TabUpcoming": "Nadch\u00e1zej\u00edc\u00ed", + "TabShows": "Seri\u00e1ly", + "TabEpisodes": "Epizody", + "TabGenres": "\u017d\u00e1nry", + "TabPeople": "Lid\u00e9", + "TabNetworks": "S\u00edt\u011b", + "HeaderUsers": "U\u017eivatel\u00e9", + "HeaderFilters": "Filtry:", + "ButtonFilter": "Filtr", + "OptionFavorite": "Obl\u00edben\u00e9", + "OptionLikes": "L\u00edb\u00ed se", + "OptionDislikes": "Nel\u00edb\u00ed se", + "OptionActors": "Herci", + "OptionGuestStars": "Host\u00e9", + "OptionDirectors": "Re\u017eis\u00e9\u0159i", + "OptionWriters": "Spisovatel\u00e9", + "OptionProducers": "Producenti", + "HeaderResume": "Pozastavit", + "HeaderNextUp": "Dal\u0161\u00ed nahoru", + "NoNextUpItemsMessage": "Nic nenalezeno. Za\u010dn\u011bte sledovat Va\u0161e obl\u00edben\u00e9 seri\u00e1ly!", + "HeaderLatestEpisodes": "Posledn\u00ed d\u00edly", + "HeaderPersonTypes": "Typy osob:", + "TabSongs": "Skladby", + "TabAlbums": "Alba", + "TabArtists": "Um\u011blec", + "TabAlbumArtists": "Um\u011blci alba", + "TabMusicVideos": "Hudebn\u00ed videa", + "ButtonSort": "Se\u0159adit", + "HeaderSortBy": "Se\u0159adit podle:", + "HeaderSortOrder": "Po\u0159ad\u00ed \u0159azen\u00ed:", + "OptionPlayed": "Shl\u00e9dnuto", + "OptionUnplayed": "Neshl\u00e9dnuto", + "OptionAscending": "Vzestupn\u011b", + "OptionDescending": "Sestupn\u011b", + "OptionRuntime": "D\u00e9lka", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Po\u010det p\u0159ehr\u00e1n\u00ed", + "OptionDatePlayed": "Datum p\u0159ehr\u00e1n\u00ed", + "OptionDateAdded": "Datum p\u0159id\u00e1n\u00ed", + "OptionAlbumArtist": "Um\u011blec Alba", + "OptionArtist": "Um\u011blec", + "OptionAlbum": "Album", + "OptionTrackName": "N\u00e1zev skladby", + "OptionCommunityRating": "Hodnocen\u00ed komunity", + "OptionNameSort": "N\u00e1zev", + "OptionFolderSort": "Slo\u017eky", + "OptionBudget": "Rozpo\u010det", + "OptionRevenue": "P\u0159\u00edjem", + "OptionPoster": "Plak\u00e1t", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Pozad\u00ed", + "OptionTimeline": "\u010casov\u00e1 osa", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Prapor", + "OptionCriticRating": "Hodnocen\u00ed kritik\u016f", + "OptionVideoBitrate": "Bitrate videa", + "OptionResumable": "Pozastavaviteln\u00fd", + "ScheduledTasksHelp": "Klikn\u011bte na \u00falohu pro zobrazen\u00ed rozvrhu.", + "ScheduledTasksTitle": "Rozvrh \u00faloh", + "TabMyPlugins": "Moje pluginy", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatick\u00e9 aktualizace", + "HeaderNowPlaying": "Pr\u00e1v\u011b hraje", + "HeaderLatestAlbums": "Posledn\u00ed alba", + "HeaderLatestSongs": "Posledn\u00ed skladby", + "HeaderRecentlyPlayed": "Naposledy p\u0159ehr\u00e1v\u00e1no", + "HeaderFrequentlyPlayed": "Nej\u010dast\u011bji p\u0159ehr\u00e1v\u00e1no", + "DevBuildWarning": "Dev (v\u00fdvoj\u00e1\u0159sk\u00e1) sestaven\u00ed jsou vyd\u00e1v\u00e1na ob\u010das a nepravideln\u011b. Tato sestaven\u00ed nejsou testov\u00e1na, aplikace mohou b\u00fdt nestabiln\u00ed a n\u011bkter\u00e9 sou\u010d\u00e1sti nemus\u00ed fungovat v\u016fbec.", + "LabelVideoType": "Typ vide:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Vlastnosti:", + "LabelService": "Service:", + "LabelStatus": "Stav:", + "LabelVersion": "Verze:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Titulky", + "OptionHasTrailer": "Uk\u00e1zka\/trailer", + "OptionHasThemeSong": "Tematick\u00e1 hudba", + "OptionHasThemeVideo": "Tematick\u00e9 video", + "TabMovies": "Filmy", + "TabStudios": "Studia", + "TabTrailers": "Uk\u00e1zky\/trailery", + "LabelArtists": "Artists:" } \ 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 a04070201..b217c2679 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -1,278 +1,4 @@ { - "LabelExit": "Afslut", - "LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Gennemse biblitek", - "LabelConfigureMediaBrowser": "Konfigurere Media Browser", - "LabelOpenLibraryViewer": "\u00c5ben Biblioteks Fremviser", - "LabelRestartServer": "Genstart Server", - "LabelShowLogWindow": "Vis Log", - "LabelPrevious": "Tidligere", - "LabelFinish": "Slut", - "LabelNext": "N\u00e6ste", - "LabelYoureDone": "Du er f\u00e6rdig!", - "WelcomeToMediaBrowser": "Velkommen til Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Denne guide vil hj\u00e6lpe dig igennem ops\u00e6tningen. For at begynde, venligst v\u00e6lg dit fortrukne sprog.", - "TellUsAboutYourself": "Fort\u00e6l os lidt om dig selv", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Dit fornavn", - "MoreUsersCanBeAddedLater": "Flere brugere kan tilf\u00f8jes senere i Betjeningspanelet.", - "UserProfilesIntro": "Media Browser inkludere indbygget underst\u00f8ttelse af bruger profiler, der giver den enkelte bruger mulighed for individuelle visningsindstillinger, Afspilningsstatus og for\u00e6ldre kontrol.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Der er blevet installeret en Windows Service.", - "WindowsServiceIntro1": "Media Browser Server k\u00f8rer normalt som et skrivebords program med et tray ikon, men hvis du foretr\u00e6kker at k\u00f8re det som en service i baggrunden, kan den startes fra kontrolpanelet Windows services i stedet for.", - "WindowsServiceIntro2": "Hvis windows servicen bruges skal du v\u00e6re opm\u00e6rksom p\u00e5, at servicen ikke kan k\u00f8re p\u00e5 samme tid som tray ikonet. Det er derfor n\u00f8dvendigt at afslutte tray ikonet f\u00f8r servicen startes. Det er n\u00f8dvendigt at konfigurere servicen til at k\u00f8re med administrative privileger, som kan g\u00f8res via Windows Service kontrol panelet. V\u00e6r opm\u00e6rksom p\u00e5 at servicen p\u00e5 nuv\u00e6rende tidspunkt ikke er i stand til at auto opdatere, s\u00e5 opdatering vil kr\u00e6ve manuel handling.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurer indstillinger", - "LabelEnableVideoImageExtraction": "Aktiver udtr\u00e6kning af video billede", - "VideoImageExtractionHelp": "For videoer der ikke allerede har billeder, og som vi ikke kan finde internet billeder til. Dette vil g\u00f8re den indledende biblioteks skanning l\u00e6ngere, men vil resulterer i en p\u00e6nere pr\u00e6sentation.", - "LabelEnableChapterImageExtractionForMovies": "Aktiver udtr\u00e6kning af kapitel billeder for Film", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Aktiver automatisk port kortl\u00e6gning", - "LabelEnableAutomaticPortMappingHelp": "UPnP tillader automatisk router konfiguration for nem fjern adgang. Dette virker muligvis ikke med alle routere.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Annuller", - "ButtonExit": "Exit", - "ButtonNew": "Ny", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Konfigurer dit medie bibliotek", - "ButtonAddMediaFolder": "Tilf\u00f8j medie mappe", - "LabelFolderType": "Mappe type:", - "ReferToMediaLibraryWiki": "Der henvises til medie bibliotekets wiki.", - "LabelCountry": "Land:", - "LabelLanguage": "Sprog:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Foretrukket metadata sprog:", - "LabelSaveLocalMetadata": "Gem illustrationer og metadata i medie mapper", - "LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i medie mapper, vil placerer dem et sted hvor de nemt kan redigeres.", - "LabelDownloadInternetMetadata": "Hent illustrationer og metadata fra internettet", - "LabelDownloadInternetMetadataHelp": "Media Browser kan hente information omkring dine medier som vil g\u00f8re pr\u00e6sentationen mere omfattende.", - "TabPreferences": "Indstillinger", - "TabPassword": "Kode", - "TabLibraryAccess": "Bibliotek adgang", - "TabAccess": "Access", - "TabImage": "Billede", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Billeder", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titler", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i s\u00e6soner", - "LabelUnairedMissingEpisodesWithinSeasons": "Vis endnu ikke sendte episoder i s\u00e6soner", - "HeaderVideoPlaybackSettings": "Video afspilnings indstillinger", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Foretrukket lyd sprog:", - "LabelSubtitleLanguagePreference": "Foretrukket undertekst sprog:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "Ingen undertekster", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiler", - "TabSecurity": "Sikkerhed", - "ButtonAddUser": "Tilf\u00f8j bruger", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Gem", - "ButtonResetPassword": "Nulstil kode", - "LabelNewPassword": "Ny kode:", - "LabelNewPasswordConfirm": "Bekr\u00e6ft ny kode:", - "HeaderCreatePassword": "Opret kode", - "LabelCurrentPassword": "Nuv\u00e6rende kode:", - "LabelMaxParentalRating": "H\u00f8jst tilladte aldersgr\u00e6nse:", - "MaxParentalRatingHelp": "Indhold med en h\u00f8jere gr\u00e6nse, skjules for denne bruger.", - "LibraryAccessHelp": "V\u00e6lg hvilke medie mapper der skal deles med denne bruger. Administratorer vil kunne redigere alle mapper ved hj\u00e6lp af metadata administratoren.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Slet Billede", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload Nyt Billede", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 formatforhold anbefalet. Kun JPG\/PNG.", - "MessageNothingHere": "Her er ingenting.", - "MessagePleaseEnsureInternetMetadata": "V\u00e6r venligst sikker p\u00e5 at hentning af internet metadata er aktiveret.", - "TabSuggested": "Foresl\u00e5et", - "TabLatest": "Seneste", - "TabUpcoming": "Kommende", - "TabShows": "Shows", - "TabEpisodes": "Episoder", - "TabGenres": "Genre", - "TabPeople": "Personer", - "TabNetworks": "Netv\u00e6rk", - "HeaderUsers": "Brugere", - "HeaderFilters": "Filtre:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favoritter", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Skuespillere", - "OptionGuestStars": "G\u00e6ste Stjerner", - "OptionDirectors": "Instrukt\u00f8rer", - "OptionWriters": "Forfattere", - "OptionProducers": "Producenter", - "HeaderResume": "Fors\u00e6t", - "HeaderNextUp": "N\u00e6ste", - "NoNextUpItemsMessage": "Ingen fundet. Se dine serier!", - "HeaderLatestEpisodes": "Sidste Episode", - "HeaderPersonTypes": "Person typer:", - "TabSongs": "Sange", - "TabAlbums": "Albums", - "TabArtists": "Artister", - "TabAlbumArtists": "Album Artister", - "TabMusicVideos": "Musik Videoer", - "ButtonSort": "Sort\u00e9r", - "HeaderSortBy": "Sort\u00e9r efter:", - "HeaderSortOrder": "Sorteringsr\u00e6kkef\u00f8lge:", - "OptionPlayed": "Afspillet", - "OptionUnplayed": "Ikke afspillet", - "OptionAscending": "Stigende", - "OptionDescending": "Faldende", - "OptionRuntime": "Varighed", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Gange Afspillet", - "OptionDatePlayed": "Dato Afspillet", - "OptionDateAdded": "Dato Tilf\u00f8jet", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Nummerets Navn", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Navn", - "OptionFolderSort": "Mapper", - "OptionBudget": "Budget", - "OptionRevenue": "Indt\u00e6gt", - "OptionPoster": "Plakat", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Tidslinje", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritisk Vurdering", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Klik p\u00e5 en opgave for at tilpasse dens tidsplan", - "ScheduledTasksTitle": "Planlagte Opgaver", - "TabMyPlugins": "Mine Tilf\u00f8jelser", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatisk Opdateringer", - "HeaderNowPlaying": "Afspilles Nu", - "HeaderLatestAlbums": "Seneste Albums", - "HeaderLatestSongs": "Seneste Sange", - "HeaderRecentlyPlayed": "Afspillet For Nyligt", - "HeaderFrequentlyPlayed": "Ofte Afspillet", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Egenskaber:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Undertekster", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Tema Sang", - "OptionHasThemeVideo": "Tema Video", - "TabMovies": "Film", - "TabStudios": "Studier", - "TabTrailers": "Trailere", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Seneste Film", - "HeaderLatestTrailers": "Seneste Trailere", - "OptionHasSpecialFeatures": "Specielle Egenskaber", - "OptionImdbRating": "IMDB Bed\u00f8mmelse", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Pr\u00e6miere Dato", - "TabBasic": "Simpel", - "TabAdvanced": "Advanceret", - "HeaderStatus": "Status", - "OptionContinuing": "Fors\u00e6ttes", - "OptionEnded": "F\u00e6rdig", - "HeaderAirDays": "Sende Dage", - "OptionSunday": "S\u00f8ndag", - "OptionMonday": "Mandag", - "OptionTuesday": "Tirsdag", - "OptionWednesday": "Onsdag", - "OptionThursday": "Torsdag", - "OptionFriday": "Fredag", - "OptionSaturday": "L\u00f8rdag", - "HeaderManagement": "Management", "LabelManagement": "Management:", "OptionMissingImdbId": "Manglende IMDB Id", "OptionMissingTvdbId": "Manglende TheTVDB Id", @@ -917,6 +643,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +886,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1099,291 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Afslut", + "LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Gennemse biblitek", + "LabelConfigureMediaBrowser": "Konfigurere Media Browser", + "LabelOpenLibraryViewer": "\u00c5ben Biblioteks Fremviser", + "LabelRestartServer": "Genstart Server", + "LabelShowLogWindow": "Vis Log", + "LabelPrevious": "Tidligere", + "LabelFinish": "Slut", + "LabelNext": "N\u00e6ste", + "LabelYoureDone": "Du er f\u00e6rdig!", + "WelcomeToMediaBrowser": "Velkommen til Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Denne guide vil hj\u00e6lpe dig igennem ops\u00e6tningen. For at begynde, venligst v\u00e6lg dit fortrukne sprog.", + "TellUsAboutYourself": "Fort\u00e6l os lidt om dig selv", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Dit fornavn", + "MoreUsersCanBeAddedLater": "Flere brugere kan tilf\u00f8jes senere i Betjeningspanelet.", + "UserProfilesIntro": "Media Browser inkludere indbygget underst\u00f8ttelse af bruger profiler, der giver den enkelte bruger mulighed for individuelle visningsindstillinger, Afspilningsstatus og for\u00e6ldre kontrol.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Der er blevet installeret en Windows Service.", + "WindowsServiceIntro1": "Media Browser Server k\u00f8rer normalt som et skrivebords program med et tray ikon, men hvis du foretr\u00e6kker at k\u00f8re det som en service i baggrunden, kan den startes fra kontrolpanelet Windows services i stedet for.", + "WindowsServiceIntro2": "Hvis windows servicen bruges skal du v\u00e6re opm\u00e6rksom p\u00e5, at servicen ikke kan k\u00f8re p\u00e5 samme tid som tray ikonet. Det er derfor n\u00f8dvendigt at afslutte tray ikonet f\u00f8r servicen startes. Det er n\u00f8dvendigt at konfigurere servicen til at k\u00f8re med administrative privileger, som kan g\u00f8res via Windows Service kontrol panelet. V\u00e6r opm\u00e6rksom p\u00e5 at servicen p\u00e5 nuv\u00e6rende tidspunkt ikke er i stand til at auto opdatere, s\u00e5 opdatering vil kr\u00e6ve manuel handling.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfigurer indstillinger", + "LabelEnableVideoImageExtraction": "Aktiver udtr\u00e6kning af video billede", + "VideoImageExtractionHelp": "For videoer der ikke allerede har billeder, og som vi ikke kan finde internet billeder til. Dette vil g\u00f8re den indledende biblioteks skanning l\u00e6ngere, men vil resulterer i en p\u00e6nere pr\u00e6sentation.", + "LabelEnableChapterImageExtractionForMovies": "Aktiver udtr\u00e6kning af kapitel billeder for Film", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Aktiver automatisk port kortl\u00e6gning", + "LabelEnableAutomaticPortMappingHelp": "UPnP tillader automatisk router konfiguration for nem fjern adgang. Dette virker muligvis ikke med alle routere.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Annuller", + "ButtonExit": "Exit", + "ButtonNew": "Ny", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Konfigurer dit medie bibliotek", + "ButtonAddMediaFolder": "Tilf\u00f8j medie mappe", + "LabelFolderType": "Mappe type:", + "ReferToMediaLibraryWiki": "Der henvises til medie bibliotekets wiki.", + "LabelCountry": "Land:", + "LabelLanguage": "Sprog:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Foretrukket metadata sprog:", + "LabelSaveLocalMetadata": "Gem illustrationer og metadata i medie mapper", + "LabelSaveLocalMetadataHelp": "Lagring af illustrationer og metadata i medie mapper, vil placerer dem et sted hvor de nemt kan redigeres.", + "LabelDownloadInternetMetadata": "Hent illustrationer og metadata fra internettet", + "LabelDownloadInternetMetadataHelp": "Media Browser kan hente information omkring dine medier som vil g\u00f8re pr\u00e6sentationen mere omfattende.", + "TabPreferences": "Indstillinger", + "TabPassword": "Kode", + "TabLibraryAccess": "Bibliotek adgang", + "TabAccess": "Access", + "TabImage": "Billede", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Billeder", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titler", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Vis manglende episoder i s\u00e6soner", + "LabelUnairedMissingEpisodesWithinSeasons": "Vis endnu ikke sendte episoder i s\u00e6soner", + "HeaderVideoPlaybackSettings": "Video afspilnings indstillinger", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Foretrukket lyd sprog:", + "LabelSubtitleLanguagePreference": "Foretrukket undertekst sprog:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "Ingen undertekster", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiler", + "TabSecurity": "Sikkerhed", + "ButtonAddUser": "Tilf\u00f8j bruger", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Gem", + "ButtonResetPassword": "Nulstil kode", + "LabelNewPassword": "Ny kode:", + "LabelNewPasswordConfirm": "Bekr\u00e6ft ny kode:", + "HeaderCreatePassword": "Opret kode", + "LabelCurrentPassword": "Nuv\u00e6rende kode:", + "LabelMaxParentalRating": "H\u00f8jst tilladte aldersgr\u00e6nse:", + "MaxParentalRatingHelp": "Indhold med en h\u00f8jere gr\u00e6nse, skjules for denne bruger.", + "LibraryAccessHelp": "V\u00e6lg hvilke medie mapper der skal deles med denne bruger. Administratorer vil kunne redigere alle mapper ved hj\u00e6lp af metadata administratoren.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Slet Billede", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload Nyt Billede", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 formatforhold anbefalet. Kun JPG\/PNG.", + "MessageNothingHere": "Her er ingenting.", + "MessagePleaseEnsureInternetMetadata": "V\u00e6r venligst sikker p\u00e5 at hentning af internet metadata er aktiveret.", + "TabSuggested": "Foresl\u00e5et", + "TabLatest": "Seneste", + "TabUpcoming": "Kommende", + "TabShows": "Shows", + "TabEpisodes": "Episoder", + "TabGenres": "Genre", + "TabPeople": "Personer", + "TabNetworks": "Netv\u00e6rk", + "HeaderUsers": "Brugere", + "HeaderFilters": "Filtre:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favoritter", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Skuespillere", + "OptionGuestStars": "G\u00e6ste Stjerner", + "OptionDirectors": "Instrukt\u00f8rer", + "OptionWriters": "Forfattere", + "OptionProducers": "Producenter", + "HeaderResume": "Fors\u00e6t", + "HeaderNextUp": "N\u00e6ste", + "NoNextUpItemsMessage": "Ingen fundet. Se dine serier!", + "HeaderLatestEpisodes": "Sidste Episode", + "HeaderPersonTypes": "Person typer:", + "TabSongs": "Sange", + "TabAlbums": "Albums", + "TabArtists": "Artister", + "TabAlbumArtists": "Album Artister", + "TabMusicVideos": "Musik Videoer", + "ButtonSort": "Sort\u00e9r", + "HeaderSortBy": "Sort\u00e9r efter:", + "HeaderSortOrder": "Sorteringsr\u00e6kkef\u00f8lge:", + "OptionPlayed": "Afspillet", + "OptionUnplayed": "Ikke afspillet", + "OptionAscending": "Stigende", + "OptionDescending": "Faldende", + "OptionRuntime": "Varighed", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Gange Afspillet", + "OptionDatePlayed": "Dato Afspillet", + "OptionDateAdded": "Dato Tilf\u00f8jet", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Nummerets Navn", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Navn", + "OptionFolderSort": "Mapper", + "OptionBudget": "Budget", + "OptionRevenue": "Indt\u00e6gt", + "OptionPoster": "Plakat", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Tidslinje", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritisk Vurdering", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Klik p\u00e5 en opgave for at tilpasse dens tidsplan", + "ScheduledTasksTitle": "Planlagte Opgaver", + "TabMyPlugins": "Mine Tilf\u00f8jelser", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatisk Opdateringer", + "HeaderNowPlaying": "Afspilles Nu", + "HeaderLatestAlbums": "Seneste Albums", + "HeaderLatestSongs": "Seneste Sange", + "HeaderRecentlyPlayed": "Afspillet For Nyligt", + "HeaderFrequentlyPlayed": "Ofte Afspillet", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Egenskaber:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Undertekster", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Tema Sang", + "OptionHasThemeVideo": "Tema Video", + "TabMovies": "Film", + "TabStudios": "Studier", + "TabTrailers": "Trailere", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Seneste Film", + "HeaderLatestTrailers": "Seneste Trailere", + "OptionHasSpecialFeatures": "Specielle Egenskaber", + "OptionImdbRating": "IMDB Bed\u00f8mmelse", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Pr\u00e6miere Dato", + "TabBasic": "Simpel", + "TabAdvanced": "Advanceret", + "HeaderStatus": "Status", + "OptionContinuing": "Fors\u00e6ttes", + "OptionEnded": "F\u00e6rdig", + "HeaderAirDays": "Sende Dage", + "OptionSunday": "S\u00f8ndag", + "OptionMonday": "Mandag", + "OptionTuesday": "Tirsdag", + "OptionWednesday": "Onsdag", + "OptionThursday": "Torsdag", + "OptionFriday": "Fredag", + "OptionSaturday": "L\u00f8rdag", + "HeaderManagement": "Management" } \ 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 63f6d3421..9ad0d264b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -1,236 +1,4 @@ { - "LabelExit": "Beenden", - "LabelVisitCommunity": "Besuche die Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Dokumentation", - "LabelDeveloperResources": "Entwickler Ressourcen", - "LabelBrowseLibrary": "Bibliothek durchsuchen", - "LabelConfigureMediaBrowser": "Konfiguriere Media Browser", - "LabelOpenLibraryViewer": "\u00d6ffne Bibliothekenansicht", - "LabelRestartServer": "Server neustarten", - "LabelShowLogWindow": "Zeige Log Fenster", - "LabelPrevious": "Vorheriges", - "LabelFinish": "Fertig", - "LabelNext": "N\u00e4chstes", - "LabelYoureDone": "Du bist fertig!", - "WelcomeToMediaBrowser": "Willkommen zu Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Dieser Assistent wird dich durch den Einrichtungsprozess f\u00fchren. Um zu beginnen, w\u00e4hle bitte deine bevorzugte Sprache.", - "TellUsAboutYourself": "Sag uns etwas \u00fcber dich selbst", - "ButtonQuickStartGuide": "Schnellstart Instruktionen", - "LabelYourFirstName": "Vorname:", - "MoreUsersCanBeAddedLater": "Weitere Benutzer k\u00f6nnen sp\u00e4ter \u00fcber die Optionsleiste hinzugef\u00fcgt werden.", - "UserProfilesIntro": "Media Browser verf\u00fcgt \u00fcber integrierte Benutzer Profile. Verwende diese Profile um Anzeigeeinstellungen, Abspielstatus sowie Kinder- und Jugendschutzverwaltungen f\u00fcr jeden Benutzer einzeln einzurichten und zu speichern.", - "LabelWindowsService": "Windows-Dienst", - "AWindowsServiceHasBeenInstalled": "Ein Windows Dienst wurde installiert.", - "WindowsServiceIntro1": "Media Browser Server l\u00e4uft normalerweise als Desktop Anwendung mit einem Symbol in der Taskleiste. Du kannst den Server aber auch als Hintergrunddienst starten. Verwende dazu das Windows Service Control Panel (services.msc).", - "WindowsServiceIntro2": "Der Dienst kann nicht zu gleichen Zeit wie die Desktop Anwendung laufen. Schlie\u00dfe daher die Desktop Anwendung bevor du den Dienst startest. Der Dienst ben\u00f6tigt administrative Rechte, die du \u00fcber die Systemsteuerung einstellen musst. Beachte bitte auch, dass der Dienst zur Zeit nicht automatisch aktualisiert wird. Neue Versionen m\u00fcssen daher manuell installiert werden.", - "WizardCompleted": "Mehr brauchen wir momentan nicht. Media Browser hat nun angefangen Informationen zu Ihren Medien zu suchen. Schauen Sie sich nun unsere Apps an und klicken Sie auf Fertig<\/b> um auf die Server Startseite<\/b> zu gelangen.", - "LabelConfigureSettings": "Konfiguriere Einstellungen", - "LabelEnableVideoImageExtraction": "Aktiviere Videobild-Extrahierung", - "VideoImageExtractionHelp": "F\u00fcr Videos die noch keien Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliothekenscan etwas mehr Zeit beanspruchen, f\u00fchrt aber zu einer ansprechenderen Pr\u00e4sentation.", - "LabelEnableChapterImageExtractionForMovies": "Extrahiere Kapitelbilder f\u00fcr Filme", - "LabelChapterImageExtractionForMoviesHelp": "Das Extrahieren von Kapitel-Bildern erm\u00f6glicht es den Clients eine grafische Szenenauswahl anzubieten. Das Erstellen ist recht langsam, rechenintensiv und erfordert einige Gigabyte an freien Speicherplatz. Diese Aufgabe startet jede Nacht, das kann aber in den geplanten Aufgaben ge\u00e4ndert werden. Es wird nicht empfohlen diese Aufgabe in Zeiten hoher Server-Auslastung zu starten.", - "LabelEnableAutomaticPortMapping": "Aktiviere automatische Portweiterleitung", - "LabelEnableAutomaticPortMappingHelp": "UPnP erm\u00f6glicht die automatische Routerkonfiguration f\u00fcr den einfachen Remote-Zugriff. Diese Option ist nicht f\u00fcr jeden Router verf\u00fcgbar.", - "HeaderTermsOfService": "Nutzungsbedingungen", - "MessagePleaseAcceptTermsOfService": "Bitte akzeptieren Sie die Nutzungsbedingungen & Datenschutzbestimmungen bevor Sie fortfahren.", - "OptionIAcceptTermsOfService": "Ich akzeptiere die Nutzungsbedingungen.", - "ButtonPrivacyPolicy": "Datenschutzbestimmungen", - "ButtonTermsOfService": "Nutzungsbedingungen", - "HeaderDeveloperOptions": "Entwickleroptionen", - "OptionEnableWebClientResponseCache": "Aktiviere die Antwortzwischenspeicherung des Web Clients", - "OptionDisableForDevelopmentHelp": "Konfiguriere diese Einstellungen f\u00fcr die ben\u00f6tigten Entwicklungszwecke des Web Clients.", - "OptionEnableWebClientResourceMinification": "Aktiviere die Ressourcenminimierung des Web Clients", - "LabelDashboardSourcePath": "Web Client Sourcepfad:", - "LabelDashboardSourcePathHelp": "Spezifiziere den Pfad zum Dashboard-UI-Verzeichniss, falls der Server von der Source ausgef\u00fchrt wird. Alle Web-Client-Dateien werden von diesem Pfad aus bedient werden.", - "ButtonConvertMedia": "Konvertiere Medien", - "ButtonOrganize": "Organisieren", - "LabelPinCode": "PIN Code:", - "ButtonOk": "Ok", - "ButtonCancel": "Abbrechen", - "ButtonExit": "Exit", - "ButtonNew": "Neu", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Pfade", - "CategorySync": "Synchronisieren", - "HeaderEasyPinCode": "Einfacher PIN Code", - "HeaderGrownupsOnly": "Nur Erwachsene!", - "DividerOr": "-- oder --", - "HeaderInstalledServices": "Installierte Dienste", - "HeaderAvailableServices": "Verf\u00fcgbare Dienste", - "MessageNoServicesInstalled": "Keine Dienste installiert.", - "HeaderToAccessPleaseEnterEasyPinCode": "Bitte geben Sie Ihren vereinfachten PIN Code ein:", - "KidsModeAdultInstruction": "Verwenden Sie das Schloss-Symbol in der rechten oberen Ecke um den Kindermodus zu verlassen oder zu konfigurieren. Sie ben\u00f6tigen daf\u00fcr Ihren PIN Code.", - "ButtonConfigurePinCode": "PIN Code festlegen", - "HeaderAdultsReadHere": "Eltern, bitte lesen!", - "RegisterWithPayPal": "Registrieren mit PayPal", - "HeaderSyncRequiresSupporterMembership": "Synchronisation ben\u00f6tigt eine Supporter-Mitgliedschaft", - "HeaderEnjoyDayTrial": "Genie\u00dfen Sie eine 14 Tage Testversion", - "LabelSyncTempPath": "Verzeichnis f\u00fcr tempor\u00e4re Dateien", - "LabelSyncTempPathHelp": "Legen Sie einen eigenen Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.", - "LabelCustomCertificatePath": "Eigener Zertifikats Ordner:", - "LabelCustomCertificatePathHelp": "F\u00fcgen Sie ihr eigenes SSL Zertifikat als .pfx Datei hinzu. Wenn ausgelassen, wird der Server ein selbst signiertes Zertifikat f\u00fcr Sie erstellen.", - "TitleNotifications": "Benachrichtigungen", - "ButtonDonateWithPayPal": "Spende mit PayPal", - "OptionDetectArchiveFilesAsMedia": "Behandle Archive wie Medien", - "OptionDetectArchiveFilesAsMediaHelp": "Wenn aktiviert werden .rar und .zip Datei-Erweiterungen wie Medien behandelt.", - "LabelEnterConnectUserName": "Benutzername oder Email:", - "LabelEnterConnectUserNameHelp": "Dies ist Ihr online Media Browser Benutzername oder Passwort.", - "LabelEnableEnhancedMovies": "Aktiviere erweiterte Filmdarstellung.", - "LabelEnableEnhancedMoviesHelp": "Wenn aktiviert, werden Filme als Verzeichnisse dargestellt, welche Trailer, Extras, Besetzung & Crew sowie weitere Inhalte enth\u00e4lt.", - "HeaderSyncJobInfo": "Synchronisations-Aufgabe", - "FolderTypeMixed": "Gemischte Inhalte", - "FolderTypeMovies": "Filme", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Videos f\u00fcr Erwachsene", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Musikvideos", - "FolderTypeHomeVideos": "Heimvideos", - "FolderTypeGames": "Spiele", - "FolderTypeBooks": "B\u00fccher", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u00dcbernehmen", - "LabelContentType": "Inhalte-Typ:", - "TitleScheduledTasks": "Geplante Aufgaben", - "HeaderSetupLibrary": "Medienbibliothek einrichten", - "ButtonAddMediaFolder": "Medienverzeichnis hinzuf\u00fcgen", - "LabelFolderType": "Verzeichnistyp:", - "ReferToMediaLibraryWiki": "Siehe die Medienbibliothek Wiki", - "LabelCountry": "Land:", - "LabelLanguage": "Sprache:", - "LabelTimeLimitHours": "Zeitlimit (Stunden):", - "ButtonJoinTheDevelopmentTeam": "Schlie\u00dfen Sie sich dem Entwickler-Team an", - "HeaderPreferredMetadataLanguage": "Bevorzugte Metadata Sprache:", - "LabelSaveLocalMetadata": "Speichere Bildmaterial und Metadaten in den Medienverzeichnissen", - "LabelSaveLocalMetadataHelp": "Durch die Speicherung von Bildmaterial und Metadaten direkt in den Medienverzeichnissen, befinden sich diese an einem Ort wo sie sehr leicht bearbeitet werden k\u00f6nnen.", - "LabelDownloadInternetMetadata": "Lade Bildmaterial und Metadaten aus dem Internet", - "LabelDownloadInternetMetadataHelp": "Media Browser kann Informationen \u00fcber ihre Medien aus dem Internet abrufen um eine optisch ansprechende Darstellung zu erm\u00f6glichen.", - "TabPreferences": "Einstellungen", - "TabPassword": "Passwort", - "TabLibraryAccess": "Bibliothekenzugriff", - "TabAccess": "Zugang", - "TabImage": "Bild", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Bilder", - "TabNotifications": "Benachrichtigungen", - "TabCollectionTitles": "Titel", - "HeaderDeviceAccess": "Ger\u00e4te Zugang", - "OptionEnableAccessFromAllDevices": "Zugriff von allen Ger\u00e4ten erlauben", - "OptionEnableAccessToAllChannels": "Aktiviere Zugriff auf alle Kan\u00e4le", - "OptionEnableAccessToAllLibraries": "Erlaube Zugriff auf alle Bibliotheken", - "DeviceAccessHelp": "Dies wird nur auf Ger\u00e4te angewandt die eindeutig identifiziert werden k\u00f6nnen und verhindert nicht den Web-Zugriff. Gefilterter Zugriff auf Ger\u00e4te verhindert die Nutzung neuer Ger\u00e4te solange, bis der Zugriff f\u00fcr diese freigegeben wird.", - "LabelDisplayMissingEpisodesWithinSeasons": "Zeige fehlende Episoden innerhalb von Staffeln", - "LabelUnairedMissingEpisodesWithinSeasons": "Zeige noch nicht ausgestahlte Episoden innerhalb von Staffeln", - "HeaderVideoPlaybackSettings": "Videowiedergabe Einstellungen", - "HeaderPlaybackSettings": "Wiedergabe Einstellungen", - "LabelAudioLanguagePreference": "Audiosprache Einstellungen:", - "LabelSubtitleLanguagePreference": "Untertitelsprache Einstellungen:", - "OptionDefaultSubtitles": "Standard", - "OptionOnlyForcedSubtitles": "Nur erzwungene Untertitel", - "OptionAlwaysPlaySubtitles": "Untertitel immer anzeigen", - "OptionNoSubtitles": "Keine Untertitel", - "OptionDefaultSubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden nur bei einer Tonspur in fremder Sprache heruntergeladen.", - "OptionOnlyForcedSubtitlesHelp": "Nur Untertitel, die als erzwungener Download markiert wurden, werden heruntergeladen.", - "OptionAlwaysPlaySubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden unabh\u00e4ngig von der Tonspur Sprache heruntergeladen.", - "OptionNoSubtitlesHelp": "Untertitel wird standardm\u00e4\u00dfig nicht geladen.", - "TabProfiles": "Profile", - "TabSecurity": "Sicherheit", - "ButtonAddUser": "User hinzuf\u00fcgen", - "ButtonAddLocalUser": "F\u00fcge lokalen Benutzer hinzu", - "ButtonInviteUser": "Lade Benutzer ein", - "ButtonSave": "Speichern", - "ButtonResetPassword": "Passwort zur\u00fccksetzten", - "LabelNewPassword": "Neues Passwort:", - "LabelNewPasswordConfirm": "Neues Passwort wiederhohlen:", - "HeaderCreatePassword": "Erstelle Passwort", - "LabelCurrentPassword": "Aktuelles Passwort:", - "LabelMaxParentalRating": "H\u00f6chste erlaubte elterlich Bewertung:", - "MaxParentalRatingHelp": "Inhalt mit einer h\u00f6heren Bewertung wird dem User nicht angezeigt.", - "LibraryAccessHelp": "W\u00e4hle die Medienverzeichnisse die du mit diesem Benutzer teilen m\u00f6chtest. Administratoren k\u00f6nnen den Metadaten-Manager verwenden um alle Ordner zu bearbeiten.", - "ChannelAccessHelp": "W\u00e4hle die Kan\u00e4le, die mit diesem Benutzer geteilt werden sollen. Administratoren sind in der Lage alle K\u00e4nale \u00fcber den Metadaten-Manager zu bearbeiten.", - "ButtonDeleteImage": "L\u00f6sche Bild", - "LabelSelectUsers": "W\u00e4hle Benutzer:", - "ButtonUpload": "Hochladen", - "HeaderUploadNewImage": "Neues Bild hochladen", - "LabelDropImageHere": "Fotos hierher ziehen", - "ImageUploadAspectRatioHelp": "1:1 Seitenverh\u00e4ltnis empfohlen. Nur JPG\/PNG.", - "MessageNothingHere": "Nichts hier.", - "MessagePleaseEnsureInternetMetadata": "Bitte sicherstellen, dass das Herunterladen von Internet Metadaten aktiviert ist.", - "TabSuggested": "Vorgeschlagen", - "TabLatest": "Neueste", - "TabUpcoming": "Bevorstehend", - "TabShows": "Serien", - "TabEpisodes": "Episoden", - "TabGenres": "Genres", - "TabPeople": "Personen", - "TabNetworks": "Sendergruppen", - "HeaderUsers": "Benutzer", - "HeaderFilters": "Filter:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favoriten", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Darsteller", - "OptionGuestStars": "Gaststar", - "OptionDirectors": "Regisseur", - "OptionWriters": "Drehbuchautor", - "OptionProducers": "Produzent", - "HeaderResume": "Fortsetzen", - "HeaderNextUp": "Als N\u00e4chstes", - "NoNextUpItemsMessage": "Es wurde nichts gefunden. Schau dir deine Shows an!", - "HeaderLatestEpisodes": "Neueste Episoden", - "HeaderPersonTypes": "Personen Typen:", - "TabSongs": "Songs", - "TabAlbums": "Alben", - "TabArtists": "Interpreten", - "TabAlbumArtists": "Album-Interpreten", - "TabMusicVideos": "Musikvideos", - "ButtonSort": "Sortieren", - "HeaderSortBy": "Sortiert nach", - "HeaderSortOrder": "Sortierreihenfolge", - "OptionPlayed": "gespielt", - "OptionUnplayed": "nicht gespielt", - "OptionAscending": "Aufsteigend", - "OptionDescending": "Absteigend", - "OptionRuntime": "Dauer", - "OptionReleaseDate": "Ver\u00f6ffentlichungsdatum", - "OptionPlayCount": "Z\u00e4hler", - "OptionDatePlayed": "Abgespielt am", - "OptionDateAdded": "Hinzugef\u00fcgt am", - "OptionAlbumArtist": "Album-Interpret", - "OptionArtist": "Interpret", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Bewertung", - "OptionNameSort": "Name", - "OptionFolderSort": "Verzeichnisse", - "OptionBudget": "Budget", - "OptionRevenue": "Einnahme", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster Karte", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Zeitlinie", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb Karte", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritiker Bewertung", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Kann fortgesetzt werden", - "ScheduledTasksHelp": "Klicke auf eine Aufgabe um deren Zeitplan zu \u00e4ndern.", - "ScheduledTasksTitle": "Geplante Aufgaben", - "TabMyPlugins": "Meine Plugins", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatische Updates", - "HeaderNowPlaying": "Aktuelle Wiedergabe", - "HeaderLatestAlbums": "Neueste Alben", - "HeaderLatestSongs": "Neueste Songs", "HeaderRecentlyPlayed": "Zuletzt gespielt", "HeaderFrequentlyPlayed": "Oft gespielt", "DevBuildWarning": "Dev Builds sind experimentell. Diese sehr oft ver\u00f6ffentlichten Builds sind nicht getestet. Das Programm kann abst\u00fcrzen und m\u00f6glicherweise k\u00f6nnen einzelne Funktionen nicht funktionieren.", @@ -917,6 +685,7 @@ "LabelChannelDownloadAgeHelp": "Heruntergeladene Inhalte die \u00e4lter als dieser Wert sind werden gel\u00f6scht. Sie werden aber weiterhin \u00fcber das Internetstreaming verf\u00fcgbar sein.", "ChannelSettingsFormHelp": "Installiere Kan\u00e4le wie beispielsweise \"Trailers\" oder \"Vimeo\" aus dem Plugin Katalog.", "ButtonOptions": "Optionen", + "ViewTypePlaylists": "Wiedergabelisten", "ViewTypeMovies": "Filme", "ViewTypeTvShows": "TV", "ViewTypeGames": "Spiele", @@ -1159,6 +928,7 @@ "LabelIfYouWishToContinueWithDeletion": "Falls du fortfahren m\u00f6chtest, gibt bitte das Ergebnis aus folgender Rechnung an:", "ButtonIdentify": "Identifizieren", "LabelAlbumArtist": "Album-Interpret:", + "LabelAlbumArtists": "Alben Interpreten:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community Bewertung:", "LabelVoteCount": "Stimmen:", @@ -1371,5 +1141,249 @@ "LabelTagFilterMode": "Modus:", "LabelTagFilterAllowModeHelp": "Wenn erlaubte Tags als Teil einer unter verzweigten Ordnerstruktur verwendet werden, m\u00fcssen \u00fcbergeordnete Verzeichnisse ebenso mit Tags versehen werden.", "HeaderThisUserIsCurrentlyDisabled": "Dieser Benutzer ist aktuell deaktiviert", - "MessageReenableUser": "F\u00fcr Reaktivierung schauen Sie unten" + "MessageReenableUser": "F\u00fcr Reaktivierung schauen Sie unten", + "LabelEnableInternetMetadataForTvPrograms": "Lade Internet Metadaten f\u00fcr:", + "OptionTVMovies": "TV Filme", + "HeaderUpcomingMovies": "Bevorstehende Filme", + "HeaderUpcomingPrograms": "Bevorstehende Programme", + "ButtonMoreItems": "Mehr...", + "LabelShowLibraryTileNames": "Zeige Bibliothek Kachelnamen.", + "LabelShowLibraryTileNamesHelp": "Legen Sie fest, ob Beschriftungen unter den Kacheln der Startseite angezeigt werden sollen.", + "LabelExit": "Beenden", + "LabelVisitCommunity": "Besuche die Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Dokumentation", + "LabelDeveloperResources": "Entwickler Ressourcen", + "LabelBrowseLibrary": "Bibliothek durchsuchen", + "LabelConfigureMediaBrowser": "Konfiguriere Media Browser", + "LabelOpenLibraryViewer": "\u00d6ffne Bibliothekenansicht", + "LabelRestartServer": "Server neustarten", + "LabelShowLogWindow": "Zeige Log Fenster", + "LabelPrevious": "Vorheriges", + "LabelFinish": "Fertig", + "LabelNext": "N\u00e4chstes", + "LabelYoureDone": "Du bist fertig!", + "WelcomeToMediaBrowser": "Willkommen zu Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Dieser Assistent wird dich durch den Einrichtungsprozess f\u00fchren. Um zu beginnen, w\u00e4hle bitte deine bevorzugte Sprache.", + "TellUsAboutYourself": "Sag uns etwas \u00fcber dich selbst", + "ButtonQuickStartGuide": "Schnellstart Instruktionen", + "LabelYourFirstName": "Vorname:", + "MoreUsersCanBeAddedLater": "Weitere Benutzer k\u00f6nnen sp\u00e4ter \u00fcber die Optionsleiste hinzugef\u00fcgt werden.", + "UserProfilesIntro": "Media Browser verf\u00fcgt \u00fcber integrierte Benutzer Profile. Verwende diese Profile um Anzeigeeinstellungen, Abspielstatus sowie Kinder- und Jugendschutzverwaltungen f\u00fcr jeden Benutzer einzeln einzurichten und zu speichern.", + "LabelWindowsService": "Windows-Dienst", + "AWindowsServiceHasBeenInstalled": "Ein Windows Dienst wurde installiert.", + "WindowsServiceIntro1": "Media Browser Server l\u00e4uft normalerweise als Desktop Anwendung mit einem Symbol in der Taskleiste. Du kannst den Server aber auch als Hintergrunddienst starten. Verwende dazu das Windows Service Control Panel (services.msc).", + "WindowsServiceIntro2": "Der Dienst kann nicht zu gleichen Zeit wie die Desktop Anwendung laufen. Schlie\u00dfe daher die Desktop Anwendung bevor du den Dienst startest. Der Dienst ben\u00f6tigt administrative Rechte, die du \u00fcber die Systemsteuerung einstellen musst. Beachte bitte auch, dass der Dienst zur Zeit nicht automatisch aktualisiert wird. Neue Versionen m\u00fcssen daher manuell installiert werden.", + "WizardCompleted": "Mehr brauchen wir momentan nicht. Media Browser hat nun angefangen Informationen zu Ihren Medien zu suchen. Schauen Sie sich nun unsere Apps an und klicken Sie auf Fertig<\/b> um auf die Server Startseite<\/b> zu gelangen.", + "LabelConfigureSettings": "Konfiguriere Einstellungen", + "LabelEnableVideoImageExtraction": "Aktiviere Videobild-Extrahierung", + "VideoImageExtractionHelp": "F\u00fcr Videos die noch keien Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliothekenscan etwas mehr Zeit beanspruchen, f\u00fchrt aber zu einer ansprechenderen Pr\u00e4sentation.", + "LabelEnableChapterImageExtractionForMovies": "Extrahiere Kapitelbilder f\u00fcr Filme", + "LabelChapterImageExtractionForMoviesHelp": "Das Extrahieren von Kapitel-Bildern erm\u00f6glicht es den Clients eine grafische Szenenauswahl anzubieten. Das Erstellen ist recht langsam, rechenintensiv und erfordert einige Gigabyte an freien Speicherplatz. Diese Aufgabe startet jede Nacht, das kann aber in den geplanten Aufgaben ge\u00e4ndert werden. Es wird nicht empfohlen diese Aufgabe in Zeiten hoher Server-Auslastung zu starten.", + "LabelEnableAutomaticPortMapping": "Aktiviere automatische Portweiterleitung", + "LabelEnableAutomaticPortMappingHelp": "UPnP erm\u00f6glicht die automatische Routerkonfiguration f\u00fcr den einfachen Remote-Zugriff. Diese Option ist nicht f\u00fcr jeden Router verf\u00fcgbar.", + "HeaderTermsOfService": "Nutzungsbedingungen", + "MessagePleaseAcceptTermsOfService": "Bitte akzeptieren Sie die Nutzungsbedingungen & Datenschutzbestimmungen bevor Sie fortfahren.", + "OptionIAcceptTermsOfService": "Ich akzeptiere die Nutzungsbedingungen.", + "ButtonPrivacyPolicy": "Datenschutzbestimmungen", + "ButtonTermsOfService": "Nutzungsbedingungen", + "HeaderDeveloperOptions": "Entwickleroptionen", + "OptionEnableWebClientResponseCache": "Aktiviere die Antwortzwischenspeicherung des Web Clients", + "OptionDisableForDevelopmentHelp": "Konfiguriere diese Einstellungen f\u00fcr die ben\u00f6tigten Entwicklungszwecke des Web Clients.", + "OptionEnableWebClientResourceMinification": "Aktiviere die Ressourcenminimierung des Web Clients", + "LabelDashboardSourcePath": "Web Client Sourcepfad:", + "LabelDashboardSourcePathHelp": "Spezifiziere den Pfad zum Dashboard-UI-Verzeichniss, falls der Server von der Source ausgef\u00fchrt wird. Alle Web-Client-Dateien werden von diesem Pfad aus bedient werden.", + "ButtonConvertMedia": "Konvertiere Medien", + "ButtonOrganize": "Organisieren", + "LinkedToMediaBrowserConnect": "Verkn\u00fcpft mit Media Browser Connect", + "HeaderSupporterBenefits": "Unterst\u00fctzer Vorteile", + "HeaderAddUser": "Benutzer hinzuf\u00fcgen", + "LabelAddConnectSupporterHelp": "Um einen Benutzer hinzuzuf\u00fcgen, der nicht gelistet ist, m\u00fcssen Sie dessen Benutzerkonto erst \u00fcber sein Benutzerprofil mit Media Browser Connect verkn\u00fcpfen.", + "LabelPinCode": "PIN Code:", + "ButtonOk": "Ok", + "ButtonCancel": "Abbrechen", + "ButtonExit": "Exit", + "ButtonNew": "Neu", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Pfade", + "CategorySync": "Synchronisieren", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Einfacher PIN Code", + "HeaderGrownupsOnly": "Nur Erwachsene!", + "DividerOr": "-- oder --", + "HeaderInstalledServices": "Installierte Dienste", + "HeaderAvailableServices": "Verf\u00fcgbare Dienste", + "MessageNoServicesInstalled": "Keine Dienste installiert.", + "HeaderToAccessPleaseEnterEasyPinCode": "Bitte geben Sie Ihren vereinfachten PIN Code ein:", + "KidsModeAdultInstruction": "Verwenden Sie das Schloss-Symbol in der rechten oberen Ecke um den Kindermodus zu verlassen oder zu konfigurieren. Sie ben\u00f6tigen daf\u00fcr Ihren PIN Code.", + "ButtonConfigurePinCode": "PIN Code festlegen", + "HeaderAdultsReadHere": "Eltern, bitte lesen!", + "RegisterWithPayPal": "Registrieren mit PayPal", + "HeaderSyncRequiresSupporterMembership": "Synchronisation ben\u00f6tigt eine Supporter-Mitgliedschaft", + "HeaderEnjoyDayTrial": "Genie\u00dfen Sie eine 14 Tage Testversion", + "LabelSyncTempPath": "Verzeichnis f\u00fcr tempor\u00e4re Dateien", + "LabelSyncTempPathHelp": "Legen Sie einen eigenen Synchronisations-Arbeits Verzeichnis fest. Konvertierte Medien werden w\u00e4hrend der Synchronisation hier gespeichert.", + "LabelCustomCertificatePath": "Eigener Zertifikats Ordner:", + "LabelCustomCertificatePathHelp": "F\u00fcgen Sie ihr eigenes SSL Zertifikat als .pfx Datei hinzu. Wenn ausgelassen, wird der Server ein selbst signiertes Zertifikat f\u00fcr Sie erstellen.", + "TitleNotifications": "Benachrichtigungen", + "ButtonDonateWithPayPal": "Spende mit PayPal", + "OptionDetectArchiveFilesAsMedia": "Behandle Archive wie Medien", + "OptionDetectArchiveFilesAsMediaHelp": "Wenn aktiviert werden .rar und .zip Datei-Erweiterungen wie Medien behandelt.", + "LabelEnterConnectUserName": "Benutzername oder Email:", + "LabelEnterConnectUserNameHelp": "Dies ist Ihr online Media Browser Benutzername oder Passwort.", + "LabelEnableEnhancedMovies": "Aktiviere erweiterte Filmdarstellung.", + "LabelEnableEnhancedMoviesHelp": "Wenn aktiviert, werden Filme als Verzeichnisse dargestellt, welche Trailer, Extras, Besetzung & Crew sowie weitere Inhalte enth\u00e4lt.", + "HeaderSyncJobInfo": "Synchronisations-Aufgabe", + "FolderTypeMixed": "Gemischte Inhalte", + "FolderTypeMovies": "Filme", + "FolderTypeMusic": "Musik", + "FolderTypeAdultVideos": "Videos f\u00fcr Erwachsene", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Musikvideos", + "FolderTypeHomeVideos": "Heimvideos", + "FolderTypeGames": "Spiele", + "FolderTypeBooks": "B\u00fccher", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "\u00dcbernehmen", + "LabelContentType": "Inhalte-Typ:", + "TitleScheduledTasks": "Geplante Aufgaben", + "HeaderSetupLibrary": "Medienbibliothek einrichten", + "ButtonAddMediaFolder": "Medienverzeichnis hinzuf\u00fcgen", + "LabelFolderType": "Verzeichnistyp:", + "ReferToMediaLibraryWiki": "Siehe die Medienbibliothek Wiki", + "LabelCountry": "Land:", + "LabelLanguage": "Sprache:", + "LabelTimeLimitHours": "Zeitlimit (Stunden):", + "ButtonJoinTheDevelopmentTeam": "Schlie\u00dfen Sie sich dem Entwickler-Team an", + "HeaderPreferredMetadataLanguage": "Bevorzugte Metadata Sprache:", + "LabelSaveLocalMetadata": "Speichere Bildmaterial und Metadaten in den Medienverzeichnissen", + "LabelSaveLocalMetadataHelp": "Durch die Speicherung von Bildmaterial und Metadaten direkt in den Medienverzeichnissen, befinden sich diese an einem Ort wo sie sehr leicht bearbeitet werden k\u00f6nnen.", + "LabelDownloadInternetMetadata": "Lade Bildmaterial und Metadaten aus dem Internet", + "LabelDownloadInternetMetadataHelp": "Media Browser kann Informationen \u00fcber ihre Medien aus dem Internet abrufen um eine optisch ansprechende Darstellung zu erm\u00f6glichen.", + "TabPreferences": "Einstellungen", + "TabPassword": "Passwort", + "TabLibraryAccess": "Bibliothekenzugriff", + "TabAccess": "Zugang", + "TabImage": "Bild", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Bilder", + "TabNotifications": "Benachrichtigungen", + "TabCollectionTitles": "Titel", + "HeaderDeviceAccess": "Ger\u00e4te Zugang", + "OptionEnableAccessFromAllDevices": "Zugriff von allen Ger\u00e4ten erlauben", + "OptionEnableAccessToAllChannels": "Aktiviere Zugriff auf alle Kan\u00e4le", + "OptionEnableAccessToAllLibraries": "Erlaube Zugriff auf alle Bibliotheken", + "DeviceAccessHelp": "Dies wird nur auf Ger\u00e4te angewandt die eindeutig identifiziert werden k\u00f6nnen und verhindert nicht den Web-Zugriff. Gefilterter Zugriff auf Ger\u00e4te verhindert die Nutzung neuer Ger\u00e4te solange, bis der Zugriff f\u00fcr diese freigegeben wird.", + "LabelDisplayMissingEpisodesWithinSeasons": "Zeige fehlende Episoden innerhalb von Staffeln", + "LabelUnairedMissingEpisodesWithinSeasons": "Zeige noch nicht ausgestahlte Episoden innerhalb von Staffeln", + "HeaderVideoPlaybackSettings": "Videowiedergabe Einstellungen", + "HeaderPlaybackSettings": "Wiedergabe Einstellungen", + "LabelAudioLanguagePreference": "Audiosprache Einstellungen:", + "LabelSubtitleLanguagePreference": "Untertitelsprache Einstellungen:", + "OptionDefaultSubtitles": "Standard", + "OptionOnlyForcedSubtitles": "Nur erzwungene Untertitel", + "OptionAlwaysPlaySubtitles": "Untertitel immer anzeigen", + "OptionNoSubtitles": "Keine Untertitel", + "OptionDefaultSubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden nur bei einer Tonspur in fremder Sprache heruntergeladen.", + "OptionOnlyForcedSubtitlesHelp": "Nur Untertitel, die als erzwungener Download markiert wurden, werden heruntergeladen.", + "OptionAlwaysPlaySubtitlesHelp": "Untertitel die den Spracheinstellungen entsprechen werden unabh\u00e4ngig von der Tonspur Sprache heruntergeladen.", + "OptionNoSubtitlesHelp": "Untertitel wird standardm\u00e4\u00dfig nicht geladen.", + "TabProfiles": "Profile", + "TabSecurity": "Sicherheit", + "ButtonAddUser": "User hinzuf\u00fcgen", + "ButtonAddLocalUser": "F\u00fcge lokalen Benutzer hinzu", + "ButtonInviteUser": "Lade Benutzer ein", + "ButtonSave": "Speichern", + "ButtonResetPassword": "Passwort zur\u00fccksetzten", + "LabelNewPassword": "Neues Passwort:", + "LabelNewPasswordConfirm": "Neues Passwort wiederhohlen:", + "HeaderCreatePassword": "Erstelle Passwort", + "LabelCurrentPassword": "Aktuelles Passwort:", + "LabelMaxParentalRating": "H\u00f6chste erlaubte elterlich Bewertung:", + "MaxParentalRatingHelp": "Inhalt mit einer h\u00f6heren Bewertung wird dem User nicht angezeigt.", + "LibraryAccessHelp": "W\u00e4hle die Medienverzeichnisse die du mit diesem Benutzer teilen m\u00f6chtest. Administratoren k\u00f6nnen den Metadaten-Manager verwenden um alle Ordner zu bearbeiten.", + "ChannelAccessHelp": "W\u00e4hle die Kan\u00e4le, die mit diesem Benutzer geteilt werden sollen. Administratoren sind in der Lage alle K\u00e4nale \u00fcber den Metadaten-Manager zu bearbeiten.", + "ButtonDeleteImage": "L\u00f6sche Bild", + "LabelSelectUsers": "W\u00e4hle Benutzer:", + "ButtonUpload": "Hochladen", + "HeaderUploadNewImage": "Neues Bild hochladen", + "LabelDropImageHere": "Fotos hierher ziehen", + "ImageUploadAspectRatioHelp": "1:1 Seitenverh\u00e4ltnis empfohlen. Nur JPG\/PNG.", + "MessageNothingHere": "Nichts hier.", + "MessagePleaseEnsureInternetMetadata": "Bitte sicherstellen, dass das Herunterladen von Internet Metadaten aktiviert ist.", + "TabSuggested": "Vorgeschlagen", + "TabLatest": "Neueste", + "TabUpcoming": "Bevorstehend", + "TabShows": "Serien", + "TabEpisodes": "Episoden", + "TabGenres": "Genres", + "TabPeople": "Personen", + "TabNetworks": "Sendergruppen", + "HeaderUsers": "Benutzer", + "HeaderFilters": "Filter:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favoriten", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Darsteller", + "OptionGuestStars": "Gaststar", + "OptionDirectors": "Regisseur", + "OptionWriters": "Drehbuchautor", + "OptionProducers": "Produzent", + "HeaderResume": "Fortsetzen", + "HeaderNextUp": "Als N\u00e4chstes", + "NoNextUpItemsMessage": "Es wurde nichts gefunden. Schau dir deine Shows an!", + "HeaderLatestEpisodes": "Neueste Episoden", + "HeaderPersonTypes": "Personen Typen:", + "TabSongs": "Songs", + "TabAlbums": "Alben", + "TabArtists": "Interpreten", + "TabAlbumArtists": "Album-Interpreten", + "TabMusicVideos": "Musikvideos", + "ButtonSort": "Sortieren", + "HeaderSortBy": "Sortiert nach", + "HeaderSortOrder": "Sortierreihenfolge", + "OptionPlayed": "gespielt", + "OptionUnplayed": "nicht gespielt", + "OptionAscending": "Aufsteigend", + "OptionDescending": "Absteigend", + "OptionRuntime": "Dauer", + "OptionReleaseDate": "Ver\u00f6ffentlichungsdatum", + "OptionPlayCount": "Z\u00e4hler", + "OptionDatePlayed": "Abgespielt am", + "OptionDateAdded": "Hinzugef\u00fcgt am", + "OptionAlbumArtist": "Album-Interpret", + "OptionArtist": "Interpret", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Bewertung", + "OptionNameSort": "Name", + "OptionFolderSort": "Verzeichnisse", + "OptionBudget": "Budget", + "OptionRevenue": "Einnahme", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster Karte", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Zeitlinie", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb Karte", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritiker Bewertung", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Kann fortgesetzt werden", + "ScheduledTasksHelp": "Klicke auf eine Aufgabe um deren Zeitplan zu \u00e4ndern.", + "ScheduledTasksTitle": "Geplante Aufgaben", + "TabMyPlugins": "Meine Plugins", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatische Updates", + "HeaderNowPlaying": "Aktuelle Wiedergabe", + "HeaderLatestAlbums": "Neueste Alben", + "HeaderLatestSongs": "Neueste Songs" } \ 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 cd4cf7ef8..c67876116 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -1,270 +1,4 @@ { - "LabelExit": "\u03ad\u03be\u03bf\u03b4\u03bf\u03c2", - "LabelVisitCommunity": "\u0395\u03c0\u03af\u03c3\u03ba\u03b5\u03c8\u03b7 \u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", - "LabelConfigureMediaBrowser": "\u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Media Browser", - "LabelOpenLibraryViewer": "\u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b8\u03b5\u03b1\u03c4\u03ae", - "LabelRestartServer": "\u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", - "LabelShowLogWindow": "\u0394\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03c4\u03bf \u03b7\u03bc\u03b5\u03c1\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", - "LabelPrevious": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2", - "LabelFinish": "\u03c4\u03ad\u03bb\u03bf\u03c2", - "LabelNext": "\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 ", - "LabelYoureDone": "\u03a4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03b1\u03c4\u03b5", - "WelcomeToMediaBrowser": "\u039a\u03b1\u03bb\u03ce\u03c2 \u03ae\u03c1\u03b8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf Media Browser", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03bf\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03bf\u03b4\u03b7\u03b3\u03ae\u03c3\u03b5\u03b9 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5, \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2.", - "TellUsAboutYourself": "\u03a0\u03b5\u03af\u03c4\u03b5 \u03bc\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03c3\u03ac\u03c2", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", - "MoreUsersCanBeAddedLater": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03c4\u03b1\u03bc\u03c0\u03bb\u03cc", - "UserProfilesIntro": "Media Browser \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03b9 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b7 \u03c5\u03c0\u03bf\u03c3\u03c4\u03ae\u03c1\u03b9\u03be\u03b7 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7, \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03c5\u03bd \u03c3\u03b5 \u03ba\u03ac\u03b8\u03b5 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03b4\u03b9\u03ba\u03ad\u03c2 \u03c4\u03bf\u03c5\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2, playstate \u03ba\u03b1\u03b9 \u03b3\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5.\n", - "LabelWindowsService": "Windows \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 ", - "AWindowsServiceHasBeenInstalled": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows \u03ad\u03c7\u03bf\u03c5\u03bd \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af", - "WindowsServiceIntro1": "Media Browser Server \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03af \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03c9\u03c2 \u03ad\u03bd\u03b1 desktop \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf \u03c4\u03bf\u03c5 \u03b4\u03af\u03c3\u03ba\u03bf\u03c5, \u03b1\u03bb\u03bb\u03ac \u03b1\u03bd \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ac\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03c1\u03ad\u03be\u03b5\u03b9 \u03c9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03c5\u03c0\u03cc\u03b2\u03b1\u03b8\u03c1\u03bf, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03c9\u03bd Windows \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b1\u03bd\u03c4 '\u03b1\u03c5\u03c4\u03bf\u03cd. ", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bb\u03b9\u03bc\u03ac\u03bd\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c7\u03b1\u03c1\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03b7\u03c3\u03b7", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", - "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c4\u03bf\u03c5 Media", - "LabelFolderType": "\u03a4\u03cd\u03c0\u03bf \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5 ", - "ReferToMediaLibraryWiki": "\u0391\u03bd\u03b1\u03c4\u03c1\u03b5\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf media \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 wiki", - "LabelCountry": "T\u03b7 \u03c7\u03ce\u03c1\u03b1", - "LabelLanguage": "\u03a4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ce\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03bc\u03b5\u03c4\u03b1", - "LabelSaveLocalMetadata": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ad\u03c1\u03b3\u03bf \u03c4\u03ad\u03c7\u03bd\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", - "LabelSaveLocalMetadataHelp": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 artwork \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03b5\u03c5\u03b8\u03b5\u03af\u03b1\u03c2 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03bc\u03ad\u03c3\u03c9\u03bd \u03b8\u03b1 \u03c4\u03bf\u03c5\u03c2 \u03b8\u03ad\u03c3\u03b5\u03b9 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c4\u03cc\u03c0\u03bf \u03cc\u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03b5\u03cd\u03ba\u03bf\u03bb\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5.", - "LabelDownloadInternetMetadata": "\u039a\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 \u03ad\u03c1\u03b3\u03b1 \u03c4\u03ad\u03c7\u03bd\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf internet ", - "LabelDownloadInternetMetadataHelp": "Media Browser \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03b5\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b1 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03bb\u03bf\u03cd\u03c3\u03b9\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03b5\u03b9\u03c2.", - "TabPreferences": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ae\u03c3\u03b5\u03b9\u03c2 ", - "TabPassword": "\u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc", - "TabLibraryAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", - "TabAccess": "Access", - "TabImage": "\u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", - "TabProfile": "\u03c0\u03c1\u03bf\u03c6\u03af\u03bb ", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03bb\u03b5\u03af\u03c0\u03b5\u03b9 \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1 \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b5\u03c0\u03bf\u03c7\u03ad\u03c2", - "LabelUnairedMissingEpisodesWithinSeasons": "\u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd unaired \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1 \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b5\u03c0\u03bf\u03c7\u03ad\u03c2", - "HeaderVideoPlaybackSettings": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2.", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "\u039f\u03bc\u03b9\u03bb\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7\u03c2", - "LabelSubtitleLanguagePreference": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03c9\u03bd \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7\u03c2", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u03c4\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb", - "TabSecurity": "A\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1 ", - "ButtonAddUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03c4\u03b5", - "ButtonResetPassword": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", - "LabelNewPassword": "\u039d\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", - "LabelNewPasswordConfirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf \u03bd\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", - "HeaderCreatePassword": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", - "LabelCurrentPassword": "\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", - "LabelMaxParentalRating": "\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03b5\u03c0\u03b9\u03c4\u03c1\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03b3\u03bf\u03bd\u03b9\u03ba\u03ae \u03b2\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1:", - "MaxParentalRatingHelp": "\u03a4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c8\u03b7\u03bb\u03cc\u03c4\u03b5\u03c1\u03b7 \u03b2\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03c1\u03c5\u03bc\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", - "LibraryAccessHelp": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03bc\u03ad\u03c3\u03c9\u03bd \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03bf \u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7. \u039f\u03b9 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03b8\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03b7 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03ac\u03b6\u03b5\u03c3\u03c4\u03b5 \u03cc\u03bb\u03b1 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ce\u03bd\u03c4\u03b1\u03c2 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "\u0391\u03bd\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 ", - "HeaderUploadNewImage": "\u0391\u03bd\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 \u03bd\u03ad\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only", - "MessageNothingHere": "\u03a4\u03af\u03c0\u03bf\u03c4\u03b1 \u03b5\u03b4\u03ce ", - "MessagePleaseEnsureInternetMetadata": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03bb\u03ae\u03c8\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c4\u03bf internet \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7.\n", - "TabSuggested": "\u03a0\u03c1\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc\u03bc\u03b5\u03bd\u03b7", - "TabLatest": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c2", - "TabUpcoming": "\u0395\u03c0\u03b5\u03c1\u03c7\u03cc\u03bc\u03b5\u03bd\u03b7", - "TabShows": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", - "TabEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", - "TabGenres": "\u0395\u03af\u03b4\u03b7", - "TabPeople": "\u0386\u03bd\u03b8\u03c1\u03c9\u03c0\u03bf\u03b9 ", - "TabNetworks": "\u0394\u03af\u03ba\u03c4\u03c5\u03b1", - "HeaderUsers": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 ", - "HeaderFilters": "\u03a6\u03af\u03bb\u03c4\u03c1\u03b1", - "ButtonFilter": "\u03c6\u03af\u03bb\u03c4\u03c1\u03bf", - "OptionFavorite": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1", - "OptionLikes": "\u03a3\u03c5\u03bc\u03c0\u03b1\u03b8\u03b5\u03af", - "OptionDislikes": "\u0391\u03bd\u03c4\u03b9\u03c0\u03b1\u03b8\u03b5\u03af", - "OptionActors": "\u0397\u03b8\u03bf\u03c0\u03bf\u03b9\u03bf\u03af", - "OptionGuestStars": "\u0393\u03ba\u03b5\u03c3\u03c4 \u03c3\u03c4\u03b1\u03c1", - "OptionDirectors": "\u03b4\u03b9\u03b5\u03c5\u03b8\u03c5\u03bd\u03c4\u03ad\u03c2", - "OptionWriters": "\u03a3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2", - "OptionProducers": "\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03bf\u03af", - "HeaderResume": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03b9 ", - "HeaderNextUp": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", - "NoNextUpItemsMessage": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1. \u039e\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ce\u03bd\u03c4\u03b1\u03c2 \u03b5\u03c0\u03b9\u03b4\u03b5\u03af\u03be\u03b5\u03b9\u03c2 \u03c3\u03b1\u03c2!", - "HeaderLatestEpisodes": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "\u03c4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", - "TabAlbums": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", - "TabArtists": "\u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", - "TabAlbumArtists": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", - "TabMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", - "ButtonSort": "\u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03ae\u03c3\u03b5\u03c4\u03b5", - "HeaderSortBy": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac", - "HeaderSortOrder": "\u03a3\u03b5\u03b9\u03c1\u03ac \u03c4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7\u03c2", - "OptionPlayed": "\u03a0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", - "OptionUnplayed": "\u03b4\u03b5\u03bd \u03c0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", - "OptionAscending": "\u03b1\u03cd\u03be\u03bf\u03c5\u03c3\u03b1", - "OptionDescending": "\u03c6\u03b8\u03af\u03bd\u03bf\u03c5\u03c3\u03b1 ", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7\u03c2", - "OptionAlbumArtist": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", - "OptionArtist": " \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", - "OptionAlbum": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", "OptionSunday": "Sunday", "OptionMonday": "Monday", "OptionTuesday": "Tuesday", @@ -917,6 +651,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +894,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1107,283 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u03ad\u03be\u03bf\u03b4\u03bf\u03c2", + "LabelVisitCommunity": "\u0395\u03c0\u03af\u03c3\u03ba\u03b5\u03c8\u03b7 \u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u03c0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", + "LabelConfigureMediaBrowser": "\u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf Media Browser", + "LabelOpenLibraryViewer": "\u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b8\u03b5\u03b1\u03c4\u03ae", + "LabelRestartServer": "\u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", + "LabelShowLogWindow": "\u0394\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03c4\u03bf \u03b7\u03bc\u03b5\u03c1\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", + "LabelPrevious": "\u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2", + "LabelFinish": "\u03c4\u03ad\u03bb\u03bf\u03c2", + "LabelNext": "\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf\u03c2 ", + "LabelYoureDone": "\u03a4\u03b5\u03bb\u03b5\u03b9\u03ce\u03c3\u03b1\u03c4\u03b5", + "WelcomeToMediaBrowser": "\u039a\u03b1\u03bb\u03ce\u03c2 \u03ae\u03c1\u03b8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf Media Browser", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u0391\u03c5\u03c4\u03cc\u03c2 \u03bf \u03bf\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b8\u03b1 \u03c3\u03b1\u03c2 \u03ba\u03b1\u03b8\u03bf\u03b4\u03b7\u03b3\u03ae\u03c3\u03b5\u03b9 \u03bc\u03ad\u03c3\u03c9 \u03c4\u03b7\u03c2 \u03b4\u03b9\u03b1\u03b4\u03b9\u03ba\u03b1\u03c3\u03af\u03b1\u03c2 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2. \u0393\u03b9\u03b1 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03c4\u03b5, \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c4\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2.", + "TellUsAboutYourself": "\u03a0\u03b5\u03af\u03c4\u03b5 \u03bc\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b5\u03c3\u03ac\u03c2", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", + "MoreUsersCanBeAddedLater": "\u03a0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03bf\u03c5\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03bd\u03b1 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b5\u03b8\u03bf\u03cd\u03bd \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03c4\u03b1\u03bc\u03c0\u03bb\u03cc", + "UserProfilesIntro": "Media Browser \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03b9 \u03b5\u03bd\u03c3\u03c9\u03bc\u03b1\u03c4\u03c9\u03bc\u03ad\u03bd\u03b7 \u03c5\u03c0\u03bf\u03c3\u03c4\u03ae\u03c1\u03b9\u03be\u03b7 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7, \u03c0\u03bf\u03c5 \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03bf\u03c5\u03bd \u03c3\u03b5 \u03ba\u03ac\u03b8\u03b5 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03b4\u03b9\u03ba\u03ad\u03c2 \u03c4\u03bf\u03c5\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7\u03c2, playstate \u03ba\u03b1\u03b9 \u03b3\u03bf\u03bd\u03b9\u03ba\u03bf\u03cd \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5.\n", + "LabelWindowsService": "Windows \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 ", + "AWindowsServiceHasBeenInstalled": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows \u03ad\u03c7\u03bf\u03c5\u03bd \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af", + "WindowsServiceIntro1": "Media Browser Server \u03b5\u03ba\u03c4\u03b5\u03bb\u03b5\u03af \u03c3\u03c5\u03bd\u03ae\u03b8\u03c9\u03c2 \u03c9\u03c2 \u03ad\u03bd\u03b1 desktop \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03bc\u03b5 \u03ad\u03bd\u03b1 \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf \u03c4\u03bf\u03c5 \u03b4\u03af\u03c3\u03ba\u03bf\u03c5, \u03b1\u03bb\u03bb\u03ac \u03b1\u03bd \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ac\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03c1\u03ad\u03be\u03b5\u03b9 \u03c9\u03c2 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03c5\u03c0\u03cc\u03b2\u03b1\u03b8\u03c1\u03bf, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9 \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03c9\u03bd Windows \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03b1\u03bd\u03c4 '\u03b1\u03c5\u03c4\u03bf\u03cd. ", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bb\u03b9\u03bc\u03ac\u03bd\u03b9 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c7\u03b1\u03c1\u03c4\u03bf\u03b3\u03c1\u03ac\u03c6\u03b7\u03c3\u03b7", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", + "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ad\u03c3\u03c4\u03b5 \u03c4\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c4\u03bf\u03c5 Media", + "LabelFolderType": "\u03a4\u03cd\u03c0\u03bf \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5 ", + "ReferToMediaLibraryWiki": "\u0391\u03bd\u03b1\u03c4\u03c1\u03b5\u03be\u03c4\u03b5 \u03c3\u03c4\u03bf media \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 wiki", + "LabelCountry": "T\u03b7 \u03c7\u03ce\u03c1\u03b1", + "LabelLanguage": "\u03a4\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ce\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03bc\u03b5\u03c4\u03b1", + "LabelSaveLocalMetadata": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03ad\u03c1\u03b3\u03bf \u03c4\u03ad\u03c7\u03bd\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", + "LabelSaveLocalMetadataHelp": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 artwork \u03ba\u03b1\u03b9 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03b5\u03c5\u03b8\u03b5\u03af\u03b1\u03c2 \u03c3\u03b5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03bc\u03ad\u03c3\u03c9\u03bd \u03b8\u03b1 \u03c4\u03bf\u03c5\u03c2 \u03b8\u03ad\u03c3\u03b5\u03b9 \u03c3\u03b5 \u03ad\u03bd\u03b1 \u03c4\u03cc\u03c0\u03bf \u03cc\u03c0\u03bf\u03c5 \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03bd \u03b5\u03cd\u03ba\u03bf\u03bb\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5.", + "LabelDownloadInternetMetadata": "\u039a\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 \u03ad\u03c1\u03b3\u03b1 \u03c4\u03ad\u03c7\u03bd\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1-\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc \u03c4\u03bf internet ", + "LabelDownloadInternetMetadataHelp": "Media Browser \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03ba\u03b1\u03c4\u03b5\u03b2\u03ac\u03c3\u03b5\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c3\u03c7\u03b5\u03c4\u03b9\u03ba\u03ac \u03bc\u03b5 \u03c4\u03b1 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03bb\u03bf\u03cd\u03c3\u03b9\u03b1 \u03c0\u03b1\u03c1\u03bf\u03c5\u03c3\u03b9\u03ac\u03c3\u03b5\u03b9\u03c2.", + "TabPreferences": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ae\u03c3\u03b5\u03b9\u03c2 ", + "TabPassword": "\u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc", + "TabLibraryAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", + "TabAccess": "Access", + "TabImage": "\u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", + "TabProfile": "\u03c0\u03c1\u03bf\u03c6\u03af\u03bb ", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd \u03bb\u03b5\u03af\u03c0\u03b5\u03b9 \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1 \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b5\u03c0\u03bf\u03c7\u03ad\u03c2", + "LabelUnairedMissingEpisodesWithinSeasons": "\u03b4\u03b5\u03af\u03c7\u03bd\u03bf\u03c5\u03bd unaired \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1 \u03b5\u03bd\u03c4\u03cc\u03c2 \u03b5\u03c0\u03bf\u03c7\u03ad\u03c2", + "HeaderVideoPlaybackSettings": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2.", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "\u039f\u03bc\u03b9\u03bb\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7 \u03b3\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7\u03c2", + "LabelSubtitleLanguagePreference": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1 \u03c5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03c9\u03bd \u03c0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7\u03c2", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u03c4\u03b1 \u03c0\u03c1\u03bf\u03c6\u03af\u03bb", + "TabSecurity": "A\u03c3\u03c6\u03ac\u03bb\u03b5\u03b9\u03b1 ", + "ButtonAddUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03c4\u03b5", + "ButtonResetPassword": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03c4\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "LabelNewPassword": "\u039d\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", + "LabelNewPasswordConfirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03b9\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf \u03bd\u03ad\u03bf \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", + "HeaderCreatePassword": "\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 ", + "LabelCurrentPassword": "\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "LabelMaxParentalRating": "\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03b5\u03c0\u03b9\u03c4\u03c1\u03b5\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u03b3\u03bf\u03bd\u03b9\u03ba\u03ae \u03b2\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1:", + "MaxParentalRatingHelp": "\u03a4\u03bf \u03c0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf \u03bc\u03b5 \u03c4\u03b7\u03bd \u03c5\u03c8\u03b7\u03bb\u03cc\u03c4\u03b5\u03c1\u03b7 \u03b2\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03c1\u03c5\u03bc\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7", + "LibraryAccessHelp": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03bc\u03ad\u03c3\u03c9\u03bd \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03bf \u03bc\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7. \u039f\u03b9 \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ad\u03c2 \u03b8\u03b1 \u03ad\u03c7\u03bf\u03c5\u03bd \u03c4\u03b7 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b1 \u03bd\u03b1 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03ac\u03b6\u03b5\u03c3\u03c4\u03b5 \u03cc\u03bb\u03b1 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5\u03c2 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ce\u03bd\u03c4\u03b1\u03c2 \u03c4\u03b1 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "\u0391\u03bd\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 ", + "HeaderUploadNewImage": "\u0391\u03bd\u03b5\u03b2\u03ac\u03c3\u03c4\u03b5 \u03bd\u03ad\u03b1 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only", + "MessageNothingHere": "\u03a4\u03af\u03c0\u03bf\u03c4\u03b1 \u03b5\u03b4\u03ce ", + "MessagePleaseEnsureInternetMetadata": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03c3\u03c4\u03b5 \u03c4\u03b7 \u03bb\u03ae\u03c8\u03b7 \u03bc\u03b5\u03c4\u03b1\u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c3\u03c4\u03bf internet \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03bc\u03ad\u03bd\u03b7.\n", + "TabSuggested": "\u03a0\u03c1\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc\u03bc\u03b5\u03bd\u03b7", + "TabLatest": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c2", + "TabUpcoming": "\u0395\u03c0\u03b5\u03c1\u03c7\u03cc\u03bc\u03b5\u03bd\u03b7", + "TabShows": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", + "TabEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", + "TabGenres": "\u0395\u03af\u03b4\u03b7", + "TabPeople": "\u0386\u03bd\u03b8\u03c1\u03c9\u03c0\u03bf\u03b9 ", + "TabNetworks": "\u0394\u03af\u03ba\u03c4\u03c5\u03b1", + "HeaderUsers": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b5\u03c2 ", + "HeaderFilters": "\u03a6\u03af\u03bb\u03c4\u03c1\u03b1", + "ButtonFilter": "\u03c6\u03af\u03bb\u03c4\u03c1\u03bf", + "OptionFavorite": "\u0391\u03b3\u03b1\u03c0\u03b7\u03bc\u03ad\u03bd\u03b1", + "OptionLikes": "\u03a3\u03c5\u03bc\u03c0\u03b1\u03b8\u03b5\u03af", + "OptionDislikes": "\u0391\u03bd\u03c4\u03b9\u03c0\u03b1\u03b8\u03b5\u03af", + "OptionActors": "\u0397\u03b8\u03bf\u03c0\u03bf\u03b9\u03bf\u03af", + "OptionGuestStars": "\u0393\u03ba\u03b5\u03c3\u03c4 \u03c3\u03c4\u03b1\u03c1", + "OptionDirectors": "\u03b4\u03b9\u03b5\u03c5\u03b8\u03c5\u03bd\u03c4\u03ad\u03c2", + "OptionWriters": "\u03a3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2", + "OptionProducers": "\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03bf\u03af", + "HeaderResume": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03b9 ", + "HeaderNextUp": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", + "NoNextUpItemsMessage": "\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03ba\u03b1\u03bd\u03ad\u03bd\u03b1. \u039e\u03b5\u03ba\u03b9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03ce\u03bd\u03c4\u03b1\u03c2 \u03b5\u03c0\u03b9\u03b4\u03b5\u03af\u03be\u03b5\u03b9\u03c2 \u03c3\u03b1\u03c2!", + "HeaderLatestEpisodes": "\u03c4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03b5\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "\u03c4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "TabAlbums": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "TabArtists": "\u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "TabAlbumArtists": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "TabMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", + "ButtonSort": "\u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03ae\u03c3\u03b5\u03c4\u03b5", + "HeaderSortBy": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7 \u03ba\u03b1\u03c4\u03ac", + "HeaderSortOrder": "\u03a3\u03b5\u03b9\u03c1\u03ac \u03c4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7\u03c2", + "OptionPlayed": "\u03a0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", + "OptionUnplayed": "\u03b4\u03b5\u03bd \u03c0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", + "OptionAscending": "\u03b1\u03cd\u03be\u03bf\u03c5\u03c3\u03b1", + "OptionDescending": "\u03c6\u03b8\u03af\u03bd\u03bf\u03c5\u03c3\u03b1 ", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "\u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03c0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7\u03c2", + "OptionAlbumArtist": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "OptionArtist": " \u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", + "OptionAlbum": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days" } \ 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 afd9a1370..dc98f7351 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json @@ -1,296 +1,4 @@ { - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organise", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favourites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Hide this user from login screens", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "OptionDisableUser": "Disable this user", "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", @@ -917,6 +625,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +868,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1081,309 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organise", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favourites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "TabLog": "Log", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", + "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens" } \ 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 03b0180a5..9002bb492 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json @@ -1,398 +1,4 @@ { - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Hide this user from login screens", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Disable this user", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "HeaderAdvancedControl": "Advanced Control", - "LabelName": "Name:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Allow this user to manage the server", - "HeaderFeatureAccess": "Feature Access", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Missing Tmdb Id", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Select", - "ButtonGroupVersions": "Group Versions", - "ButtonAddToCollection": "Add to Collection", - "PismoMessage": "Utilizing Pismo File Mount through a donated license.", - "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", - "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Please support other free products we utilize:", - "VersionNumber": "Version {0}", - "TabPaths": "Paths", - "TabServer": "Server", - "TabTranscoding": "Transcoding", - "TitleAdvanced": "Advanced", - "LabelAutomaticUpdateLevel": "Automatic update level", - "OptionRelease": "Official Release", - "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", - "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", - "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", - "LabelEnableDebugLogging": "Enable debug logging", - "LabelRunServerAtStartup": "Run server at startup", - "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", - "ButtonSelectDirectory": "Select Directory", - "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", - "LabelCachePath": "Cache path:", - "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", - "LabelImagesByNamePath": "Images by name path:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", - "LabelMetadataPath": "Metadata path:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", - "LabelTranscodingTempPath": "Transcoding temporary path:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", - "TabBasics": "Basics", - "TabTV": "TV", - "TabGames": "Games", - "TabMusic": "Music", - "TabOthers": "Others", - "HeaderExtractChapterImagesFor": "Extract chapter images for:", - "OptionMovies": "Movies", - "OptionEpisodes": "Episodes", - "OptionOtherVideos": "Other Videos", - "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", - "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", - "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", - "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", - "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", - "LabelFanartApiKey": "Personal api key:", - "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", - "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelMetadataDownloadLanguage": "Preferred download language:", - "ButtonAutoScroll": "Auto-scroll", - "LabelImageSavingConvention": "Image saving convention:", - "LabelImageSavingConventionHelp": "Media Browser recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Media Browser\/Kodi\/Plex", - "OptionImageSavingStandard": "Standard - MB2", - "ButtonSignIn": "Sign In", - "TitleSignIn": "Sign In", - "HeaderPleaseSignIn": "Please sign in", - "LabelUser": "User:", - "LabelPassword": "Password:", - "ButtonManualLogin": "Manual Login", - "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", - "TabGuide": "Guide", - "TabChannels": "Channels", - "TabCollections": "Collections", - "HeaderChannels": "Channels", - "TabRecordings": "Recordings", - "TabScheduled": "Scheduled", - "TabSeries": "Series", - "TabFavorites": "Favorites", - "TabMyLibrary": "My Library", - "ButtonCancelRecording": "Cancel Recording", - "HeaderPrePostPadding": "Pre\/Post Padding", - "LabelPrePaddingMinutes": "Pre-padding minutes:", - "OptionPrePaddingRequired": "Pre-padding is required in order to record.", - "LabelPostPaddingMinutes": "Post-padding minutes:", - "OptionPostPaddingRequired": "Post-padding is required in order to record.", - "HeaderWhatsOnTV": "What's On", - "HeaderUpcomingTV": "Upcoming TV", - "TabStatus": "Status", - "TabSettings": "Settings", "ButtonRefreshGuideData": "Refresh Guide Data", "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", @@ -917,6 +523,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +766,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +979,411 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "TabLog": "Log", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", + "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Select", + "ButtonGroupVersions": "Group Versions", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Utilizing Pismo File Mount through a donated license.", + "TangibleSoftwareMessage": "Utilizing Tangible Solutions Java\/C# converters through a donated license.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Please support other free products we utilize:", + "VersionNumber": "Version {0}", + "TabPaths": "Paths", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Advanced", + "LabelAutomaticUpdateLevel": "Automatic update level", + "OptionRelease": "Official Release", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", + "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "LabelEnableDebugLogging": "Enable debug logging", + "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartupHelp": "This will start the tray icon on windows startup. To start the windows service, uncheck this and run the service from the windows control panel. Please note that you cannot run both at the same time, so you will need to exit the tray icon before starting the service.", + "ButtonSelectDirectory": "Select Directory", + "LabelCustomPaths": "Specify custom paths where desired. Leave fields empty to use the defaults.", + "LabelCachePath": "Cache path:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Images by name path:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Metadata path:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Transcoding temporary path:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basics", + "TabTV": "TV", + "TabGames": "Games", + "TabMusic": "Music", + "TabOthers": "Others", + "HeaderExtractChapterImagesFor": "Extract chapter images for:", + "OptionMovies": "Movies", + "OptionEpisodes": "Episodes", + "OptionOtherVideos": "Other Videos", + "TitleMetadata": "Metadata", + "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdatesTmdb": "Enable automatic updates from TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Enable automatic updates from TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "If enabled, new images will be downloaded automatically as they're added to fanart.tv. Existing images will not be replaced.", + "LabelAutomaticUpdatesTmdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheMovieDB.org. Existing images will not be replaced.", + "LabelAutomaticUpdatesTvdbHelp": "If enabled, new images will be downloaded automatically as they're added to TheTVDB.com. Existing images will not be replaced.", + "LabelFanartApiKey": "Personal api key:", + "LabelFanartApiKeyHelp": "Requests to fanart without a personal API key return results that were approved over 7 days ago. With a personal API key that drops to 48 hours and if you are also a fanart VIP member that will further drop to around 10 minutes.", + "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelMetadataDownloadLanguage": "Preferred download language:", + "ButtonAutoScroll": "Auto-scroll", + "LabelImageSavingConvention": "Image saving convention:", + "LabelImageSavingConventionHelp": "Media Browser recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", + "OptionImageSavingCompatible": "Compatible - Media Browser\/Kodi\/Plex", + "OptionImageSavingStandard": "Standard - MB2", + "ButtonSignIn": "Sign In", + "TitleSignIn": "Sign In", + "HeaderPleaseSignIn": "Please sign in", + "LabelUser": "User:", + "LabelPassword": "Password:", + "ButtonManualLogin": "Manual Login", + "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", + "TabGuide": "Guide", + "TabChannels": "Channels", + "TabCollections": "Collections", + "HeaderChannels": "Channels", + "TabRecordings": "Recordings", + "TabScheduled": "Scheduled", + "TabSeries": "Series", + "TabFavorites": "Favorites", + "TabMyLibrary": "My Library", + "ButtonCancelRecording": "Cancel Recording", + "HeaderPrePostPadding": "Pre\/Post Padding", + "LabelPrePaddingMinutes": "Pre-padding minutes:", + "OptionPrePaddingRequired": "Pre-padding is required in order to record.", + "LabelPostPaddingMinutes": "Post-padding minutes:", + "OptionPostPaddingRequired": "Post-padding is required in order to record.", + "HeaderWhatsOnTV": "What's On", + "HeaderUpcomingTV": "Upcoming TV", + "TabStatus": "Status", + "TabSettings": "Settings" } \ 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 3750d3d7d..8482892c1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -1,353 +1,4 @@ { - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la comunidad", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e1ndar", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Navegar biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca", - "LabelRestartServer": "Reiniciar el servidor", - "LabelShowLogWindow": "Mostrar la ventana del log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelYoureDone": "Ha Terminado!", - "WelcomeToMediaBrowser": "\u00a1Bienvenido a Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Este asistente lo guiar\u00e1 por el proceso de instalaci\u00f3n. Para comenzar seleccione su idioma preferido.", - "TellUsAboutYourself": "D\u00edganos acerca de usted", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Su nombre:", - "MoreUsersCanBeAddedLater": "M\u00e1s usuarios pueden agregarse m\u00e1s tarde en el panel de control.", - "UserProfilesIntro": "Media Browser incluye soporte integrado para los perfiles de usuario, lo que permite que cada usuario tenga su propia configuraci\u00f3n de la pantalla, estado de reproducci\u00f3n y control parental.", - "LabelWindowsService": "Servicio de Windows", - "AWindowsServiceHasBeenInstalled": "Un servicio de Windows se ha instalado", - "WindowsServiceIntro1": "Media Browser Server se ejecuta normalmente como una aplicaci\u00f3n de escritorio con un icono de la bandeja, pero si prefiere ejecutarlo como un servicio en segundo plano, se puede iniciar desde el panel de control de servicios de Windows en su lugar.", - "WindowsServiceIntro2": "Si se utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar al mismo tiempo que el icono de la bandeja, por lo que tendr\u00e1 que salir de la bandeja con el fin de ejecutar el servicio. Tambi\u00e9n tendr\u00e1 que ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de auto-actualizaci\u00f3n, por lo que las nuevas versiones requieren la interacci\u00f3n manual.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configuraci\u00f3n de opciones", - "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", - "VideoImageExtractionHelp": "Para los v\u00eddeos que no dispongan de im\u00e1genes y que no podemos encontrar en Internet. Esto agregar\u00e1 un tiempo adicional para la exploraci\u00f3n inicial de bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", - "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para pel\u00edculas", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "OK", - "ButtonCancel": "Cancelar", - "ButtonExit": "Exit", - "ButtonNew": "Nuevo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Configurar biblioteca de medios", - "ButtonAddMediaFolder": "Agregar una carpeta de medios", - "LabelFolderType": "Tipo de carpeta:", - "ReferToMediaLibraryWiki": "Consultar el wiki de la biblioteca de medios", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadata", - "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadata en las carpetas de medios", - "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadata directamente en las carpetas de medios, permitir\u00e1 colocarlas en un lugar donde se pueden editar f\u00e1cilmente.", - "LabelDownloadInternetMetadata": "Descargar imagenes y metadata de internet", - "LabelDownloadInternetMetadataHelp": "Media Browser permite descargar informaci\u00f3n acerca de su media para enriquecer la presentaci\u00f3n.", - "TabPreferences": "Preferencias", - "TabPassword": "Contrase\u00f1a", - "TabLibraryAccess": "Acceso a biblioteca", - "TabAccess": "Access", - "TabImage": "imagen", - "TabProfile": "Perfil", - "TabMetadata": "Metadata", - "TabImages": "Im\u00e1genes", - "TabNotifications": "Notificaciones", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas", - "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", - "HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n", - "LabelAudioLanguagePreference": "Preferencia de idioma de audio", - "LabelSubtitleLanguagePreference": "Preferencia de idioma de subtitulos", - "OptionDefaultSubtitles": "Por defecto", - "OptionOnlyForcedSubtitles": "S\u00f3lo subt\u00edtulos forzados", - "OptionAlwaysPlaySubtitles": "Mostrar siempre subt\u00edtulos", - "OptionNoSubtitles": "Sin subt\u00edtulos", - "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n cuando el audio est\u00e9 en un idioma extranjero.", - "OptionOnlyForcedSubtitlesHelp": "S\u00f3lo se cargar\u00e1n los subt\u00edtulos marcados como forzados.", - "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n independientemente del idioma de audio.", - "OptionNoSubtitlesHelp": "Los subt\u00edtulos no se cargar\u00e1n de forma predeterminada.", - "TabProfiles": "Perfiles", - "TabSecurity": "Seguridad", - "ButtonAddUser": "Agregar Usuario", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Grabar", - "ButtonResetPassword": "Reiniciar Contrase\u00f1a", - "LabelNewPassword": "Nueva Contrase\u00f1a:", - "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", - "HeaderCreatePassword": "Crear Contrase\u00f1a", - "LabelCurrentPassword": "Contrase\u00f1a actual", - "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n permitida", - "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", - "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el gestor de metadata.", - "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podr\u00e1n editar todos los canales mediante el gestor de metadatos.", - "ButtonDeleteImage": "Borrar imagen", - "LabelSelectUsers": "Seleccionar usuarios:", - "ButtonUpload": "Subir", - "HeaderUploadNewImage": "Subir nueva imagen", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG", - "MessageNothingHere": "Nada aqu\u00ed.", - "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadata de internet esta habilitada", - "TabSuggested": "Sugerencia", - "TabLatest": "Novedades", - "TabUpcoming": "Pr\u00f3ximos", - "TabShows": "Programas", - "TabEpisodes": "Episodios", - "TabGenres": "G\u00e9neros", - "TabPeople": "Gente", - "TabNetworks": "redes", - "HeaderUsers": "Usuarios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Me gusta", - "OptionDislikes": "No me gusta", - "OptionActors": "Actores", - "OptionGuestStars": "Estrellas invitadas", - "OptionDirectors": "Directores", - "OptionWriters": "Guionistas", - "OptionProducers": "Productores", - "HeaderResume": "Continuar", - "HeaderNextUp": "Siguiendo", - "NoNextUpItemsMessage": "Nada encontrado. \u00a1Comienza a ver tus programas!", - "HeaderLatestEpisodes": "Ultimos episodios", - "HeaderPersonTypes": "Tipos de personas:", - "TabSongs": "Canciones", - "TabAlbums": "Albums", - "TabArtists": "Artistas", - "TabAlbumArtists": "Album Artistas", - "TabMusicVideos": "Videos Musicales", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar por:", - "HeaderSortOrder": "Ordenado por:", - "OptionPlayed": "Reproducido", - "OptionUnplayed": "No reproducido", - "OptionAscending": "Ascendente", - "OptionDescending": "Descendente", - "OptionRuntime": "Tiempo", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "N\u00famero de reproducc.", - "OptionDatePlayed": "Fecha de reproducci\u00f3n", - "OptionDateAdded": "A\u00f1adido el", - "OptionAlbumArtist": "Album Artista", - "OptionArtist": "Artista", - "OptionAlbum": "Album", - "OptionTrackName": "Nombre de pista", - "OptionCommunityRating": "Valoraci\u00f3n comunidad", - "OptionNameSort": "Nombre", - "OptionFolderSort": "Carpetas", - "OptionBudget": "Presupuesto", - "OptionRevenue": "Recaudaci\u00f3n", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Imagen de fondo", - "OptionTimeline": "L\u00ednea de tiempo", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Valoraci\u00f3n cr\u00edtica", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Se puede continuar", - "ScheduledTasksHelp": "Click en una tarea para ajustar su programaci\u00f3n", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "Mis Plugins", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Actualizaciones autom\u00e1ticas", - "HeaderNowPlaying": "Reproduciendo ahora", - "HeaderLatestAlbums": "\u00dcltimos Albums", - "HeaderLatestSongs": "\u00daltimas canciones", - "HeaderRecentlyPlayed": "Reproducido recientemente", - "HeaderFrequentlyPlayed": "Reproducido frequentemente", - "DevBuildWarning": "Las actualizaciones en desarrollo no est\u00e1n convenientemente probadas. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar del todo.", - "LabelVideoType": "Tipo de video", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Caracter\u00edsticas", - "LabelService": "Servicio:", - "LabelStatus": "Estado:", - "LabelVersion": "Versi\u00f3n:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Subt\u00edtulos", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Banda sonora", - "OptionHasThemeVideo": "Viideotema", - "TabMovies": "Pel\u00edculas", - "TabStudios": "Estudios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "\u00daltimas pel\u00edculas", - "HeaderLatestTrailers": "\u00daltimos trailers", - "OptionHasSpecialFeatures": "Caracter\u00edsticas especiales", - "OptionImdbRating": "Valoraci\u00f3n IMDb", - "OptionParentalRating": "Clasificaci\u00f3n parental", - "OptionPremiereDate": "Fecha de estreno", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avanzado", - "HeaderStatus": "Estado", - "OptionContinuing": "Continuando", - "OptionEnded": "Finalizado", - "HeaderAirDays": "Air Days", - "OptionSunday": "Domingo", - "OptionMonday": "Lunes", - "OptionTuesday": "Martes", - "OptionWednesday": "Mi\u00e9rcoles", - "OptionThursday": "Jueves", - "OptionFriday": "Viernes", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Falta IMDb Id", - "OptionMissingTvdbId": "Falta TheTVDB Id", - "OptionMissingOverview": "Falta argumento", - "OptionFileMetadataYearMismatch": "Archivo\/Metadata a\u00f1os no coinciden", - "TabGeneral": "General", - "TitleSupport": "Soporte", - "TabLog": "Log", - "TabAbout": "Acerca de", - "TabSupporterKey": "Clave de Seguidor", - "TabBecomeSupporter": "Hazte Seguidor", - "MediaBrowserHasCommunity": "Media Browser cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", - "CheckoutKnowledgeBase": "Echa un vistazo a nuestra base de conocimiento para ayudarte a sacar el m\u00e1ximo provecho de Media Browser.", - "SearchKnowledgeBase": "Buscar en la base de conocimiento", - "VisitTheCommunity": "Visitar la comunidad", - "VisitMediaBrowserWebsite": "Visitar la web de Media Browser", - "VisitMediaBrowserWebsiteLong": "Visita la web de Media Browser para estar informado de las \u00faltimas not\u00edcias y mantenerte al d\u00eda con el blog de desarrolladores.", - "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Deshabilitar este usuario", - "OptionDisableUserHelp": "Si est\u00e1 deshabilitado, el servidor no aceptar\u00e1 conexiones de este usuario. Si existen conexiones de este usuario, finalizar\u00e1n inmediatamente.", - "HeaderAdvancedControl": "Control avanzado", - "LabelName": "Nombre:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", - "HeaderFeatureAccess": "Permisos de acceso", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Falta Tmdb Id", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metavalor", - "ButtonSelect": "Seleccionar", - "ButtonGroupVersions": "Versiones de Grupo", - "ButtonAddToCollection": "Add to Collection", - "PismoMessage": "Usando Pismo File Mount a trav\u00e9s de una licencia donada.", - "TangibleSoftwareMessage": "Utilizamos convertidores Java\/C# de Tangible Solutions a trav\u00e9s de una licencia donada.", - "HeaderCredits": "Cr\u00e9ditos", - "PleaseSupportOtherProduces": "Por favor apoye otros productos gratuitos que utilizamos:", - "VersionNumber": "Versi\u00f3n {0}", - "TabPaths": "Ruta", - "TabServer": "Servidor", - "TabTranscoding": "Transcodificaci\u00f3n", - "TitleAdvanced": "Avanzado", - "LabelAutomaticUpdateLevel": "Actualizaci\u00f3n de nivel autom\u00e1tica", - "OptionRelease": "Release Oficial", - "OptionBeta": "Beta", - "OptionDev": "Dev (Unstable)", - "LabelAllowServerAutoRestart": "Permitir al servidor reiniciarse autom\u00e1ticamente para aplicar las actualizaciones", - "LabelAllowServerAutoRestartHelp": "El servidor s\u00f3lo se reiniciar\u00e1 durante periodos de reposo, cuando no hayan usuarios activos.", - "LabelEnableDebugLogging": "Habilitar entrada de debug", - "LabelRunServerAtStartup": "Arrancar servidor al iniciar", - "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 como aplicaci\u00f3n en el inicio. Para iniciar en modo servicio de windows, desmarque esto e inicie el servicio desde el panel de control de windows. Tenga en cuenta que no es posible inciar de las dos formas a la vez, usted debe salir de la aplicaci\u00f3n para iniciar el servicio.", - "ButtonSelectDirectory": "Seleccionar directorio", - "LabelCustomPaths": "Especificar las rutas personalizadas que desee. D\u00e9jelo en blanco para usar las rutas por defecto.", - "LabelCachePath": "Ruta del cach\u00e9:", - "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", - "LabelImagesByNamePath": "Ruta de im\u00e1genes:", - "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", - "LabelMetadataPath": "Ruta de Metadata:", - "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", - "LabelTranscodingTempPath": "Ruta temporal de transcodificaci\u00f3n:", - "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", - "TabBasics": "Basicos", - "TabTV": "TV", - "TabGames": "Juegos", - "TabMusic": "M\u00fasica", - "TabOthers": "Otros", - "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:", "OptionMovies": "Pel\u00edculas", "OptionEpisodes": "Episodios", "OptionOtherVideos": "Otros v\u00eddeos", @@ -917,6 +568,7 @@ "LabelChannelDownloadAgeHelp": "Todo contenido descargado anterior se borrar\u00e1. Continuar\u00e1 estando disponible v\u00eda streaming de internet.", "ChannelSettingsFormHelp": "Instale canales como Trailers y Vimeo desde el cat\u00e1logo de plugins.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Pel\u00edculas", "ViewTypeTvShows": "TV", "ViewTypeGames": "Juegos", @@ -1159,6 +811,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1024,366 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Salir", + "LabelVisitCommunity": "Visitar la comunidad", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e1ndar", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Navegar biblioteca", + "LabelConfigureMediaBrowser": "Configurar Media Browser", + "LabelOpenLibraryViewer": "Abrir el visor de la biblioteca", + "LabelRestartServer": "Reiniciar el servidor", + "LabelShowLogWindow": "Mostrar la ventana del log", + "LabelPrevious": "Anterior", + "LabelFinish": "Terminar", + "LabelNext": "Siguiente", + "LabelYoureDone": "Ha Terminado!", + "WelcomeToMediaBrowser": "\u00a1Bienvenido a Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Este asistente lo guiar\u00e1 por el proceso de instalaci\u00f3n. Para comenzar seleccione su idioma preferido.", + "TellUsAboutYourself": "D\u00edganos acerca de usted", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Su nombre:", + "MoreUsersCanBeAddedLater": "M\u00e1s usuarios pueden agregarse m\u00e1s tarde en el panel de control.", + "UserProfilesIntro": "Media Browser incluye soporte integrado para los perfiles de usuario, lo que permite que cada usuario tenga su propia configuraci\u00f3n de la pantalla, estado de reproducci\u00f3n y control parental.", + "LabelWindowsService": "Servicio de Windows", + "AWindowsServiceHasBeenInstalled": "Un servicio de Windows se ha instalado", + "WindowsServiceIntro1": "Media Browser Server se ejecuta normalmente como una aplicaci\u00f3n de escritorio con un icono de la bandeja, pero si prefiere ejecutarlo como un servicio en segundo plano, se puede iniciar desde el panel de control de servicios de Windows en su lugar.", + "WindowsServiceIntro2": "Si se utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar al mismo tiempo que el icono de la bandeja, por lo que tendr\u00e1 que salir de la bandeja con el fin de ejecutar el servicio. Tambi\u00e9n tendr\u00e1 que ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de auto-actualizaci\u00f3n, por lo que las nuevas versiones requieren la interacci\u00f3n manual.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configuraci\u00f3n de opciones", + "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", + "VideoImageExtractionHelp": "Para los v\u00eddeos que no dispongan de im\u00e1genes y que no podemos encontrar en Internet. Esto agregar\u00e1 un tiempo adicional para la exploraci\u00f3n inicial de bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", + "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para pel\u00edculas", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Habilitar asignaci\u00f3n de puertos autom\u00e1tico", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n del router para acceso externo de forma f\u00e1cil y autom\u00e1tica. Esto puede no funcionar en algunos modelos de routers.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "OK", + "ButtonCancel": "Cancelar", + "ButtonExit": "Exit", + "ButtonNew": "Nuevo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Configurar biblioteca de medios", + "ButtonAddMediaFolder": "Agregar una carpeta de medios", + "LabelFolderType": "Tipo de carpeta:", + "ReferToMediaLibraryWiki": "Consultar el wiki de la biblioteca de medios", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Idioma preferido para metadata", + "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadata en las carpetas de medios", + "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadata directamente en las carpetas de medios, permitir\u00e1 colocarlas en un lugar donde se pueden editar f\u00e1cilmente.", + "LabelDownloadInternetMetadata": "Descargar imagenes y metadata de internet", + "LabelDownloadInternetMetadataHelp": "Media Browser permite descargar informaci\u00f3n acerca de su media para enriquecer la presentaci\u00f3n.", + "TabPreferences": "Preferencias", + "TabPassword": "Contrase\u00f1a", + "TabLibraryAccess": "Acceso a biblioteca", + "TabAccess": "Access", + "TabImage": "imagen", + "TabProfile": "Perfil", + "TabMetadata": "Metadata", + "TabImages": "Im\u00e1genes", + "TabNotifications": "Notificaciones", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas", + "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", + "HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n", + "LabelAudioLanguagePreference": "Preferencia de idioma de audio", + "LabelSubtitleLanguagePreference": "Preferencia de idioma de subtitulos", + "OptionDefaultSubtitles": "Por defecto", + "OptionOnlyForcedSubtitles": "S\u00f3lo subt\u00edtulos forzados", + "OptionAlwaysPlaySubtitles": "Mostrar siempre subt\u00edtulos", + "OptionNoSubtitles": "Sin subt\u00edtulos", + "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n cuando el audio est\u00e9 en un idioma extranjero.", + "OptionOnlyForcedSubtitlesHelp": "S\u00f3lo se cargar\u00e1n los subt\u00edtulos marcados como forzados.", + "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que concuerden con la preferencia de idioma se cargar\u00e1n independientemente del idioma de audio.", + "OptionNoSubtitlesHelp": "Los subt\u00edtulos no se cargar\u00e1n de forma predeterminada.", + "TabProfiles": "Perfiles", + "TabSecurity": "Seguridad", + "ButtonAddUser": "Agregar Usuario", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Grabar", + "ButtonResetPassword": "Reiniciar Contrase\u00f1a", + "LabelNewPassword": "Nueva Contrase\u00f1a:", + "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", + "HeaderCreatePassword": "Crear Contrase\u00f1a", + "LabelCurrentPassword": "Contrase\u00f1a actual", + "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n permitida", + "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", + "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el gestor de metadata.", + "ChannelAccessHelp": "Seleccione los canales para compartir con este usuario. Los administradores podr\u00e1n editar todos los canales mediante el gestor de metadatos.", + "ButtonDeleteImage": "Borrar imagen", + "LabelSelectUsers": "Seleccionar usuarios:", + "ButtonUpload": "Subir", + "HeaderUploadNewImage": "Subir nueva imagen", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG", + "MessageNothingHere": "Nada aqu\u00ed.", + "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadata de internet esta habilitada", + "TabSuggested": "Sugerencia", + "TabLatest": "Novedades", + "TabUpcoming": "Pr\u00f3ximos", + "TabShows": "Programas", + "TabEpisodes": "Episodios", + "TabGenres": "G\u00e9neros", + "TabPeople": "Gente", + "TabNetworks": "redes", + "HeaderUsers": "Usuarios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Me gusta", + "OptionDislikes": "No me gusta", + "OptionActors": "Actores", + "OptionGuestStars": "Estrellas invitadas", + "OptionDirectors": "Directores", + "OptionWriters": "Guionistas", + "OptionProducers": "Productores", + "HeaderResume": "Continuar", + "HeaderNextUp": "Siguiendo", + "NoNextUpItemsMessage": "Nada encontrado. \u00a1Comienza a ver tus programas!", + "HeaderLatestEpisodes": "Ultimos episodios", + "HeaderPersonTypes": "Tipos de personas:", + "TabSongs": "Canciones", + "TabAlbums": "Albums", + "TabArtists": "Artistas", + "TabAlbumArtists": "Album Artistas", + "TabMusicVideos": "Videos Musicales", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar por:", + "HeaderSortOrder": "Ordenado por:", + "OptionPlayed": "Reproducido", + "OptionUnplayed": "No reproducido", + "OptionAscending": "Ascendente", + "OptionDescending": "Descendente", + "OptionRuntime": "Tiempo", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "N\u00famero de reproducc.", + "OptionDatePlayed": "Fecha de reproducci\u00f3n", + "OptionDateAdded": "A\u00f1adido el", + "OptionAlbumArtist": "Album Artista", + "OptionArtist": "Artista", + "OptionAlbum": "Album", + "OptionTrackName": "Nombre de pista", + "OptionCommunityRating": "Valoraci\u00f3n comunidad", + "OptionNameSort": "Nombre", + "OptionFolderSort": "Carpetas", + "OptionBudget": "Presupuesto", + "OptionRevenue": "Recaudaci\u00f3n", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Imagen de fondo", + "OptionTimeline": "L\u00ednea de tiempo", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Valoraci\u00f3n cr\u00edtica", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Se puede continuar", + "ScheduledTasksHelp": "Click en una tarea para ajustar su programaci\u00f3n", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "Mis Plugins", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Actualizaciones autom\u00e1ticas", + "HeaderNowPlaying": "Reproduciendo ahora", + "HeaderLatestAlbums": "\u00dcltimos Albums", + "HeaderLatestSongs": "\u00daltimas canciones", + "HeaderRecentlyPlayed": "Reproducido recientemente", + "HeaderFrequentlyPlayed": "Reproducido frequentemente", + "DevBuildWarning": "Las actualizaciones en desarrollo no est\u00e1n convenientemente probadas. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar del todo.", + "LabelVideoType": "Tipo de video", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Caracter\u00edsticas", + "LabelService": "Servicio:", + "LabelStatus": "Estado:", + "LabelVersion": "Versi\u00f3n:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Subt\u00edtulos", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Banda sonora", + "OptionHasThemeVideo": "Viideotema", + "TabMovies": "Pel\u00edculas", + "TabStudios": "Estudios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "\u00daltimas pel\u00edculas", + "HeaderLatestTrailers": "\u00daltimos trailers", + "OptionHasSpecialFeatures": "Caracter\u00edsticas especiales", + "OptionImdbRating": "Valoraci\u00f3n IMDb", + "OptionParentalRating": "Clasificaci\u00f3n parental", + "OptionPremiereDate": "Fecha de estreno", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avanzado", + "HeaderStatus": "Estado", + "OptionContinuing": "Continuando", + "OptionEnded": "Finalizado", + "HeaderAirDays": "Air Days", + "OptionSunday": "Domingo", + "OptionMonday": "Lunes", + "OptionTuesday": "Martes", + "OptionWednesday": "Mi\u00e9rcoles", + "OptionThursday": "Jueves", + "OptionFriday": "Viernes", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Falta IMDb Id", + "OptionMissingTvdbId": "Falta TheTVDB Id", + "OptionMissingOverview": "Falta argumento", + "OptionFileMetadataYearMismatch": "Archivo\/Metadata a\u00f1os no coinciden", + "TabGeneral": "General", + "TitleSupport": "Soporte", + "TabLog": "Log", + "TabAbout": "Acerca de", + "TabSupporterKey": "Clave de Seguidor", + "TabBecomeSupporter": "Hazte Seguidor", + "MediaBrowserHasCommunity": "Media Browser cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", + "CheckoutKnowledgeBase": "Echa un vistazo a nuestra base de conocimiento para ayudarte a sacar el m\u00e1ximo provecho de Media Browser.", + "SearchKnowledgeBase": "Buscar en la base de conocimiento", + "VisitTheCommunity": "Visitar la comunidad", + "VisitMediaBrowserWebsite": "Visitar la web de Media Browser", + "VisitMediaBrowserWebsiteLong": "Visita la web de Media Browser para estar informado de las \u00faltimas not\u00edcias y mantenerte al d\u00eda con el blog de desarrolladores.", + "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Deshabilitar este usuario", + "OptionDisableUserHelp": "Si est\u00e1 deshabilitado, el servidor no aceptar\u00e1 conexiones de este usuario. Si existen conexiones de este usuario, finalizar\u00e1n inmediatamente.", + "HeaderAdvancedControl": "Control avanzado", + "LabelName": "Nombre:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Permite a este usuario administrar el servidor", + "HeaderFeatureAccess": "Permisos de acceso", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Falta Tmdb Id", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metavalor", + "ButtonSelect": "Seleccionar", + "ButtonGroupVersions": "Versiones de Grupo", + "ButtonAddToCollection": "Add to Collection", + "PismoMessage": "Usando Pismo File Mount a trav\u00e9s de una licencia donada.", + "TangibleSoftwareMessage": "Utilizamos convertidores Java\/C# de Tangible Solutions a trav\u00e9s de una licencia donada.", + "HeaderCredits": "Cr\u00e9ditos", + "PleaseSupportOtherProduces": "Por favor apoye otros productos gratuitos que utilizamos:", + "VersionNumber": "Versi\u00f3n {0}", + "TabPaths": "Ruta", + "TabServer": "Servidor", + "TabTranscoding": "Transcodificaci\u00f3n", + "TitleAdvanced": "Avanzado", + "LabelAutomaticUpdateLevel": "Actualizaci\u00f3n de nivel autom\u00e1tica", + "OptionRelease": "Release Oficial", + "OptionBeta": "Beta", + "OptionDev": "Dev (Unstable)", + "LabelAllowServerAutoRestart": "Permitir al servidor reiniciarse autom\u00e1ticamente para aplicar las actualizaciones", + "LabelAllowServerAutoRestartHelp": "El servidor s\u00f3lo se reiniciar\u00e1 durante periodos de reposo, cuando no hayan usuarios activos.", + "LabelEnableDebugLogging": "Habilitar entrada de debug", + "LabelRunServerAtStartup": "Arrancar servidor al iniciar", + "LabelRunServerAtStartupHelp": "Esto iniciar\u00e1 como aplicaci\u00f3n en el inicio. Para iniciar en modo servicio de windows, desmarque esto e inicie el servicio desde el panel de control de windows. Tenga en cuenta que no es posible inciar de las dos formas a la vez, usted debe salir de la aplicaci\u00f3n para iniciar el servicio.", + "ButtonSelectDirectory": "Seleccionar directorio", + "LabelCustomPaths": "Especificar las rutas personalizadas que desee. D\u00e9jelo en blanco para usar las rutas por defecto.", + "LabelCachePath": "Ruta del cach\u00e9:", + "LabelCachePathHelp": "Specify a custom location for server cache files, such as images.", + "LabelImagesByNamePath": "Ruta de im\u00e1genes:", + "LabelImagesByNamePathHelp": "Specify a custom location for downloaded actor, genre and studio images.", + "LabelMetadataPath": "Ruta de Metadata:", + "LabelMetadataPathHelp": "Specify a custom location for downloaded artwork and metadata, if not saving within media folders.", + "LabelTranscodingTempPath": "Ruta temporal de transcodificaci\u00f3n:", + "LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", + "TabBasics": "Basicos", + "TabTV": "TV", + "TabGames": "Juegos", + "TabMusic": "M\u00fasica", + "TabOthers": "Otros", + "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:" } \ 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 ecdd8dac0..f28b151fa 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json @@ -1,371 +1,4 @@ { - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la Comunidad", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Est\u00e1ndar", - "LabelApiDocumentation": "Documentaci\u00f3n del API", - "LabelDeveloperResources": "Recursos para Desarrolladores", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir el Visor de la Biblioteca", - "LabelRestartServer": "Reiniciar el Servidor", - "LabelShowLogWindow": "Mostrar Ventana de Bit\u00e1cora", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Siguiente", - "LabelYoureDone": "Ha Terminado!", - "WelcomeToMediaBrowser": "\u00a1Bienvenido a Media Broswer!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Este asistente le guiar\u00e1 a trav\u00e9s del proceso de instalaci\u00f3n. Para comenzar, por favor seleccione su lenguaje preferido.", - "TellUsAboutYourself": "D\u00edganos sobre usted", - "ButtonQuickStartGuide": "Gu\u00eda de inicio r\u00e1pido", - "LabelYourFirstName": "Su nombre:", - "MoreUsersCanBeAddedLater": "Se pueden agregar m\u00e1s usuarios posteriormente en el Panel de Control.", - "UserProfilesIntro": "Media Browser incluye soporte integrado para perfiles de usuario, permiti\u00e9ndo a cada usuario tener su propia configuraci\u00f3n de pantalla, estado de reproducci\u00f3n y controles parentales.", - "LabelWindowsService": "Servicio de Windows", - "AWindowsServiceHasBeenInstalled": "Se ha instalado un Servicio de Windows.", - "WindowsServiceIntro1": "Media Browser Server se ejecuta normalmente como una aplicaci\u00f3n de escritorio con un icono en el \u00e1rea de notificaci\u00f3n, pero si prefiere ejecutarlo como un servicio de segundo plano, puede ser iniciado desde el panel de control de servicios de windows.", - "WindowsServiceIntro2": "Si utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar simult\u00e1neamiente con el icono en el \u00e1rea de notificaci\u00f3n, por lo que tendr\u00e1 que finalizar desde el icono para poder ejecutar el servicio. Adicionalmente, el servicio deber\u00e1 ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de actualizarse a s\u00ed mismo, por lo que las nuevas versiones requerir\u00e1n de interacci\u00f3n manual.", - "WizardCompleted": "Esto es todo lo que necesitamos por ahora. Media Browser ha comenzado a recolectar informaci\u00f3n sobre su biblioteca de medios. Pruebe algunas de nuestras apps, despu\u00e9s haga clic en Terminar<\/b> para desplegar el Panel de Control del Servidor<\/b>.", - "LabelConfigureSettings": "Configuraci\u00f3n de opciones", - "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", - "VideoImageExtractionHelp": "Para videos que no cuenten con im\u00e1genes, y para los que no podemos encontrar im\u00e1genes en Internet. Esto incrementar\u00e1 un poco el tiempo de la exploraci\u00f3n inicial de las bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", - "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para Pel\u00edculas", - "LabelChapterImageExtractionForMoviesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", - "LabelEnableAutomaticPortMapping": "Habilitar mapeo autom\u00e1tico de puertos", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n de ruteador de manera autom\u00e1tica, para acceso remoto de manera f\u00e1cil. Eso puede no funcionar con algunos modelos de ruteadores.", - "HeaderTermsOfService": "T\u00e9rminos del Servicio de Media Browser", - "MessagePleaseAcceptTermsOfService": "Por favor acepte los t\u00e9rminos del servicio y la pol\u00edtica de privacidad antes de continuar.", - "OptionIAcceptTermsOfService": "Acepto los t\u00e9rminos del servicio.", - "ButtonPrivacyPolicy": "Pol\u00edtica de privacidad", - "ButtonTermsOfService": "T\u00e9rminos del Servicio", - "HeaderDeveloperOptions": "Opciones de Desarrollador", - "OptionEnableWebClientResponseCache": "Habilitar la cache de respuestas del cliente web", - "OptionDisableForDevelopmentHelp": "Configuralos como sean necesarios para prop\u00f3sitos de desarrollo en el cliente web.", - "OptionEnableWebClientResourceMinification": "Habilitar minificacion de recursos del cliente web", - "LabelDashboardSourcePath": "Ruta de origen del cliente web:", - "LabelDashboardSourcePathHelp": "Si esta ejecutando el servidor desde la fuente, especifique la ruta de acceso a la carpeta dashboard-ui. Todos los archivos de cliente web ser\u00e1n atendidos desde esta ruta.", - "ButtonConvertMedia": "Convertir Medios", - "ButtonOrganize": "Organizar", - "LabelPinCode": "C\u00f3digo pin:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "ButtonExit": "Salir", - "ButtonNew": "Nuevo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Rutas", - "CategorySync": "Sinc.", - "HeaderEasyPinCode": "C\u00f3digo Pin Sencillo", - "HeaderGrownupsOnly": "\u00a1Solo Adultos!", - "DividerOr": "--o--", - "HeaderInstalledServices": "Servicios Instalados", - "HeaderAvailableServices": "Servicios Disponibles", - "MessageNoServicesInstalled": "No hay servicios instalados en este momento.", - "HeaderToAccessPleaseEnterEasyPinCode": "Para acceder, por favor introduzca su c\u00f3digo pin sencillo", - "KidsModeAdultInstruction": "Haga clic en el icono de candado en la esquina inferior derecha para configurar o abandonar el modo para ni\u00f1os.", - "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", - "HeaderAdultsReadHere": "\u00a1Adultos Leer Esto!", - "RegisterWithPayPal": "Registrar con PayPal", - "HeaderSyncRequiresSupporterMembership": "Sinc requiere de una Membres\u00eda de Aficionado", - "HeaderEnjoyDayTrial": "Disfrute de una Prueba Gratuita por 14 D\u00edas", - "LabelSyncTempPath": "Trayectoria de archivos temporales:", - "LabelSyncTempPathHelp": "Especifique una carpeta de trabajo personalizada para sinc. Los medios convertidos creados durante el proceso de sinc ser\u00e1n almacenados en este lugar.", - "LabelCustomCertificatePath": "Trayectoria del certificado personalizado:", - "LabelCustomCertificatePathHelp": "Proporcione su archivo de certificado .pfx personalizado. Si se omite, el servidor crear\u00e1 un certificado auto firmado.", - "TitleNotifications": "Notificaciones", - "ButtonDonateWithPayPal": "Donar con PayPal", - "OptionDetectArchiveFilesAsMedia": "Detectar archivos comprimidos como medios", - "OptionDetectArchiveFilesAsMediaHelp": "Al habilitarlo, los archivos con extensiones .rar y .zip ser\u00e1n detectados como archivos de medios.", - "LabelEnterConnectUserName": "Nombre de usuario o correo:", - "LabelEnterConnectUserNameHelp": "Este es el nombre de usuario de su cuenta en l\u00ednea de Media Browser o su contrase\u00f1a.", - "LabelEnableEnhancedMovies": "Habilitar visualizaci\u00f3n mejorada de pel\u00edculas", - "LabelEnableEnhancedMoviesHelp": "Cuando se activa, la pel\u00edculas ser\u00e1n mostradas como carpetas para incluir trailers, extras, elenco y equipo, y otros contenidos relacionados.", - "HeaderSyncJobInfo": "Trabajo de Sinc", - "FolderTypeMixed": "Contenido mezclado", - "FolderTypeMovies": "Pel\u00edculas", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "Videos para adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Videos musicales", - "FolderTypeHomeVideos": "Videos caseros", - "FolderTypeGames": "Juegos", - "FolderTypeBooks": "Libros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Heredar", - "LabelContentType": "Tipo de Contenido:", - "TitleScheduledTasks": "Tareas Programadas", - "HeaderSetupLibrary": "Configurar su biblioteca de medios", - "ButtonAddMediaFolder": "Agregar carpeta de medios", - "LabelFolderType": "Tipo de carpeta:", - "ReferToMediaLibraryWiki": "Consultar la wiki de la biblioteca de medios.", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "L\u00edmite de Tiempo (horas):", - "ButtonJoinTheDevelopmentTeam": "Unirse al Equipo de Desarrollo.", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadatos:", - "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadatos en las carpetas de medios", - "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadatos directamente en las carpetas de medios los colocar\u00e1 en un lugar donde se pueden editar f\u00e1cilmente.", - "LabelDownloadInternetMetadata": "Descargar im\u00e1genes y metadatos de internet", - "LabelDownloadInternetMetadataHelp": "Media Browser permite descargar informaci\u00f3n de sus medios para enriquecer la presentaci\u00f3n.", - "TabPreferences": "Preferencias", - "TabPassword": "Contrase\u00f1a", - "TabLibraryAccess": "Acceso a biblioteca", - "TabAccess": "Acceso", - "TabImage": "Imagen", - "TabProfile": "Perf\u00edl", - "TabMetadata": "Metadatos", - "TabImages": "Im\u00e1genes", - "TabNotifications": "Notificaciones", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Acceso a Dispositivos", - "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", - "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", - "OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas", - "DeviceAccessHelp": "Esto solo aplica a dispositivos que pueden ser identificados de manera individual y no evitar\u00e1 acceso al navegador. Al filtrar el acceso de usuarios a dispositivos se impedir\u00e1 que utilicen nuevos dispositivos hasta que hayan sido aprobados aqu\u00ed.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en las temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas", - "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", - "HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n", - "LabelAudioLanguagePreference": "Preferencia de idioma de audio:", - "LabelSubtitleLanguagePreference": "Preferencia de idioma de subt\u00edtulos:", - "OptionDefaultSubtitles": "Por Defecto", - "OptionOnlyForcedSubtitles": "\u00danicamente subt\u00edtulos forzados", - "OptionAlwaysPlaySubtitles": "Siempre mostrar subt\u00edtulos", - "OptionNoSubtitles": "Sin Subtitulos", - "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados cuando el audio se encuentre en un lenguaje extranjero.", - "OptionOnlyForcedSubtitlesHelp": "Se cargar\u00e1n \u00fanicamente subt\u00edtulos marcados como forzados.", - "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados independientemente del lenguaje del audio.", - "OptionNoSubtitlesHelp": "Los subt\u00edtulos no ser\u00e1n cargados por defecto.", - "TabProfiles": "Perfiles", - "TabSecurity": "Seguridad", - "ButtonAddUser": "Agregar Usuario", - "ButtonAddLocalUser": "Agregar Usuario Local", - "ButtonInviteUser": "Invitar Usuario", - "ButtonSave": "Guardar", - "ButtonResetPassword": "Restablecer Contrase\u00f1a", - "LabelNewPassword": "Nueva contrase\u00f1a:", - "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", - "HeaderCreatePassword": "Crear Contrase\u00f1a", - "LabelCurrentPassword": "Contrase\u00f1a actual:", - "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n parental permitida:", - "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", - "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el administrador de metadatos.", - "ChannelAccessHelp": "Seleccione los canales a compartir con este usuario. Los administradores podr\u00e1n editar todos los canales empleando el administrador de metadatos.", - "ButtonDeleteImage": "Eliminar Imagen", - "LabelSelectUsers": "Seleccionar Usuarios:", - "ButtonUpload": "Subir", - "HeaderUploadNewImage": "Subir Nueva Imagen", - "LabelDropImageHere": "Depositar imagen aqu\u00ed", - "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG.", - "MessageNothingHere": "Nada aqu\u00ed.", - "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadatos de internet esta habilitada.", - "TabSuggested": "Sugerencias", - "TabLatest": "Recientes", - "TabUpcoming": "Por Estrenar", - "TabShows": "Programas", - "TabEpisodes": "Episodios", - "TabGenres": "G\u00e9neros", - "TabPeople": "Personas", - "TabNetworks": "Cadenas", - "HeaderUsers": "Usuarios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Me gusta", - "OptionDislikes": "No me gusta", - "OptionActors": "Actores", - "OptionGuestStars": "Estrellas Invitadas", - "OptionDirectors": "Directores", - "OptionWriters": "Guionistas", - "OptionProducers": "Productores", - "HeaderResume": "Continuar", - "HeaderNextUp": "A Continuaci\u00f3n", - "NoNextUpItemsMessage": "No se encontr\u00f3 nada. \u00a1Comienza a ver tus programas!", - "HeaderLatestEpisodes": "Episodios Recientes", - "HeaderPersonTypes": "Tipos de Personas:", - "TabSongs": "Canciones", - "TabAlbums": "\u00c1lbums", - "TabArtists": "Artistas", - "TabAlbumArtists": "Artistas del \u00c1lbum", - "TabMusicVideos": "Videos Musicales", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar Por:", - "HeaderSortOrder": "Ordenado Por:", - "OptionPlayed": "Reproducido", - "OptionUnplayed": "No reproducido", - "OptionAscending": "Ascendente", - "OptionDescending": "Descendente", - "OptionRuntime": "Duraci\u00f3n", - "OptionReleaseDate": "Fecha de Liberaci\u00f3n", - "OptionPlayCount": "N\u00famero de Reproducc.", - "OptionDatePlayed": "Fecha de Reproducci\u00f3n", - "OptionDateAdded": "Fecha de Adici\u00f3n", - "OptionAlbumArtist": "Artista del \u00c1lbum", - "OptionArtist": "Artista", - "OptionAlbum": "\u00c1lbum", - "OptionTrackName": "Nombre de la Pista", - "OptionCommunityRating": "Calificaci\u00f3n de la Comunidad", - "OptionNameSort": "Nombre", - "OptionFolderSort": "Carpetas", - "OptionBudget": "Presupuesto", - "OptionRevenue": "Recaudaci\u00f3n", - "OptionPoster": "P\u00f3ster", - "OptionPosterCard": "Tarjeta de P\u00f3ster", - "OptionBackdrop": "Imagen de Fondo", - "OptionTimeline": "L\u00ednea de Tiempo", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Tarjeta de Miniatura", - "OptionBanner": "Cart\u00e9l", - "OptionCriticRating": "Calificaci\u00f3n de la Cr\u00edtica", - "OptionVideoBitrate": "Tasa de bits de Video", - "OptionResumable": "Reanudable", - "ScheduledTasksHelp": "Haga clic en una tarea para ajustar su programaci\u00f3n.", - "ScheduledTasksTitle": "Tareas Programadas", - "TabMyPlugins": "Mis Complementos", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Complementos", - "HeaderAutomaticUpdates": "Actualizaciones Autom\u00e1ticas", - "HeaderNowPlaying": "Reproduciendo Ahora", - "HeaderLatestAlbums": "\u00c1lbums Recientes", - "HeaderLatestSongs": "Canciones Recientes", - "HeaderRecentlyPlayed": "Reproducido Recientemente", - "HeaderFrequentlyPlayed": "Reproducido Frecuentemente", - "DevBuildWarning": "Las compilaciones de Desarrollo son la punta de lanza. Se publican frecuentemente, estas compilaciones no se han probado. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar.", - "LabelVideoType": "Tipo de Video:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "Caracter\u00edsticas:", - "LabelService": "Servicio:", - "LabelStatus": "Estado:", - "LabelVersion": "Versi\u00f3n:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Subt\u00edtulos", - "OptionHasTrailer": "Avance", - "OptionHasThemeSong": "Canci\u00f3n del Tema", - "OptionHasThemeVideo": "Video del Tema", - "TabMovies": "Pel\u00edculas", - "TabStudios": "Estudios", - "TabTrailers": "Avances", - "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar m\u00faltiples empleando:", - "HeaderLatestMovies": "Pel\u00edculas Recientes", - "HeaderLatestTrailers": "Avances Recientes", - "OptionHasSpecialFeatures": "Caracter\u00edsticas Especiales", - "OptionImdbRating": "Calificaci\u00f3n de IMDb", - "OptionParentalRating": "Clasificaci\u00f3n Parental", - "OptionPremiereDate": "Fecha de Estreno", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avanzado", - "HeaderStatus": "Estado", - "OptionContinuing": "Continuando", - "OptionEnded": "Finalizado", - "HeaderAirDays": "D\u00edas de Emisi\u00f3n", - "OptionSunday": "Domingo", - "OptionMonday": "Lunes", - "OptionTuesday": "Martes", - "OptionWednesday": "Mi\u00e9rcoles", - "OptionThursday": "Jueves", - "OptionFriday": "Viernes", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Administraci\u00f3n", - "LabelManagement": "Administraci\u00f3n:", - "OptionMissingImdbId": "Falta Id de IMDb", - "OptionMissingTvdbId": "Falta Id de TheTVDB", - "OptionMissingOverview": "Falta Sinopsis", - "OptionFileMetadataYearMismatch": "No coincide el A\u00f1o del Archivo con los Metadatos", - "TabGeneral": "General", - "TitleSupport": "Soporte", - "TabLog": "Bit\u00e1cora", - "TabAbout": "Acerca de", - "TabSupporterKey": "Clave de Aficionado", - "TabBecomeSupporter": "Convertirse en Aficionado", - "MediaBrowserHasCommunity": "Media Browser cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", - "CheckoutKnowledgeBase": "Eche un vistazo a nuestra base de conocimiento para ayudarte a sacar el m\u00e1ximo provecho de Media Browser.", - "SearchKnowledgeBase": "Buscar en la Base de Conocimiento", - "VisitTheCommunity": "Visitar la Comunidad", - "VisitMediaBrowserWebsite": "Visitar el Sitio Web de Media Browser", - "VisitMediaBrowserWebsiteLong": "Visitar el Sitio Web de Media Browser para estar conocer las \u00faltimas not\u00edcias y mantenerse al d\u00eda con el blog de los desarrolladores.", - "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", - "OptionHideUserFromLoginHelp": "\u00datil para cuentas privadas o de administrador ocultas. El usuario tendr\u00e1 que iniciar sesi\u00f3n manualmente ingresando su nombre de usuario y contrase\u00f1a.", - "OptionDisableUser": "Desactivar este usuario", - "OptionDisableUserHelp": "Si est\u00e1 desactivado, el servidor no aceptar\u00e1 conexiones de este usuario. Las conexiones existentes ser\u00e1n finalizadas abruptamente.", - "HeaderAdvancedControl": "Control Avanzado", - "LabelName": "Nombre:", - "ButtonHelp": "Ayuda", - "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", - "HeaderFeatureAccess": "Permisos de acceso", - "OptionAllowMediaPlayback": "Permitir reproducci\u00f3n de medios", - "OptionAllowBrowsingLiveTv": "Permitir acceso a TV en Vivo", - "OptionAllowDeleteLibraryContent": "Permitir eliminaci\u00f3n de medios", - "OptionAllowManageLiveTv": "Permitir gesti\u00f3n de grabaci\u00f3n de TV en Vivo", - "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", - "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", - "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos dnla son considerados como compartidos hasta que alg\u00fan usuario comienza a controlarlo.", - "HeaderRemoteControl": "Control Remoto", - "OptionMissingTmdbId": "Falta Id de Tmdb", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Seleccionar", - "ButtonGroupVersions": "Agrupar Versiones", - "ButtonAddToCollection": "Agregar a Colecci\u00f3n", - "PismoMessage": "Utilizando Pismo File Mount a trav\u00e9s de una licencia donada.", - "TangibleSoftwareMessage": "Utilizando convertidores Java\/C# de Tangible Solutions por medio de una licencia donada.", - "HeaderCredits": "Cr\u00e9ditos", - "PleaseSupportOtherProduces": "Por favor apoye otros productos libres que utilizamos:", - "VersionNumber": "Versi\u00f3n {0}", - "TabPaths": "Rutas", - "TabServer": "Servidor", - "TabTranscoding": "Transcodificaci\u00f3n", - "TitleAdvanced": "Avanzado", - "LabelAutomaticUpdateLevel": "Nivel de actualizaci\u00f3n autom\u00e1tico", - "OptionRelease": "Versi\u00f3n Oficial", - "OptionBeta": "Beta", - "OptionDev": "Desarrollo (Inestable)", - "LabelAllowServerAutoRestart": "Permite al servidor reiniciar autom\u00e1ticamente para aplicar actualizaciones", - "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 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:", - "LabelCachePathHelp": "Especifique una ubicaci\u00f3n personalizada para los archivos de cach\u00e9 del servidor, tales como im\u00e1genes.", - "LabelImagesByNamePath": "Ruta para Im\u00e1genes por nombre:", - "LabelImagesByNamePathHelp": "Especifique una ubicaci\u00f3n personalizada para im\u00e1genes descargadas de actores, artistas, g\u00e9neros y estudios.", - "LabelMetadataPath": "Ruta para metadatos:", - "LabelMetadataPathHelp": "Especifique una ubicaci\u00f3n personalizada para ilustraciones descargadas y metadatos cuando no han sido configurados para almacenarse en carpetas de medios.", - "LabelTranscodingTempPath": "Ruta para transcodificaci\u00f3n temporal:", - "LabelTranscodingTempPathHelp": "Esta carpeta contiene archivos de trabajo usados por el transcodificador. Especifique una trayectoria personalizada, o d\u00e9jela vac\u00eda para utilizar su valor por omisi\u00f3n en la carpeta de datos del servidor.", - "TabBasics": "B\u00e1sicos", - "TabTV": "TV", - "TabGames": "Juegos", - "TabMusic": "M\u00fasica", - "TabOthers": "Otros", - "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:", - "OptionMovies": "Pel\u00edculas", - "OptionEpisodes": "Episodios", - "OptionOtherVideos": "Otros Videos", - "TitleMetadata": "Metadatos", - "LabelAutomaticUpdates": "Habilitar actualizaciones autom\u00e1ticas", - "LabelAutomaticUpdatesTmdb": "Habilitar actualizaciones autom\u00e1ticas desde TheMovieDB.org", - "LabelAutomaticUpdatesTvdb": "Habilitar actualizaciones autom\u00e1ticas desde TheTVDB.com", - "LabelAutomaticUpdatesFanartHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a fanart.tv. Las Im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelAutomaticUpdatesTmdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheMovieDB.org. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelAutomaticUpdatesTvdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheTVDB.com. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", - "LabelFanartApiKey": "Clave api personal:", - "LabelFanartApiKeyHelp": "Solicitar fanart sin una clave API personal muestra los resultados que fueron aprobados hace 7 d\u00edas. Con una clave API personal se reduce a 48 horas y si eres miembro VIP de fanart ser\u00e1 alrededor de 10 minutos.", - "ExtractChapterImagesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", - "LabelMetadataDownloadLanguage": "Lenguaje preferido para descargas:", - "ButtonAutoScroll": "Auto-desplazamiento", - "LabelImageSavingConvention": "Convenci\u00f3n de almacenamiento de im\u00e1genes:", - "LabelImageSavingConventionHelp": "MediaBrowser reconoce im\u00e1genes de las aplicaciones de medios m\u00e1s importantes. Seleccionar la convenci\u00f3n de descarga es \u00fatil si utiliza otros productos.", - "OptionImageSavingCompatible": "Compatible - Media Browser\/Kodi\/Plex", "OptionImageSavingStandard": "Est\u00e1ndar - MB2", "ButtonSignIn": "Iniciar Sesi\u00f3n", "TitleSignIn": "Iniciar Sesi\u00f3n", @@ -415,7 +48,7 @@ "LabelNumberOfGuideDays": "N\u00famero de d\u00edas de datos de la programaci\u00f3n a descargar", "LabelNumberOfGuideDaysHelp": "Descargar m\u00e1s d\u00edas de datos de programaci\u00f3n permite programar con mayor anticipaci\u00f3n y ver m\u00e1s listados, pero tomar\u00e1 m\u00e1s tiempo en descargar. Auto har\u00e1 la selecci\u00f3n basada en el n\u00famero de canales.", "OptionAutomatic": "Auto", - "HeaderServices": "Services", + "HeaderServices": "Servicios", "LiveTvPluginRequired": "Se requiere de un complemento proveedor de servicios de TV en vivo para continuar.", "LiveTvPluginRequiredHelp": "Por favor instale alguno de los complementos disponibles, como Next PVR o ServerWMC.", "LabelCustomizeOptionsPerMediaType": "Personalizar por tipo de medio:", @@ -917,6 +550,7 @@ "LabelChannelDownloadAgeHelp": "El contenido descargado anterior a esto ser\u00e1 eliminado. Permanecer\u00e1 reproducible via transmisi\u00f3n en tiempo real por Internet.", "ChannelSettingsFormHelp": "Instale canales tales como Avances y Vimeo desde el cat\u00e1logo de complementos.", "ButtonOptions": "Opciones", + "ViewTypePlaylists": "Listas de Reproducci\u00f3n", "ViewTypeMovies": "Pel\u00edculas", "ViewTypeTvShows": "TV", "ViewTypeGames": "Juegos", @@ -1159,6 +793,7 @@ "LabelIfYouWishToContinueWithDeletion": "Si desea continuar, por favor confirme ingresando el valor de:", "ButtonIdentify": "Identificar", "LabelAlbumArtist": "Artista del \u00e1lbum:", + "LabelAlbumArtists": "Artistas del \u00e1lbum:", "LabelAlbum": "\u00c1lbum", "LabelCommunityRating": "Calificaci\u00f3n de la comunidad:", "LabelVoteCount": "Cantidad de votos:", @@ -1371,5 +1006,384 @@ "LabelTagFilterMode": "Modo:", "LabelTagFilterAllowModeHelp": "Si las etiquetas permitidas son usadas como parte de una estrucutra compleja de carpetas anidadas, el contenido etiquetado requerir\u00e1 que las carpetas padre sean etiquetadas tambi\u00e9n.", "HeaderThisUserIsCurrentlyDisabled": "Este usuario se encuentra actualmente deshabilitado", - "MessageReenableUser": "Vea abajo para volverlo a habilitar" + "MessageReenableUser": "Vea abajo para volverlo a habilitar", + "LabelEnableInternetMetadataForTvPrograms": "Descargar metadatos de Internet para:", + "OptionTVMovies": "Pel\u00edculas de TV", + "HeaderUpcomingMovies": "Pr\u00f3ximas Pel\u00edculas", + "HeaderUpcomingPrograms": "Pr\u00f3ximos Programas", + "ButtonMoreItems": "M\u00e1s...", + "LabelShowLibraryTileNames": "Mostrar nombres de t\u00edtulo de las bibliotecas", + "LabelShowLibraryTileNamesHelp": "Determina si se desplegar\u00e1n etiquetas debajo de los t\u00edtulos de las bibliotecas con la p\u00e1gina principal", + "LabelExit": "Salir", + "LabelVisitCommunity": "Visitar la Comunidad", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Est\u00e1ndar", + "LabelApiDocumentation": "Documentaci\u00f3n del API", + "LabelDeveloperResources": "Recursos para Desarrolladores", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureMediaBrowser": "Configurar Media Browser", + "LabelOpenLibraryViewer": "Abrir el Visor de la Biblioteca", + "LabelRestartServer": "Reiniciar el Servidor", + "LabelShowLogWindow": "Mostrar Ventana de Bit\u00e1cora", + "LabelPrevious": "Anterior", + "LabelFinish": "Terminar", + "LabelNext": "Siguiente", + "LabelYoureDone": "Ha Terminado!", + "WelcomeToMediaBrowser": "\u00a1Bienvenido a Media Broswer!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Este asistente le guiar\u00e1 a trav\u00e9s del proceso de instalaci\u00f3n. Para comenzar, por favor seleccione su lenguaje preferido.", + "TellUsAboutYourself": "D\u00edganos sobre usted", + "ButtonQuickStartGuide": "Gu\u00eda de inicio r\u00e1pido", + "LabelYourFirstName": "Su nombre:", + "MoreUsersCanBeAddedLater": "Se pueden agregar m\u00e1s usuarios posteriormente en el Panel de Control.", + "UserProfilesIntro": "Media Browser incluye soporte integrado para perfiles de usuario, permiti\u00e9ndo a cada usuario tener su propia configuraci\u00f3n de pantalla, estado de reproducci\u00f3n y controles parentales.", + "LabelWindowsService": "Servicio de Windows", + "AWindowsServiceHasBeenInstalled": "Se ha instalado un Servicio de Windows.", + "WindowsServiceIntro1": "Media Browser Server se ejecuta normalmente como una aplicaci\u00f3n de escritorio con un icono en el \u00e1rea de notificaci\u00f3n, pero si prefiere ejecutarlo como un servicio de segundo plano, puede ser iniciado desde el panel de control de servicios de windows.", + "WindowsServiceIntro2": "Si utiliza el servicio de Windows, tenga en cuenta que no se puede ejecutar simult\u00e1neamiente con el icono en el \u00e1rea de notificaci\u00f3n, por lo que tendr\u00e1 que finalizar desde el icono para poder ejecutar el servicio. Adicionalmente, el servicio deber\u00e1 ser configurado con privilegios administrativos a trav\u00e9s del panel de control del servicio. Tenga en cuenta que en este momento el servicio no es capaz de actualizarse a s\u00ed mismo, por lo que las nuevas versiones requerir\u00e1n de interacci\u00f3n manual.", + "WizardCompleted": "Esto es todo lo que necesitamos por ahora. Media Browser ha comenzado a recolectar informaci\u00f3n sobre su biblioteca de medios. Pruebe algunas de nuestras apps, despu\u00e9s haga clic en Terminar<\/b> para desplegar el Panel de Control del Servidor<\/b>.", + "LabelConfigureSettings": "Configuraci\u00f3n de opciones", + "LabelEnableVideoImageExtraction": "Habilitar extracci\u00f3n de im\u00e1genes de video", + "VideoImageExtractionHelp": "Para videos que no cuenten con im\u00e1genes, y para los que no podemos encontrar im\u00e1genes en Internet. Esto incrementar\u00e1 un poco el tiempo de la exploraci\u00f3n inicial de las bibliotecas, pero resultar\u00e1 en una presentaci\u00f3n m\u00e1s agradable.", + "LabelEnableChapterImageExtractionForMovies": "Extraer im\u00e1genes de cap\u00edtulos para Pel\u00edculas", + "LabelChapterImageExtractionForMoviesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", + "LabelEnableAutomaticPortMapping": "Habilitar mapeo autom\u00e1tico de puertos", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite la configuraci\u00f3n de ruteador de manera autom\u00e1tica, para acceso remoto de manera f\u00e1cil. Eso puede no funcionar con algunos modelos de ruteadores.", + "HeaderTermsOfService": "T\u00e9rminos del Servicio de Media Browser", + "MessagePleaseAcceptTermsOfService": "Por favor acepte los t\u00e9rminos del servicio y la pol\u00edtica de privacidad antes de continuar.", + "OptionIAcceptTermsOfService": "Acepto los t\u00e9rminos del servicio.", + "ButtonPrivacyPolicy": "Pol\u00edtica de privacidad", + "ButtonTermsOfService": "T\u00e9rminos del Servicio", + "HeaderDeveloperOptions": "Opciones de Desarrollador", + "OptionEnableWebClientResponseCache": "Habilitar la cache de respuestas del cliente web", + "OptionDisableForDevelopmentHelp": "Configuralos como sean necesarios para prop\u00f3sitos de desarrollo en el cliente web.", + "OptionEnableWebClientResourceMinification": "Habilitar minificacion de recursos del cliente web", + "LabelDashboardSourcePath": "Ruta de origen del cliente web:", + "LabelDashboardSourcePathHelp": "Si esta ejecutando el servidor desde la fuente, especifique la ruta de acceso a la carpeta dashboard-ui. Todos los archivos de cliente web ser\u00e1n atendidos desde esta ruta.", + "ButtonConvertMedia": "Convertir Medios", + "ButtonOrganize": "Organizar", + "LinkedToMediaBrowserConnect": "Enlazado con Media Browser Connect", + "HeaderSupporterBenefits": "Beneficios del Aficionado", + "HeaderAddUser": "Agregar Usuario", + "LabelAddConnectSupporterHelp": "Para agregar un usuario que no se encuentra listado, deber\u00e1 primero ligar su cuenta de Media Browser Connect desde su p\u00e1gina de perf\u00edl del usuario.", + "LabelPinCode": "C\u00f3digo pin:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancelar", + "ButtonExit": "Salir", + "ButtonNew": "Nuevo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Rutas", + "CategorySync": "Sinc.", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "C\u00f3digo Pin Sencillo", + "HeaderGrownupsOnly": "\u00a1Solo Adultos!", + "DividerOr": "--o--", + "HeaderInstalledServices": "Servicios Instalados", + "HeaderAvailableServices": "Servicios Disponibles", + "MessageNoServicesInstalled": "No hay servicios instalados en este momento.", + "HeaderToAccessPleaseEnterEasyPinCode": "Para acceder, por favor introduzca su c\u00f3digo pin sencillo", + "KidsModeAdultInstruction": "Haga clic en el icono de candado en la esquina inferior derecha para configurar o abandonar el modo para ni\u00f1os.", + "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", + "HeaderAdultsReadHere": "\u00a1Adultos Leer Esto!", + "RegisterWithPayPal": "Registrar con PayPal", + "HeaderSyncRequiresSupporterMembership": "Sinc requiere de una Membres\u00eda de Aficionado", + "HeaderEnjoyDayTrial": "Disfrute de una Prueba Gratuita por 14 D\u00edas", + "LabelSyncTempPath": "Trayectoria de archivos temporales:", + "LabelSyncTempPathHelp": "Especifique una carpeta de trabajo personalizada para sinc. Los medios convertidos creados durante el proceso de sinc ser\u00e1n almacenados en este lugar.", + "LabelCustomCertificatePath": "Trayectoria del certificado personalizado:", + "LabelCustomCertificatePathHelp": "Proporcione su archivo de certificado .pfx personalizado. Si se omite, el servidor crear\u00e1 un certificado auto firmado.", + "TitleNotifications": "Notificaciones", + "ButtonDonateWithPayPal": "Donar con PayPal", + "OptionDetectArchiveFilesAsMedia": "Detectar archivos comprimidos como medios", + "OptionDetectArchiveFilesAsMediaHelp": "Al habilitarlo, los archivos con extensiones .rar y .zip ser\u00e1n detectados como archivos de medios.", + "LabelEnterConnectUserName": "Nombre de usuario o correo:", + "LabelEnterConnectUserNameHelp": "Este es el nombre de usuario de su cuenta en l\u00ednea de Media Browser o su contrase\u00f1a.", + "LabelEnableEnhancedMovies": "Habilitar visualizaci\u00f3n mejorada de pel\u00edculas", + "LabelEnableEnhancedMoviesHelp": "Cuando se activa, la pel\u00edculas ser\u00e1n mostradas como carpetas para incluir trailers, extras, elenco y equipo, y otros contenidos relacionados.", + "HeaderSyncJobInfo": "Trabajo de Sinc", + "FolderTypeMixed": "Contenido mezclado", + "FolderTypeMovies": "Pel\u00edculas", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "Videos para adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Videos musicales", + "FolderTypeHomeVideos": "Videos caseros", + "FolderTypeGames": "Juegos", + "FolderTypeBooks": "Libros", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Heredar", + "LabelContentType": "Tipo de Contenido:", + "TitleScheduledTasks": "Tareas Programadas", + "HeaderSetupLibrary": "Configurar su biblioteca de medios", + "ButtonAddMediaFolder": "Agregar carpeta de medios", + "LabelFolderType": "Tipo de carpeta:", + "ReferToMediaLibraryWiki": "Consultar la wiki de la biblioteca de medios.", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "L\u00edmite de Tiempo (horas):", + "ButtonJoinTheDevelopmentTeam": "Unirse al Equipo de Desarrollo.", + "HeaderPreferredMetadataLanguage": "Idioma preferido para metadatos:", + "LabelSaveLocalMetadata": "Guardar im\u00e1genes y metadatos en las carpetas de medios", + "LabelSaveLocalMetadataHelp": "Guardar im\u00e1genes y metadatos directamente en las carpetas de medios los colocar\u00e1 en un lugar donde se pueden editar f\u00e1cilmente.", + "LabelDownloadInternetMetadata": "Descargar im\u00e1genes y metadatos de internet", + "LabelDownloadInternetMetadataHelp": "Media Browser permite descargar informaci\u00f3n de sus medios para enriquecer la presentaci\u00f3n.", + "TabPreferences": "Preferencias", + "TabPassword": "Contrase\u00f1a", + "TabLibraryAccess": "Acceso a biblioteca", + "TabAccess": "Acceso", + "TabImage": "Imagen", + "TabProfile": "Perf\u00edl", + "TabMetadata": "Metadatos", + "TabImages": "Im\u00e1genes", + "TabNotifications": "Notificaciones", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Acceso a Dispositivos", + "OptionEnableAccessFromAllDevices": "Habilitar acceso desde todos los dispositivos", + "OptionEnableAccessToAllChannels": "Habilitar acceso a todos los canales", + "OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas", + "DeviceAccessHelp": "Esto solo aplica a dispositivos que pueden ser identificados de manera individual y no evitar\u00e1 acceso al navegador. Al filtrar el acceso de usuarios a dispositivos se impedir\u00e1 que utilicen nuevos dispositivos hasta que hayan sido aprobados aqu\u00ed.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en las temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas", + "HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video", + "HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n", + "LabelAudioLanguagePreference": "Preferencia de idioma de audio:", + "LabelSubtitleLanguagePreference": "Preferencia de idioma de subt\u00edtulos:", + "OptionDefaultSubtitles": "Por Defecto", + "OptionOnlyForcedSubtitles": "\u00danicamente subt\u00edtulos forzados", + "OptionAlwaysPlaySubtitles": "Siempre mostrar subt\u00edtulos", + "OptionNoSubtitles": "Sin Subtitulos", + "OptionDefaultSubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados cuando el audio se encuentre en un lenguaje extranjero.", + "OptionOnlyForcedSubtitlesHelp": "Se cargar\u00e1n \u00fanicamente subt\u00edtulos marcados como forzados.", + "OptionAlwaysPlaySubtitlesHelp": "Los subt\u00edtulos que coincidan con el lenguaje preferido ser\u00e1n cargados independientemente del lenguaje del audio.", + "OptionNoSubtitlesHelp": "Los subt\u00edtulos no ser\u00e1n cargados por defecto.", + "TabProfiles": "Perfiles", + "TabSecurity": "Seguridad", + "ButtonAddUser": "Agregar Usuario", + "ButtonAddLocalUser": "Agregar Usuario Local", + "ButtonInviteUser": "Invitar Usuario", + "ButtonSave": "Guardar", + "ButtonResetPassword": "Restablecer Contrase\u00f1a", + "LabelNewPassword": "Nueva contrase\u00f1a:", + "LabelNewPasswordConfirm": "Confirmaci\u00f3n de contrase\u00f1a nueva:", + "HeaderCreatePassword": "Crear Contrase\u00f1a", + "LabelCurrentPassword": "Contrase\u00f1a actual:", + "LabelMaxParentalRating": "M\u00e1xima clasificaci\u00f3n parental permitida:", + "MaxParentalRatingHelp": "El contenido con clasificaci\u00f3n parental superior se ocultar\u00e1 para este usuario.", + "LibraryAccessHelp": "Seleccione las carpetas de medios para compartir con este usuario. Los administradores podr\u00e1n editar todas las carpetas usando el administrador de metadatos.", + "ChannelAccessHelp": "Seleccione los canales a compartir con este usuario. Los administradores podr\u00e1n editar todos los canales empleando el administrador de metadatos.", + "ButtonDeleteImage": "Eliminar Imagen", + "LabelSelectUsers": "Seleccionar Usuarios:", + "ButtonUpload": "Subir", + "HeaderUploadNewImage": "Subir Nueva Imagen", + "LabelDropImageHere": "Depositar imagen aqu\u00ed", + "ImageUploadAspectRatioHelp": "Se Recomienda una Proporci\u00f3n de Aspecto 1:1. Solo JPG\/PNG.", + "MessageNothingHere": "Nada aqu\u00ed.", + "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadatos de internet esta habilitada.", + "TabSuggested": "Sugerencias", + "TabLatest": "Recientes", + "TabUpcoming": "Por Estrenar", + "TabShows": "Programas", + "TabEpisodes": "Episodios", + "TabGenres": "G\u00e9neros", + "TabPeople": "Personas", + "TabNetworks": "Cadenas", + "HeaderUsers": "Usuarios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Me gusta", + "OptionDislikes": "No me gusta", + "OptionActors": "Actores", + "OptionGuestStars": "Estrellas Invitadas", + "OptionDirectors": "Directores", + "OptionWriters": "Guionistas", + "OptionProducers": "Productores", + "HeaderResume": "Continuar", + "HeaderNextUp": "A Continuaci\u00f3n", + "NoNextUpItemsMessage": "No se encontr\u00f3 nada. \u00a1Comienza a ver tus programas!", + "HeaderLatestEpisodes": "Episodios Recientes", + "HeaderPersonTypes": "Tipos de Personas:", + "TabSongs": "Canciones", + "TabAlbums": "\u00c1lbums", + "TabArtists": "Artistas", + "TabAlbumArtists": "Artistas del \u00c1lbum", + "TabMusicVideos": "Videos Musicales", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar Por:", + "HeaderSortOrder": "Ordenado Por:", + "OptionPlayed": "Reproducido", + "OptionUnplayed": "No reproducido", + "OptionAscending": "Ascendente", + "OptionDescending": "Descendente", + "OptionRuntime": "Duraci\u00f3n", + "OptionReleaseDate": "Fecha de Liberaci\u00f3n", + "OptionPlayCount": "N\u00famero de Reproducc.", + "OptionDatePlayed": "Fecha de Reproducci\u00f3n", + "OptionDateAdded": "Fecha de Adici\u00f3n", + "OptionAlbumArtist": "Artista del \u00c1lbum", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nombre de la Pista", + "OptionCommunityRating": "Calificaci\u00f3n de la Comunidad", + "OptionNameSort": "Nombre", + "OptionFolderSort": "Carpetas", + "OptionBudget": "Presupuesto", + "OptionRevenue": "Recaudaci\u00f3n", + "OptionPoster": "P\u00f3ster", + "OptionPosterCard": "Tarjeta de P\u00f3ster", + "OptionBackdrop": "Imagen de Fondo", + "OptionTimeline": "L\u00ednea de Tiempo", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Tarjeta de Miniatura", + "OptionBanner": "Cart\u00e9l", + "OptionCriticRating": "Calificaci\u00f3n de la Cr\u00edtica", + "OptionVideoBitrate": "Tasa de bits de Video", + "OptionResumable": "Reanudable", + "ScheduledTasksHelp": "Haga clic en una tarea para ajustar su programaci\u00f3n.", + "ScheduledTasksTitle": "Tareas Programadas", + "TabMyPlugins": "Mis Complementos", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Complementos", + "HeaderAutomaticUpdates": "Actualizaciones Autom\u00e1ticas", + "HeaderNowPlaying": "Reproduciendo Ahora", + "HeaderLatestAlbums": "\u00c1lbums Recientes", + "HeaderLatestSongs": "Canciones Recientes", + "HeaderRecentlyPlayed": "Reproducido Recientemente", + "HeaderFrequentlyPlayed": "Reproducido Frecuentemente", + "DevBuildWarning": "Las compilaciones de Desarrollo son la punta de lanza. Se publican frecuentemente, estas compilaciones no se han probado. La aplicaci\u00f3n se puede bloquear y caracter\u00edsticas completas pueden no funcionar.", + "LabelVideoType": "Tipo de Video:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Caracter\u00edsticas:", + "LabelService": "Servicio:", + "LabelStatus": "Estado:", + "LabelVersion": "Versi\u00f3n:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Subt\u00edtulos", + "OptionHasTrailer": "Avance", + "OptionHasThemeSong": "Canci\u00f3n del Tema", + "OptionHasThemeVideo": "Video del Tema", + "TabMovies": "Pel\u00edculas", + "TabStudios": "Estudios", + "TabTrailers": "Avances", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separar m\u00faltiples empleando:", + "HeaderLatestMovies": "Pel\u00edculas Recientes", + "HeaderLatestTrailers": "Avances Recientes", + "OptionHasSpecialFeatures": "Caracter\u00edsticas Especiales", + "OptionImdbRating": "Calificaci\u00f3n de IMDb", + "OptionParentalRating": "Clasificaci\u00f3n Parental", + "OptionPremiereDate": "Fecha de Estreno", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avanzado", + "HeaderStatus": "Estado", + "OptionContinuing": "Continuando", + "OptionEnded": "Finalizado", + "HeaderAirDays": "D\u00edas de Emisi\u00f3n", + "OptionSunday": "Domingo", + "OptionMonday": "Lunes", + "OptionTuesday": "Martes", + "OptionWednesday": "Mi\u00e9rcoles", + "OptionThursday": "Jueves", + "OptionFriday": "Viernes", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "Administraci\u00f3n", + "LabelManagement": "Administraci\u00f3n:", + "OptionMissingImdbId": "Falta Id de IMDb", + "OptionMissingTvdbId": "Falta Id de TheTVDB", + "OptionMissingOverview": "Falta Sinopsis", + "OptionFileMetadataYearMismatch": "No coincide el A\u00f1o del Archivo con los Metadatos", + "TabGeneral": "General", + "TitleSupport": "Soporte", + "TabLog": "Bit\u00e1cora", + "TabAbout": "Acerca de", + "TabSupporterKey": "Clave de Aficionado", + "TabBecomeSupporter": "Convertirse en Aficionado", + "MediaBrowserHasCommunity": "Media Browser cuenta con una pr\u00f3spera comunidad de usuarios y colaboradores.", + "CheckoutKnowledgeBase": "Eche un vistazo a nuestra base de conocimiento para ayudarte a sacar el m\u00e1ximo provecho de Media Browser.", + "SearchKnowledgeBase": "Buscar en la Base de Conocimiento", + "VisitTheCommunity": "Visitar la Comunidad", + "VisitMediaBrowserWebsite": "Visitar el Sitio Web de Media Browser", + "VisitMediaBrowserWebsiteLong": "Visitar el Sitio Web de Media Browser para estar conocer las \u00faltimas not\u00edcias y mantenerse al d\u00eda con el blog de los desarrolladores.", + "OptionHideUser": "Ocultar este usuario en las pantallas de inicio de sesi\u00f3n", + "OptionHideUserFromLoginHelp": "\u00datil para cuentas privadas o de administrador ocultas. El usuario tendr\u00e1 que iniciar sesi\u00f3n manualmente ingresando su nombre de usuario y contrase\u00f1a.", + "OptionDisableUser": "Desactivar este usuario", + "OptionDisableUserHelp": "Si est\u00e1 desactivado, el servidor no aceptar\u00e1 conexiones de este usuario. Las conexiones existentes ser\u00e1n finalizadas abruptamente.", + "HeaderAdvancedControl": "Control Avanzado", + "LabelName": "Nombre:", + "ButtonHelp": "Ayuda", + "OptionAllowUserToManageServer": "Permitir a este usuario administrar el servidor", + "HeaderFeatureAccess": "Permisos de acceso", + "OptionAllowMediaPlayback": "Permitir reproducci\u00f3n de medios", + "OptionAllowBrowsingLiveTv": "Permitir acceso a TV en Vivo", + "OptionAllowDeleteLibraryContent": "Permitir eliminaci\u00f3n de medios", + "OptionAllowManageLiveTv": "Permitir gesti\u00f3n de grabaci\u00f3n de TV en Vivo", + "OptionAllowRemoteControlOthers": "Permitir control remoto de otros usuarios", + "OptionAllowRemoteSharedDevices": "Permitir control remoto de dispositivos compartidos", + "OptionAllowRemoteSharedDevicesHelp": "Los dispositivos dnla son considerados como compartidos hasta que alg\u00fan usuario comienza a controlarlo.", + "HeaderRemoteControl": "Control Remoto", + "OptionMissingTmdbId": "Falta Id de Tmdb", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Seleccionar", + "ButtonGroupVersions": "Agrupar Versiones", + "ButtonAddToCollection": "Agregar a Colecci\u00f3n", + "PismoMessage": "Utilizando Pismo File Mount a trav\u00e9s de una licencia donada.", + "TangibleSoftwareMessage": "Utilizando convertidores Java\/C# de Tangible Solutions por medio de una licencia donada.", + "HeaderCredits": "Cr\u00e9ditos", + "PleaseSupportOtherProduces": "Por favor apoye otros productos libres que utilizamos:", + "VersionNumber": "Versi\u00f3n {0}", + "TabPaths": "Rutas", + "TabServer": "Servidor", + "TabTranscoding": "Transcodificaci\u00f3n", + "TitleAdvanced": "Avanzado", + "LabelAutomaticUpdateLevel": "Nivel de actualizaci\u00f3n autom\u00e1tico", + "OptionRelease": "Versi\u00f3n Oficial", + "OptionBeta": "Beta", + "OptionDev": "Desarrollo (Inestable)", + "LabelAllowServerAutoRestart": "Permite al servidor reiniciar autom\u00e1ticamente para aplicar actualizaciones", + "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 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:", + "LabelCachePathHelp": "Especifique una ubicaci\u00f3n personalizada para los archivos de cach\u00e9 del servidor, tales como im\u00e1genes.", + "LabelImagesByNamePath": "Ruta para Im\u00e1genes por nombre:", + "LabelImagesByNamePathHelp": "Especifique una ubicaci\u00f3n personalizada para im\u00e1genes descargadas de actores, artistas, g\u00e9neros y estudios.", + "LabelMetadataPath": "Ruta para metadatos:", + "LabelMetadataPathHelp": "Especifique una ubicaci\u00f3n personalizada para ilustraciones descargadas y metadatos cuando no han sido configurados para almacenarse en carpetas de medios.", + "LabelTranscodingTempPath": "Ruta para transcodificaci\u00f3n temporal:", + "LabelTranscodingTempPathHelp": "Esta carpeta contiene archivos de trabajo usados por el transcodificador. Especifique una trayectoria personalizada, o d\u00e9jela vac\u00eda para utilizar su valor por omisi\u00f3n en la carpeta de datos del servidor.", + "TabBasics": "B\u00e1sicos", + "TabTV": "TV", + "TabGames": "Juegos", + "TabMusic": "M\u00fasica", + "TabOthers": "Otros", + "HeaderExtractChapterImagesFor": "Extraer im\u00e1genes de cap\u00edtulos para:", + "OptionMovies": "Pel\u00edculas", + "OptionEpisodes": "Episodios", + "OptionOtherVideos": "Otros Videos", + "TitleMetadata": "Metadatos", + "LabelAutomaticUpdates": "Habilitar actualizaciones autom\u00e1ticas", + "LabelAutomaticUpdatesTmdb": "Habilitar actualizaciones autom\u00e1ticas desde TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Habilitar actualizaciones autom\u00e1ticas desde TheTVDB.com", + "LabelAutomaticUpdatesFanartHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a fanart.tv. Las Im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelAutomaticUpdatesTmdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheMovieDB.org. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelAutomaticUpdatesTvdbHelp": "Al habilitarlo, se descargar\u00e1n autom\u00e1ticamente nuevas im\u00e1genes conforme son a\u00f1adidas a TheTVDB.com. Las im\u00e1genes existentes no ser\u00e1n reemplazadas.", + "LabelFanartApiKey": "Clave api personal:", + "LabelFanartApiKeyHelp": "Solicitar fanart sin una clave API personal muestra los resultados que fueron aprobados hace 7 d\u00edas. Con una clave API personal se reduce a 48 horas y si eres miembro VIP de fanart ser\u00e1 alrededor de 10 minutos.", + "ExtractChapterImagesHelp": "Extraer las im\u00e1genes de los cap\u00edtulos permitir\u00e1 a sus clientes mostrar gr\u00e1ficamente los men\u00fas de selecci\u00f3n de escenas. El proceso puede ser lento, hacer uso intensivo del cpu y requerir el uso de varios gigabytes de espacio. Se ejecuta como una tarea nocturna programada, aunque puede configurarse en el \u00e1rea de tareas programadas. No se recomienda ejecutarlo durante un horario de uso intensivo.", + "LabelMetadataDownloadLanguage": "Lenguaje preferido para descargas:", + "ButtonAutoScroll": "Auto-desplazamiento", + "LabelImageSavingConvention": "Convenci\u00f3n de almacenamiento de im\u00e1genes:", + "LabelImageSavingConventionHelp": "MediaBrowser reconoce im\u00e1genes de las aplicaciones de medios m\u00e1s importantes. Seleccionar la convenci\u00f3n de descarga es \u00fatil si utiliza otros productos.", + "OptionImageSavingCompatible": "Compatible - Media Browser\/Kodi\/Plex" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/fi.json b/MediaBrowser.Server.Implementations/Localization/Server/fi.json index 24c8d5d16..5e44b9567 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -1,267 +1,4 @@ { - "LabelExit": "Poistu", - "LabelVisitCommunity": "K\u00e4y Yhteis\u00f6ss\u00e4", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Normaali", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Selaa Kirjastoa", - "LabelConfigureMediaBrowser": "Configuroi Media Browseria", - "LabelOpenLibraryViewer": "Avaa Library Viewer", - "LabelRestartServer": "K\u00e4ynnist\u00e4 Palvelin uudelleen", - "LabelShowLogWindow": "N\u00e4yt\u00e4 Loki Ikkuna", - "LabelPrevious": "Edellinen", - "LabelFinish": "Valmis", - "LabelNext": "Seuraava", - "LabelYoureDone": "Olet valmis!", - "WelcomeToMediaBrowser": "Tervetuloa Media Browseriin!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "T\u00e4m\u00e4 ty\u00f6kalu auttaa sinua asennus prosessin aikana. loittaaksesi valitse kieli.", - "TellUsAboutYourself": "Kerro meille itsest\u00e4si", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Sinun ensimm\u00e4inen nimi:", - "MoreUsersCanBeAddedLater": "K\u00e4ytt\u00e4ji\u00e4 voi lis\u00e4t\u00e4 lis\u00e4\u00e4 my\u00f6hemmin Dashboardista", - "UserProfilesIntro": "Media Browser sis\u00e4lt\u00e4\u00e4 sis\u00e4\u00e4nrakenntun tuen k\u00e4ytt\u00e4j\u00e4 profiileille, omat asetukset jokaiselle, paystate ja rinnakkaisen hallinnan.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service on asennettu.", - "WindowsServiceIntro1": "Media Browser palvelin normaalisti toimii ty\u00f6p\u00f6yt\u00e4 sovelluksena teht\u00e4v\u00e4 palkissa, mutta jos sin\u00e4 haluat mielummin pit\u00e4\u00e4 sen piilossa, se voidaan my\u00f6s k\u00e4ynnist\u00e4\u00e4 windowsin service hallinnasta k\u00e4sin.", - "WindowsServiceIntro2": "Jos k\u00e4yt\u00e4t windows service\u00e4, ole hyv\u00e4 ja ota huomioon ettet voi k\u00e4ytt\u00e4\u00e4 ohjelmaa yht\u00e4aikaa teht\u00e4v\u00e4palkissa ja servicen\u00e4, joten sinun t\u00e4ytyy sulkea teht\u00e4v\u00e4palkin ikoni ensin kuin voit k\u00e4ytt\u00e4\u00e4 palvelinta servicen kautta. Service pit\u00e4\u00e4 konfiguroida my\u00f6s j\u00e4rjestelm\u00e4nvalvojan oikeuksilla ohjaus paneelista. Ota my\u00f6s huomioon, ett\u00e4 ohjelma pit\u00e4\u00e4 my\u00f6s p\u00e4ivitt\u00e4\u00e4 service palvelussa manuaalisesti.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Muuta asetuksia", - "LabelEnableVideoImageExtraction": "Ota video kuvan purku k\u00e4ytt\u00f6\u00f6n", - "VideoImageExtractionHelp": "Videot jotka eiv\u00e4t sisll\u00e4 valmiiksi kuvaa ja emme voi lis\u00e4t\u00e4 kuvaa automaattisesti internetist\u00e4. T\u00e4m\u00e4 lis\u00e4\u00e4 v\u00e4h\u00e4n lataus aikaa kirjaston tarkastuksessa.", - "LabelEnableChapterImageExtractionForMovies": "Valitse luvun kuva Elokuville", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Ota automaattinen porttien mapping k\u00e4ytt\u00f6\u00f6n", - "LabelEnableAutomaticPortMappingHelp": "UPnP sallii automaattisen reitittimen asetusten muuttamisen. T\u00e4m\u00e4 ei mahdollisesti toimi joidenkin retititin mallien kanssa.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Lopeta", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Aseta sinun media kirjasto", - "ButtonAddMediaFolder": "Lis\u00e4\u00e4 media kansio", - "LabelFolderType": "Kansion tyyppi:", - "ReferToMediaLibraryWiki": "Viittus media kirjaston wikiin.", - "LabelCountry": "Maa:", - "LabelLanguage": "Kieli:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Ensisijainen kieli:", - "LabelSaveLocalMetadata": "Tallenna kuvamateriaali ja metadata media kansioihin.", - "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin miss\u00e4 niit\u00e4 on helppo muuttaa.", - "LabelDownloadInternetMetadata": "Lataa kuvamateriaali ja metadata internetist\u00e4", - "LabelDownloadInternetMetadataHelp": "Media Browser voi ladata tietoa, saadakseensa hienompia esityksi\u00e4.", - "TabPreferences": "Asetukset", - "TabPassword": "Salasana", - "TabLibraryAccess": "Kirjaston P\u00e4\u00e4sy", - "TabAccess": "Access", - "TabImage": "Kuva", - "TabProfile": "Profiili", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "N\u00e4yt\u00e4 puuttuvat jaksot tuotantokausissa", - "LabelUnairedMissingEpisodesWithinSeasons": "N\u00e4yt\u00e4 julkaisemattomat jaksot tuotantokausissa", - "HeaderVideoPlaybackSettings": "Videon Toistamisen Asetukset", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "\u00c4\u00e4nen ensisijainen kieli:", - "LabelSubtitleLanguagePreference": "Tekstityksien ensisijainen kieli:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiilit", - "TabSecurity": "Suojaus", - "ButtonAddUser": "Lis\u00e4\u00e4 K\u00e4ytt\u00e4j\u00e4", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Tallenna", - "ButtonResetPassword": "Uusi Salasana", - "LabelNewPassword": "Uusi salasana:", - "LabelNewPasswordConfirm": "Uuden salasanan varmistus:", - "HeaderCreatePassword": "Luo Salasana:", - "LabelCurrentPassword": "T\u00e4m\u00e4n hetkinen salsana:", - "LabelMaxParentalRating": "Suurin sallittu vanhempien arvostelu:", - "MaxParentalRatingHelp": "Suuremman arvosanan takia, sis\u00e4lt\u00f6 tulla piilottamaan k\u00e4ytt\u00e4j\u00e4lt\u00e4.", - "LibraryAccessHelp": "Valitse media kansiot jotka haluat jakaa t\u00e4m\u00e4n k\u00e4ytt\u00e4j\u00e4n kanssa. J\u00e4rjestelm\u00e4nvalvoja pystyy muokkaamaan kaikkia kansioita k\u00e4ytt\u00e4en metadata hallintaa.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Poista Kuva", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", "OptionContinuing": "Continuing", "OptionEnded": "Ended", "HeaderAirDays": "Air Days", @@ -917,6 +654,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +897,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1110,280 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Poistu", + "LabelVisitCommunity": "K\u00e4y Yhteis\u00f6ss\u00e4", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Normaali", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Selaa Kirjastoa", + "LabelConfigureMediaBrowser": "Configuroi Media Browseria", + "LabelOpenLibraryViewer": "Avaa Library Viewer", + "LabelRestartServer": "K\u00e4ynnist\u00e4 Palvelin uudelleen", + "LabelShowLogWindow": "N\u00e4yt\u00e4 Loki Ikkuna", + "LabelPrevious": "Edellinen", + "LabelFinish": "Valmis", + "LabelNext": "Seuraava", + "LabelYoureDone": "Olet valmis!", + "WelcomeToMediaBrowser": "Tervetuloa Media Browseriin!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "T\u00e4m\u00e4 ty\u00f6kalu auttaa sinua asennus prosessin aikana. loittaaksesi valitse kieli.", + "TellUsAboutYourself": "Kerro meille itsest\u00e4si", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Sinun ensimm\u00e4inen nimi:", + "MoreUsersCanBeAddedLater": "K\u00e4ytt\u00e4ji\u00e4 voi lis\u00e4t\u00e4 lis\u00e4\u00e4 my\u00f6hemmin Dashboardista", + "UserProfilesIntro": "Media Browser sis\u00e4lt\u00e4\u00e4 sis\u00e4\u00e4nrakenntun tuen k\u00e4ytt\u00e4j\u00e4 profiileille, omat asetukset jokaiselle, paystate ja rinnakkaisen hallinnan.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service on asennettu.", + "WindowsServiceIntro1": "Media Browser palvelin normaalisti toimii ty\u00f6p\u00f6yt\u00e4 sovelluksena teht\u00e4v\u00e4 palkissa, mutta jos sin\u00e4 haluat mielummin pit\u00e4\u00e4 sen piilossa, se voidaan my\u00f6s k\u00e4ynnist\u00e4\u00e4 windowsin service hallinnasta k\u00e4sin.", + "WindowsServiceIntro2": "Jos k\u00e4yt\u00e4t windows service\u00e4, ole hyv\u00e4 ja ota huomioon ettet voi k\u00e4ytt\u00e4\u00e4 ohjelmaa yht\u00e4aikaa teht\u00e4v\u00e4palkissa ja servicen\u00e4, joten sinun t\u00e4ytyy sulkea teht\u00e4v\u00e4palkin ikoni ensin kuin voit k\u00e4ytt\u00e4\u00e4 palvelinta servicen kautta. Service pit\u00e4\u00e4 konfiguroida my\u00f6s j\u00e4rjestelm\u00e4nvalvojan oikeuksilla ohjaus paneelista. Ota my\u00f6s huomioon, ett\u00e4 ohjelma pit\u00e4\u00e4 my\u00f6s p\u00e4ivitt\u00e4\u00e4 service palvelussa manuaalisesti.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Muuta asetuksia", + "LabelEnableVideoImageExtraction": "Ota video kuvan purku k\u00e4ytt\u00f6\u00f6n", + "VideoImageExtractionHelp": "Videot jotka eiv\u00e4t sisll\u00e4 valmiiksi kuvaa ja emme voi lis\u00e4t\u00e4 kuvaa automaattisesti internetist\u00e4. T\u00e4m\u00e4 lis\u00e4\u00e4 v\u00e4h\u00e4n lataus aikaa kirjaston tarkastuksessa.", + "LabelEnableChapterImageExtractionForMovies": "Valitse luvun kuva Elokuville", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Ota automaattinen porttien mapping k\u00e4ytt\u00f6\u00f6n", + "LabelEnableAutomaticPortMappingHelp": "UPnP sallii automaattisen reitittimen asetusten muuttamisen. T\u00e4m\u00e4 ei mahdollisesti toimi joidenkin retititin mallien kanssa.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Lopeta", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Aseta sinun media kirjasto", + "ButtonAddMediaFolder": "Lis\u00e4\u00e4 media kansio", + "LabelFolderType": "Kansion tyyppi:", + "ReferToMediaLibraryWiki": "Viittus media kirjaston wikiin.", + "LabelCountry": "Maa:", + "LabelLanguage": "Kieli:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Ensisijainen kieli:", + "LabelSaveLocalMetadata": "Tallenna kuvamateriaali ja metadata media kansioihin.", + "LabelSaveLocalMetadataHelp": "Kuvamateriaalin ja metadatan tallentaminen suoraan kansioihin miss\u00e4 niit\u00e4 on helppo muuttaa.", + "LabelDownloadInternetMetadata": "Lataa kuvamateriaali ja metadata internetist\u00e4", + "LabelDownloadInternetMetadataHelp": "Media Browser voi ladata tietoa, saadakseensa hienompia esityksi\u00e4.", + "TabPreferences": "Asetukset", + "TabPassword": "Salasana", + "TabLibraryAccess": "Kirjaston P\u00e4\u00e4sy", + "TabAccess": "Access", + "TabImage": "Kuva", + "TabProfile": "Profiili", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "N\u00e4yt\u00e4 puuttuvat jaksot tuotantokausissa", + "LabelUnairedMissingEpisodesWithinSeasons": "N\u00e4yt\u00e4 julkaisemattomat jaksot tuotantokausissa", + "HeaderVideoPlaybackSettings": "Videon Toistamisen Asetukset", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "\u00c4\u00e4nen ensisijainen kieli:", + "LabelSubtitleLanguagePreference": "Tekstityksien ensisijainen kieli:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiilit", + "TabSecurity": "Suojaus", + "ButtonAddUser": "Lis\u00e4\u00e4 K\u00e4ytt\u00e4j\u00e4", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Tallenna", + "ButtonResetPassword": "Uusi Salasana", + "LabelNewPassword": "Uusi salasana:", + "LabelNewPasswordConfirm": "Uuden salasanan varmistus:", + "HeaderCreatePassword": "Luo Salasana:", + "LabelCurrentPassword": "T\u00e4m\u00e4n hetkinen salsana:", + "LabelMaxParentalRating": "Suurin sallittu vanhempien arvostelu:", + "MaxParentalRatingHelp": "Suuremman arvosanan takia, sis\u00e4lt\u00f6 tulla piilottamaan k\u00e4ytt\u00e4j\u00e4lt\u00e4.", + "LibraryAccessHelp": "Valitse media kansiot jotka haluat jakaa t\u00e4m\u00e4n k\u00e4ytt\u00e4j\u00e4n kanssa. J\u00e4rjestelm\u00e4nvalvoja pystyy muokkaamaan kaikkia kansioita k\u00e4ytt\u00e4en metadata hallintaa.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Poista Kuva", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status" } \ 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 5a2e3fac0..d69d2139d 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -1,232 +1,4 @@ { - "LabelExit": "Quitter", - "LabelVisitCommunity": "Visiter la Communaut\u00e9", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Documentation API", - "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", - "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", - "LabelConfigureMediaBrowser": "Configurer Media Browser", - "LabelOpenLibraryViewer": "Ouvrir le navigateur de biblioth\u00e8que", - "LabelRestartServer": "Red\u00e9marrer le Serveur", - "LabelShowLogWindow": "Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements", - "LabelPrevious": "Pr\u00e9c\u00e9dent", - "LabelFinish": "Terminer", - "LabelNext": "Suivant", - "LabelYoureDone": "Vous avez Termin\u00e9!", - "WelcomeToMediaBrowser": "Bienvenue sur Media Browser !", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Cet assistant vous guidera dans le processus de configuration. Pour commencer, merci de s\u00e9lectionner votre langue pr\u00e9f\u00e9r\u00e9e.", - "TellUsAboutYourself": "Parlez-nous de vous", - "ButtonQuickStartGuide": "Guide de d\u00e9marrage rapide", - "LabelYourFirstName": "Votre pr\u00e9nom:", - "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.", - "UserProfilesIntro": "Media Browser supporte nativement les profils utilisateurs, donnant la possibilit\u00e9 pour chaque utilisateur d'avoir ses propres param\u00e8tres d'affichage, \u00e9tats de lecture et param\u00e8tres de contr\u00f4le parental.", - "LabelWindowsService": "Service Windows", - "AWindowsServiceHasBeenInstalled": "Un service Windows a \u00e9t\u00e9 install\u00e9.", - "WindowsServiceIntro1": "Media Browser fonctionne normalement en tant qu'application sur le bureau avec une ic\u00f4ne dans la barre des t\u00e2ches, mais si vous pr\u00e9f\u00e9rez le lancer en tant que service d'arri\u00e8re-plan, il peut \u00eatre d\u00e9marr\u00e9 via le gestionnaire de services Windows.", - "WindowsServiceIntro2": "Si le service Windows est utilis\u00e9, veuillez noter qu'il ne peut pas fonctionner en m\u00eame temps que l'application dans la barre des t\u00e2ches, vous devrez donc fermer l'application de la barre des t\u00e2ches pour pouvoir ex\u00e9cuter le service. Le service devra aussi \u00eatre configur\u00e9 avec les droits administrateurs via le panneau de configuration. Veuillez noter qu'actuellement, la mise \u00e0 jour automatique du service n'est pas disponible, les mises \u00e0 jour devront donc se faire manuellement.", - "WizardCompleted": "C'est tout ce dont nous avons besoin pour le moment. Media Browser a commenc\u00e9 la collecte d'informations dans votre biblioth\u00e8que de m\u00e9dias. Consultez quelques-une de nos applications, puis cliquez sur Terminer<\/b> pour consulter le tableau de bord du serveur<\/b>.", - "LabelConfigureSettings": "Configurer les param\u00e8tres", - "LabelEnableVideoImageExtraction": "Activer l'extraction d'images des videos", - "VideoImageExtractionHelp": "Pour les vid\u00e9os sans image et pour lesquelles nous n'avons pas trouv\u00e9 d'images sur Internet. Ce processus prolongera la mise \u00e0 jour initiale de la biblioth\u00e8que mais offrira un meilleur rendu visuel.", - "LabelEnableChapterImageExtractionForMovies": "Extraire les images de chapitres des films", - "LabelChapterImageExtractionForMoviesHelp": "L'extraction d'images de chapitres permettra aux clients d'afficher des menus visuels pour la s\u00e9lection des sc\u00e8nes. Le processus peut \u00eatre long et consommateur de ressources du processeur et de stockage (plusieurs gigaoctets). Il s'ex\u00e9cute comme t\u00e2che programm\u00e9e mais son param\u00e9trage peut \u00eatre modifi\u00e9 dans les options des t\u00e2ches programm\u00e9es. Il est d\u00e9conseill\u00e9 d'ex\u00e9cuter cette t\u00e2che durant les heures d'utilisation normales.", - "LabelEnableAutomaticPortMapping": "Activer la configuration automatique de port", - "LabelEnableAutomaticPortMappingHelp": "UPnP permet la configuration automatique des routeurs pour un acc\u00e8s \u00e0 distance facile. Ceci peut ne pas fonctionner sur certains mod\u00e8les de routeur.", - "HeaderTermsOfService": "Conditions d'utilisation de Media Browser", - "MessagePleaseAcceptTermsOfService": "Veuillez accepter les conditions d'utilisations et la politique de confidentialit\u00e9 avant de continuer.", - "OptionIAcceptTermsOfService": "J'accepte les conditions d'utilisation.", - "ButtonPrivacyPolicy": "Politique de confidentialit\u00e9", - "ButtonTermsOfService": "Conditions d'utilisation", - "HeaderDeveloperOptions": "Options de d\u00e9veloppement", - "OptionEnableWebClientResponseCache": "Activer la mise en cache des r\u00e9ponses du client web", - "OptionDisableForDevelopmentHelp": "Vous pouvez configurer ces options selon vos besoins de d\u00e9veloppement.", - "OptionEnableWebClientResourceMinification": "Activer la minimisation des ressources du client web", - "LabelDashboardSourcePath": "Chemin des fichiers sources du client web", - "LabelDashboardSourcePathHelp": "Si vous ex\u00e9cutez le serveur \u00e0 partir des sources, veuillez sp\u00e9cifier le chemin du r\u00e9pertoire dashboard-ui. Tous les fichiers du client web seront servis \u00e0 partir de cet endroit.", - "ButtonConvertMedia": "Convertir le m\u00e9dia", - "ButtonOrganize": "Organiser", - "LabelPinCode": "Code PIN:", - "ButtonOk": "Ok", - "ButtonCancel": "Annuler", - "ButtonExit": "Sortie", - "ButtonNew": "Nouveau", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Vid\u00e9o", - "HeaderPaths": "Chemins", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Code Easy Pin", - "HeaderGrownupsOnly": "R\u00e9serv\u00e9 aux adultes !", - "DividerOr": "-- ou --", - "HeaderInstalledServices": "Services install\u00e9s", - "HeaderAvailableServices": "Services disponibles", - "MessageNoServicesInstalled": "Aucun service n'est actuellement install\u00e9.", - "HeaderToAccessPleaseEnterEasyPinCode": "Veuillez entrez votre code Easy PIN :", - "KidsModeAdultInstruction": "Cliquez sur l'ic\u00f4ne en forme de cadenas en bas \u00e0 droite pour configurer ou quitter le mode Enfants. Votre code PIN sera requis.", - "ButtonConfigurePinCode": "Configurer le code PIN", - "HeaderAdultsReadHere": "Section r\u00e9serv\u00e9e aux adultes!", - "RegisterWithPayPal": "S'enregistrer avec PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync n\u00e9cessite un abonnement actif comme supporteur", - "HeaderEnjoyDayTrial": "Profitez d'une p\u00e9riode d'essai de 14 jours", - "LabelSyncTempPath": "R\u00e9pertoire de fichiers temporaires :", - "LabelSyncTempPathHelp": "Sp\u00e9cifiez un r\u00e9pertoire de travail pour la synchronisation. Les fichiers r\u00e9sultant de la conversion de m\u00e9dias au cours du processus de synchronisation seront stock\u00e9s ici.", - "LabelCustomCertificatePath": "Chemin vers le certificat personnalis\u00e9 :", - "LabelCustomCertificatePathHelp": "Fournissez votre propre certificat SSL au format .pfx. Sinon, le serveur cr\u00e9era un certificat auto-sign\u00e9.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Faire un don avec Paypal", - "OptionDetectArchiveFilesAsMedia": "Reconna\u00eetre les fichiers archives comme m\u00e9dias", - "OptionDetectArchiveFilesAsMediaHelp": "Activez cette option pour reconna\u00eetre les fichiers portant l'extension .rar ou .zip comme des fichiers de m\u00e9dias. ", - "LabelEnterConnectUserName": "Nom d'utilisateur ou adresse email :", - "LabelEnterConnectUserNameHelp": "Ceci est le nom d'utilisateur ou mot de passe de votre compte en ligne Media Browser.", - "LabelEnableEnhancedMovies": "Activer le mode d'affichage \u00e9tendu des films", - "LabelEnableEnhancedMoviesHelp": "Lorsque ce mode est activ\u00e9, les films seront affich\u00e9s comme des dossiers et incluront les bandes-annonces, les extras, l'\u00e9quipe de tournage et les autre contenus li\u00e9s.", - "HeaderSyncJobInfo": "T\u00e2che de synchronisation", - "FolderTypeMixed": "Contenus m\u00e9lang\u00e9s", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Musique", - "FolderTypeAdultVideos": "Vid\u00e9os Adultes", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Vid\u00e9os Musical", - "FolderTypeHomeVideos": "Vid\u00e9os personnelles", - "FolderTypeGames": "Jeux", - "FolderTypeBooks": "Livres", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "H\u00e9rite", - "LabelContentType": "Type de contenu :", - "TitleScheduledTasks": "T\u00e2ches planifi\u00e9es", - "HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia", - "ButtonAddMediaFolder": "Ajouter un r\u00e9pertoire de m\u00e9dia", - "LabelFolderType": "Type de r\u00e9pertoire:", - "ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia", - "LabelCountry": "Pays:", - "LabelLanguage": "Langue:", - "LabelTimeLimitHours": "Limite de temps (heures) :", - "ButtonJoinTheDevelopmentTeam": "Joignez-vous \u00e0 l'\u00e9quipe de d\u00e9veloppement", - "HeaderPreferredMetadataLanguage": "Langue pr\u00e9f\u00e9r\u00e9e pour les m\u00e9tadonn\u00e9es:", - "LabelSaveLocalMetadata": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia", - "LabelSaveLocalMetadataHelp": "L'enregistrement des images et des m\u00e9tadonn\u00e9es dans le r\u00e9pertoire de m\u00e9dia les placera \u00e0 un endroit o\u00f9 elles seront facilement modifiables.", - "LabelDownloadInternetMetadata": "T\u00e9l\u00e9charger les images et m\u00e9tadonn\u00e9es depuis Internet", - "LabelDownloadInternetMetadataHelp": "Media Browser peut t\u00e9l\u00e9charger des informations compl\u00e9mentaires sur vos m\u00e9dias pour en enrichir la pr\u00e9sentation.", - "TabPreferences": "Pr\u00e9f\u00e9rences", - "TabPassword": "Mot de passe", - "TabLibraryAccess": "Acc\u00e8s aux biblioth\u00e8ques", - "TabAccess": "Acc\u00e8s", - "TabImage": "Image", - "TabProfile": "Profil", - "TabMetadata": "M\u00e9tadonn\u00e9es", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titres", - "HeaderDeviceAccess": "Acc\u00e8s \u00e0 l'appareil", - "OptionEnableAccessFromAllDevices": "Autoriser l'acc\u00e8s \u00e0 tous les appareils", - "OptionEnableAccessToAllChannels": "Activer l'acc\u00e8s \u00e0 toutes les cha\u00eenes", - "OptionEnableAccessToAllLibraries": "Activer l'acc\u00e8s \u00e0 toutes les librairies", - "DeviceAccessHelp": "Ceci ne s'applique qu'aux appareils qui peuvent \u00eatre identifi\u00e9s de mani\u00e8re unique et qui n'emp\u00eachent pas l'acc\u00e8s au navigateur. Le filtrage de l'acc\u00e8s aux appareil par utilisateur emp\u00eachera l'utilisation de nouveaux appareils jusqu'\u00e0 ce qu'ils soient approuv\u00e9s ici.", - "LabelDisplayMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes manquants dans les saisons", - "LabelUnairedMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes non diffus\u00e9s dans les saisons", - "HeaderVideoPlaybackSettings": "Param\u00e8tres de lecture video", - "HeaderPlaybackSettings": "Param\u00e8tres de lecture", - "LabelAudioLanguagePreference": "Param\u00e8tres de langue audio:", - "LabelSubtitleLanguagePreference": "Param\u00e8tres de langue de sous-titre", - "OptionDefaultSubtitles": "Par d\u00e9faut", - "OptionOnlyForcedSubtitles": "Seulement les sous-titres forc\u00e9s", - "OptionAlwaysPlaySubtitles": "Toujours afficher les sous-titres", - "OptionNoSubtitles": "Aucun sous-titre", - "OptionDefaultSubtitlesHelp": "Les sous-titres de la langue pr\u00e9f\u00e9r\u00e9e seront charg\u00e9s lorsque la langue de la piste audio est \u00e9trang\u00e8re.", - "OptionOnlyForcedSubtitlesHelp": "Seuls les sous-titres forc\u00e9s seront charg\u00e9s.", - "OptionAlwaysPlaySubtitlesHelp": "Les sous-titres correspondants \u00e0 la langue pr\u00e9f\u00e9r\u00e9e seront charg\u00e9s quelque soit la langue de la piste audio.", - "OptionNoSubtitlesHelp": "Par d\u00e9faut, les sous-titres ne seront pas charg\u00e9s.", - "TabProfiles": "Profils", - "TabSecurity": "S\u00e9curit\u00e9", - "ButtonAddUser": "Ajouter utilisateur", - "ButtonAddLocalUser": "Ajouter un utilisateur local", - "ButtonInviteUser": "Inviter un utilisateur", - "ButtonSave": "Sauvegarder", - "ButtonResetPassword": "R\u00e9initialiser le mot de passe", - "LabelNewPassword": "Nouveau mot de passe :", - "LabelNewPasswordConfirm": "Confirmer le nouveau mot de passe :", - "HeaderCreatePassword": "Cr\u00e9er un mot de passe", - "LabelCurrentPassword": "Mot de passe actuel :", - "LabelMaxParentalRating": "Note maximale d'\u00e9valuation de contr\u00f4le parental:", - "MaxParentalRatingHelp": "Le contenu avec une note d'\u00e9valuation de contr\u00f4le parental plus \u00e9lev\u00e9e ne sera pas visible par cet utilisateur.", - "LibraryAccessHelp": "Selectionnez le r\u00e9pertoire de m\u00e9dia \u00e0 partager avec cet utilisateur. Les administrateurs pourront modifier tous les r\u00e9pertoires en utilisant le gestionnaire de m\u00e9tadonn\u00e9es.", - "ChannelAccessHelp": "S\u00e9lectionner les cha\u00eenes \u00e0 partager avec cet utilisateur. Les administrateurs pourront modifier toutes les cha\u00eenes par le gestionnaire de m\u00e9tadonn\u00e9es.", - "ButtonDeleteImage": "Supprimer l'image", - "LabelSelectUsers": "S\u00e9lectionner des utilisateurs:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Uploader une nouvelle image", - "LabelDropImageHere": "Placer l'image ici", - "ImageUploadAspectRatioHelp": "Rapport d'aspect 1:1 recommand\u00e9. Seulement JPG\/PNG.", - "MessageNothingHere": "Rien ici.", - "MessagePleaseEnsureInternetMetadata": "Veuillez vous assurer que le t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es depuis Internet est activ\u00e9.", - "TabSuggested": "Sugg\u00e9r\u00e9s", - "TabLatest": "Plus r\u00e9cents", - "TabUpcoming": "\u00c0 venir", - "TabShows": "S\u00e9ries", - "TabEpisodes": "\u00c9pisodes", - "TabGenres": "Genres", - "TabPeople": "Personnes", - "TabNetworks": "R\u00e9seaux", - "HeaderUsers": "Utilisateurs", - "HeaderFilters": "Filtres:", - "ButtonFilter": "Filtre", - "OptionFavorite": "Favoris", - "OptionLikes": "Aim\u00e9s", - "OptionDislikes": "Non aim\u00e9s", - "OptionActors": "Acteur(e)s", - "OptionGuestStars": "Invit\u00e9s sp\u00e9ciaux", - "OptionDirectors": "R\u00e9alisateurs", - "OptionWriters": "Auteur(e)s", - "OptionProducers": "Producteurs", - "HeaderResume": "Reprendre", - "HeaderNextUp": "Prochains \u00e0 voir", - "NoNextUpItemsMessage": "Aucun \u00e9l\u00e9ment trouv\u00e9. Commencez \u00e0 regarder vos s\u00e9ries!", - "HeaderLatestEpisodes": "\u00c9pisodes les plus r\u00e9cents", - "HeaderPersonTypes": "Types de personne:", - "TabSongs": "Chansons", - "TabAlbums": "Albums", - "TabArtists": "Artistes", - "TabAlbumArtists": "Artistes sur l'album", - "TabMusicVideos": "Videos musicales", - "ButtonSort": "Tri", - "HeaderSortBy": "Trier par:", - "HeaderSortOrder": "Ordre de tri :", - "OptionPlayed": "Lu", - "OptionUnplayed": "Non lu", - "OptionAscending": "Ascendant", - "OptionDescending": "Descendant", - "OptionRuntime": "Dur\u00e9e", - "OptionReleaseDate": "Date de sortie", - "OptionPlayCount": "Nombre de lectures", - "OptionDatePlayed": "Date lu", - "OptionDateAdded": "Date d'ajout", - "OptionAlbumArtist": "Artiste de l'album", - "OptionArtist": "Artiste", - "OptionAlbum": "Album", - "OptionTrackName": "Titre", - "OptionCommunityRating": "Note de la communaut\u00e9", - "OptionNameSort": "Nom", - "OptionFolderSort": "R\u00e9pertoires", - "OptionBudget": "Budget", - "OptionRevenue": "Recettes", - "OptionPoster": "Affiche", - "OptionPosterCard": "Carte Affiche", - "OptionBackdrop": "Image d'arri\u00e8re-plan", - "OptionTimeline": "Chronologie", - "OptionThumb": "Vignette", - "OptionThumbCard": "Carte Vignette", - "OptionBanner": "Banni\u00e8re", - "OptionCriticRating": "Note des critiques", - "OptionVideoBitrate": "D\u00e9bit vid\u00e9o", - "OptionResumable": "Reprise possible", - "ScheduledTasksHelp": "S\u00e9lectionnez une t\u00e2che pour ajuster sa programmation.", - "ScheduledTasksTitle": "T\u00e2ches planifi\u00e9es", - "TabMyPlugins": "Mes plugins", - "TabCatalog": "Catalogue", - "TitlePlugins": "Plugins", "HeaderAutomaticUpdates": "Mises \u00e0 jour automatiques", "HeaderNowPlaying": "Lecture en cours", "HeaderLatestAlbums": "Derniers albums", @@ -917,6 +689,7 @@ "LabelChannelDownloadAgeHelp": "Le contenu t\u00e9l\u00e9charg\u00e9 plus vieux que cette valeur sera supprim\u00e9. Il restera disponible \u00e0 la lecture par streaming Internet.", "ChannelSettingsFormHelp": "Installer des cha\u00eenes comme \"Trailers\" et \"Vimeo\" dans le catalogue des plugins.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Listes de lecture", "ViewTypeMovies": "Films", "ViewTypeTvShows": "TV", "ViewTypeGames": "Jeux", @@ -1159,6 +932,7 @@ "LabelIfYouWishToContinueWithDeletion": "Si vous souhaitez continuer, veuillez confirmer en entrant la valeur de :", "ButtonIdentify": "Identifier", "LabelAlbumArtist": "Album de l'artiste", + "LabelAlbumArtists": "Artistes de l'album :", "LabelAlbum": "Album :", "LabelCommunityRating": "Note de la communaut\u00e9", "LabelVoteCount": "Nombre de votes", @@ -1371,5 +1145,245 @@ "LabelTagFilterMode": "Mode :", "LabelTagFilterAllowModeHelp": "Si l'autorisation par tags est appliqu\u00e9e \u00e0 un contenu d'un sous-r\u00e9pertoire, les r\u00e9pertoires parents devront \u00e9galement \u00eatre marqu\u00e9s avec ces m\u00eames tags.", "HeaderThisUserIsCurrentlyDisabled": "Cet utilisateur est actuellement d\u00e9sactiv\u00e9", - "MessageReenableUser": "Voir ci-dessous pour le r\u00e9activer" + "MessageReenableUser": "Voir ci-dessous pour le r\u00e9activer", + "LabelEnableInternetMetadataForTvPrograms": "T\u00e9l\u00e9charger les m\u00e9ta-donn\u00e9es depuis Internet pour :", + "OptionTVMovies": "T\u00e9l\u00e9films", + "HeaderUpcomingMovies": "Films \u00e0 venir", + "HeaderUpcomingPrograms": "Programmes \u00e0 venir", + "ButtonMoreItems": "Plus...", + "LabelShowLibraryTileNames": "Voir les noms des affiches de la biblioth\u00e8que", + "LabelShowLibraryTileNamesHelp": "D\u00e9termine si les noms doivent \u00eatre affich\u00e9s en dessous des affiches de la biblioth\u00e8que sur la page d'accueil", + "LabelExit": "Quitter", + "LabelVisitCommunity": "Visiter la Communaut\u00e9", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Documentation API", + "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", + "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", + "LabelConfigureMediaBrowser": "Configurer Media Browser", + "LabelOpenLibraryViewer": "Ouvrir le navigateur de biblioth\u00e8que", + "LabelRestartServer": "Red\u00e9marrer le Serveur", + "LabelShowLogWindow": "Afficher la fen\u00eatre du journal d'\u00e9v\u00e8nements", + "LabelPrevious": "Pr\u00e9c\u00e9dent", + "LabelFinish": "Terminer", + "LabelNext": "Suivant", + "LabelYoureDone": "Vous avez Termin\u00e9!", + "WelcomeToMediaBrowser": "Bienvenue sur Media Browser !", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Cet assistant vous guidera dans le processus de configuration. Pour commencer, merci de s\u00e9lectionner votre langue pr\u00e9f\u00e9r\u00e9e.", + "TellUsAboutYourself": "Parlez-nous de vous", + "ButtonQuickStartGuide": "Guide de d\u00e9marrage rapide", + "LabelYourFirstName": "Votre pr\u00e9nom:", + "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront \u00eatre ajout\u00e9s ult\u00e9rieurement \u00e0 partir du tableau de bord.", + "UserProfilesIntro": "Media Browser supporte nativement les profils utilisateurs, donnant la possibilit\u00e9 pour chaque utilisateur d'avoir ses propres param\u00e8tres d'affichage, \u00e9tats de lecture et param\u00e8tres de contr\u00f4le parental.", + "LabelWindowsService": "Service Windows", + "AWindowsServiceHasBeenInstalled": "Un service Windows a \u00e9t\u00e9 install\u00e9.", + "WindowsServiceIntro1": "Media Browser fonctionne normalement en tant qu'application sur le bureau avec une ic\u00f4ne dans la barre des t\u00e2ches, mais si vous pr\u00e9f\u00e9rez le lancer en tant que service d'arri\u00e8re-plan, il peut \u00eatre d\u00e9marr\u00e9 via le gestionnaire de services Windows.", + "WindowsServiceIntro2": "Si le service Windows est utilis\u00e9, veuillez noter qu'il ne peut pas fonctionner en m\u00eame temps que l'application dans la barre des t\u00e2ches, vous devrez donc fermer l'application de la barre des t\u00e2ches pour pouvoir ex\u00e9cuter le service. Le service devra aussi \u00eatre configur\u00e9 avec les droits administrateurs via le panneau de configuration. Veuillez noter qu'actuellement, la mise \u00e0 jour automatique du service n'est pas disponible, les mises \u00e0 jour devront donc se faire manuellement.", + "WizardCompleted": "C'est tout ce dont nous avons besoin pour le moment. Media Browser a commenc\u00e9 la collecte d'informations dans votre biblioth\u00e8que de m\u00e9dias. Consultez quelques-une de nos applications, puis cliquez sur Terminer<\/b> pour consulter le tableau de bord du serveur<\/b>.", + "LabelConfigureSettings": "Configurer les param\u00e8tres", + "LabelEnableVideoImageExtraction": "Activer l'extraction d'images des videos", + "VideoImageExtractionHelp": "Pour les vid\u00e9os sans image et pour lesquelles nous n'avons pas trouv\u00e9 d'images sur Internet. Ce processus prolongera la mise \u00e0 jour initiale de la biblioth\u00e8que mais offrira un meilleur rendu visuel.", + "LabelEnableChapterImageExtractionForMovies": "Extraire les images de chapitres des films", + "LabelChapterImageExtractionForMoviesHelp": "L'extraction d'images de chapitres permettra aux clients d'afficher des menus visuels pour la s\u00e9lection des sc\u00e8nes. Le processus peut \u00eatre long et consommateur de ressources du processeur et de stockage (plusieurs gigaoctets). Il s'ex\u00e9cute comme t\u00e2che programm\u00e9e mais son param\u00e9trage peut \u00eatre modifi\u00e9 dans les options des t\u00e2ches programm\u00e9es. Il est d\u00e9conseill\u00e9 d'ex\u00e9cuter cette t\u00e2che durant les heures d'utilisation normales.", + "LabelEnableAutomaticPortMapping": "Activer la configuration automatique de port", + "LabelEnableAutomaticPortMappingHelp": "UPnP permet la configuration automatique des routeurs pour un acc\u00e8s \u00e0 distance facile. Ceci peut ne pas fonctionner sur certains mod\u00e8les de routeur.", + "HeaderTermsOfService": "Conditions d'utilisation de Media Browser", + "MessagePleaseAcceptTermsOfService": "Veuillez accepter les conditions d'utilisations et la politique de confidentialit\u00e9 avant de continuer.", + "OptionIAcceptTermsOfService": "J'accepte les conditions d'utilisation.", + "ButtonPrivacyPolicy": "Politique de confidentialit\u00e9", + "ButtonTermsOfService": "Conditions d'utilisation", + "HeaderDeveloperOptions": "Options de d\u00e9veloppement", + "OptionEnableWebClientResponseCache": "Activer la mise en cache des r\u00e9ponses du client web", + "OptionDisableForDevelopmentHelp": "Vous pouvez configurer ces options selon vos besoins de d\u00e9veloppement.", + "OptionEnableWebClientResourceMinification": "Activer la minimisation des ressources du client web", + "LabelDashboardSourcePath": "Chemin des fichiers sources du client web", + "LabelDashboardSourcePathHelp": "Si vous ex\u00e9cutez le serveur \u00e0 partir des sources, veuillez sp\u00e9cifier le chemin du r\u00e9pertoire dashboard-ui. Tous les fichiers du client web seront servis \u00e0 partir de cet endroit.", + "ButtonConvertMedia": "Convertir le m\u00e9dia", + "ButtonOrganize": "Organiser", + "LinkedToMediaBrowserConnect": "Connect\u00e9 \u00e0 Media Browser Connect", + "HeaderSupporterBenefits": "Avantages de supporteur", + "HeaderAddUser": "Ajouter un utilisateur", + "LabelAddConnectSupporterHelp": "Pour ajouter un utilisateur non list\u00e9, vous devez d'abord lier son compte \u00e0 Media Browser Connect depuis sa page de profil.", + "LabelPinCode": "Code PIN:", + "ButtonOk": "Ok", + "ButtonCancel": "Annuler", + "ButtonExit": "Sortie", + "ButtonNew": "Nouveau", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Vid\u00e9o", + "HeaderPaths": "Chemins", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Code Easy Pin", + "HeaderGrownupsOnly": "R\u00e9serv\u00e9 aux adultes !", + "DividerOr": "-- ou --", + "HeaderInstalledServices": "Services install\u00e9s", + "HeaderAvailableServices": "Services disponibles", + "MessageNoServicesInstalled": "Aucun service n'est actuellement install\u00e9.", + "HeaderToAccessPleaseEnterEasyPinCode": "Veuillez entrez votre code Easy PIN :", + "KidsModeAdultInstruction": "Cliquez sur l'ic\u00f4ne en forme de cadenas en bas \u00e0 droite pour configurer ou quitter le mode Enfants. Votre code PIN sera requis.", + "ButtonConfigurePinCode": "Configurer le code PIN", + "HeaderAdultsReadHere": "Section r\u00e9serv\u00e9e aux adultes!", + "RegisterWithPayPal": "S'enregistrer avec PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync n\u00e9cessite un abonnement actif comme supporteur", + "HeaderEnjoyDayTrial": "Profitez d'une p\u00e9riode d'essai de 14 jours", + "LabelSyncTempPath": "R\u00e9pertoire de fichiers temporaires :", + "LabelSyncTempPathHelp": "Sp\u00e9cifiez un r\u00e9pertoire de travail pour la synchronisation. Les fichiers r\u00e9sultant de la conversion de m\u00e9dias au cours du processus de synchronisation seront stock\u00e9s ici.", + "LabelCustomCertificatePath": "Chemin vers le certificat personnalis\u00e9 :", + "LabelCustomCertificatePathHelp": "Fournissez votre propre certificat SSL au format .pfx. Sinon, le serveur cr\u00e9era un certificat auto-sign\u00e9.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Faire un don avec Paypal", + "OptionDetectArchiveFilesAsMedia": "Reconna\u00eetre les fichiers archives comme m\u00e9dias", + "OptionDetectArchiveFilesAsMediaHelp": "Activez cette option pour reconna\u00eetre les fichiers portant l'extension .rar ou .zip comme des fichiers de m\u00e9dias. ", + "LabelEnterConnectUserName": "Nom d'utilisateur ou adresse email :", + "LabelEnterConnectUserNameHelp": "Ceci est le nom d'utilisateur ou mot de passe de votre compte en ligne Media Browser.", + "LabelEnableEnhancedMovies": "Activer le mode d'affichage \u00e9tendu des films", + "LabelEnableEnhancedMoviesHelp": "Lorsque ce mode est activ\u00e9, les films seront affich\u00e9s comme des dossiers et incluront les bandes-annonces, les extras, l'\u00e9quipe de tournage et les autre contenus li\u00e9s.", + "HeaderSyncJobInfo": "T\u00e2che de synchronisation", + "FolderTypeMixed": "Contenus m\u00e9lang\u00e9s", + "FolderTypeMovies": "Films", + "FolderTypeMusic": "Musique", + "FolderTypeAdultVideos": "Vid\u00e9os Adultes", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Vid\u00e9os Musical", + "FolderTypeHomeVideos": "Vid\u00e9os personnelles", + "FolderTypeGames": "Jeux", + "FolderTypeBooks": "Livres", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "H\u00e9rite", + "LabelContentType": "Type de contenu :", + "TitleScheduledTasks": "T\u00e2ches planifi\u00e9es", + "HeaderSetupLibrary": "Configurer votre biblioth\u00e8que de m\u00e9dia", + "ButtonAddMediaFolder": "Ajouter un r\u00e9pertoire de m\u00e9dia", + "LabelFolderType": "Type de r\u00e9pertoire:", + "ReferToMediaLibraryWiki": "Se r\u00e9f\u00e9rer au wiki des biblioth\u00e8ques de m\u00e9dia", + "LabelCountry": "Pays:", + "LabelLanguage": "Langue:", + "LabelTimeLimitHours": "Limite de temps (heures) :", + "ButtonJoinTheDevelopmentTeam": "Joignez-vous \u00e0 l'\u00e9quipe de d\u00e9veloppement", + "HeaderPreferredMetadataLanguage": "Langue pr\u00e9f\u00e9r\u00e9e pour les m\u00e9tadonn\u00e9es:", + "LabelSaveLocalMetadata": "Enregistrer les images et m\u00e9tadonn\u00e9es dans les r\u00e9pertoires de m\u00e9dia", + "LabelSaveLocalMetadataHelp": "L'enregistrement des images et des m\u00e9tadonn\u00e9es dans le r\u00e9pertoire de m\u00e9dia les placera \u00e0 un endroit o\u00f9 elles seront facilement modifiables.", + "LabelDownloadInternetMetadata": "T\u00e9l\u00e9charger les images et m\u00e9tadonn\u00e9es depuis Internet", + "LabelDownloadInternetMetadataHelp": "Media Browser peut t\u00e9l\u00e9charger des informations compl\u00e9mentaires sur vos m\u00e9dias pour en enrichir la pr\u00e9sentation.", + "TabPreferences": "Pr\u00e9f\u00e9rences", + "TabPassword": "Mot de passe", + "TabLibraryAccess": "Acc\u00e8s aux biblioth\u00e8ques", + "TabAccess": "Acc\u00e8s", + "TabImage": "Image", + "TabProfile": "Profil", + "TabMetadata": "M\u00e9tadonn\u00e9es", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titres", + "HeaderDeviceAccess": "Acc\u00e8s \u00e0 l'appareil", + "OptionEnableAccessFromAllDevices": "Autoriser l'acc\u00e8s \u00e0 tous les appareils", + "OptionEnableAccessToAllChannels": "Activer l'acc\u00e8s \u00e0 toutes les cha\u00eenes", + "OptionEnableAccessToAllLibraries": "Activer l'acc\u00e8s \u00e0 toutes les librairies", + "DeviceAccessHelp": "Ceci ne s'applique qu'aux appareils qui peuvent \u00eatre identifi\u00e9s de mani\u00e8re unique et qui n'emp\u00eachent pas l'acc\u00e8s au navigateur. Le filtrage de l'acc\u00e8s aux appareil par utilisateur emp\u00eachera l'utilisation de nouveaux appareils jusqu'\u00e0 ce qu'ils soient approuv\u00e9s ici.", + "LabelDisplayMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes manquants dans les saisons", + "LabelUnairedMissingEpisodesWithinSeasons": "Afficher les \u00e9pisodes non diffus\u00e9s dans les saisons", + "HeaderVideoPlaybackSettings": "Param\u00e8tres de lecture video", + "HeaderPlaybackSettings": "Param\u00e8tres de lecture", + "LabelAudioLanguagePreference": "Param\u00e8tres de langue audio:", + "LabelSubtitleLanguagePreference": "Param\u00e8tres de langue de sous-titre", + "OptionDefaultSubtitles": "Par d\u00e9faut", + "OptionOnlyForcedSubtitles": "Seulement les sous-titres forc\u00e9s", + "OptionAlwaysPlaySubtitles": "Toujours afficher les sous-titres", + "OptionNoSubtitles": "Aucun sous-titre", + "OptionDefaultSubtitlesHelp": "Les sous-titres de la langue pr\u00e9f\u00e9r\u00e9e seront charg\u00e9s lorsque la langue de la piste audio est \u00e9trang\u00e8re.", + "OptionOnlyForcedSubtitlesHelp": "Seuls les sous-titres forc\u00e9s seront charg\u00e9s.", + "OptionAlwaysPlaySubtitlesHelp": "Les sous-titres correspondants \u00e0 la langue pr\u00e9f\u00e9r\u00e9e seront charg\u00e9s quelque soit la langue de la piste audio.", + "OptionNoSubtitlesHelp": "Par d\u00e9faut, les sous-titres ne seront pas charg\u00e9s.", + "TabProfiles": "Profils", + "TabSecurity": "S\u00e9curit\u00e9", + "ButtonAddUser": "Ajouter utilisateur", + "ButtonAddLocalUser": "Ajouter un utilisateur local", + "ButtonInviteUser": "Inviter un utilisateur", + "ButtonSave": "Sauvegarder", + "ButtonResetPassword": "R\u00e9initialiser le mot de passe", + "LabelNewPassword": "Nouveau mot de passe :", + "LabelNewPasswordConfirm": "Confirmer le nouveau mot de passe :", + "HeaderCreatePassword": "Cr\u00e9er un mot de passe", + "LabelCurrentPassword": "Mot de passe actuel :", + "LabelMaxParentalRating": "Note maximale d'\u00e9valuation de contr\u00f4le parental:", + "MaxParentalRatingHelp": "Le contenu avec une note d'\u00e9valuation de contr\u00f4le parental plus \u00e9lev\u00e9e ne sera pas visible par cet utilisateur.", + "LibraryAccessHelp": "Selectionnez le r\u00e9pertoire de m\u00e9dia \u00e0 partager avec cet utilisateur. Les administrateurs pourront modifier tous les r\u00e9pertoires en utilisant le gestionnaire de m\u00e9tadonn\u00e9es.", + "ChannelAccessHelp": "S\u00e9lectionner les cha\u00eenes \u00e0 partager avec cet utilisateur. Les administrateurs pourront modifier toutes les cha\u00eenes par le gestionnaire de m\u00e9tadonn\u00e9es.", + "ButtonDeleteImage": "Supprimer l'image", + "LabelSelectUsers": "S\u00e9lectionner des utilisateurs:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Uploader une nouvelle image", + "LabelDropImageHere": "Placer l'image ici", + "ImageUploadAspectRatioHelp": "Rapport d'aspect 1:1 recommand\u00e9. Seulement JPG\/PNG.", + "MessageNothingHere": "Rien ici.", + "MessagePleaseEnsureInternetMetadata": "Veuillez vous assurer que le t\u00e9l\u00e9chargement des m\u00e9tadonn\u00e9es depuis Internet est activ\u00e9.", + "TabSuggested": "Sugg\u00e9r\u00e9s", + "TabLatest": "Plus r\u00e9cents", + "TabUpcoming": "\u00c0 venir", + "TabShows": "S\u00e9ries", + "TabEpisodes": "\u00c9pisodes", + "TabGenres": "Genres", + "TabPeople": "Personnes", + "TabNetworks": "R\u00e9seaux", + "HeaderUsers": "Utilisateurs", + "HeaderFilters": "Filtres:", + "ButtonFilter": "Filtre", + "OptionFavorite": "Favoris", + "OptionLikes": "Aim\u00e9s", + "OptionDislikes": "Non aim\u00e9s", + "OptionActors": "Acteur(e)s", + "OptionGuestStars": "Invit\u00e9s sp\u00e9ciaux", + "OptionDirectors": "R\u00e9alisateurs", + "OptionWriters": "Auteur(e)s", + "OptionProducers": "Producteurs", + "HeaderResume": "Reprendre", + "HeaderNextUp": "Prochains \u00e0 voir", + "NoNextUpItemsMessage": "Aucun \u00e9l\u00e9ment trouv\u00e9. Commencez \u00e0 regarder vos s\u00e9ries!", + "HeaderLatestEpisodes": "\u00c9pisodes les plus r\u00e9cents", + "HeaderPersonTypes": "Types de personne:", + "TabSongs": "Chansons", + "TabAlbums": "Albums", + "TabArtists": "Artistes", + "TabAlbumArtists": "Artistes sur l'album", + "TabMusicVideos": "Videos musicales", + "ButtonSort": "Tri", + "HeaderSortBy": "Trier par:", + "HeaderSortOrder": "Ordre de tri :", + "OptionPlayed": "Lu", + "OptionUnplayed": "Non lu", + "OptionAscending": "Ascendant", + "OptionDescending": "Descendant", + "OptionRuntime": "Dur\u00e9e", + "OptionReleaseDate": "Date de sortie", + "OptionPlayCount": "Nombre de lectures", + "OptionDatePlayed": "Date lu", + "OptionDateAdded": "Date d'ajout", + "OptionAlbumArtist": "Artiste de l'album", + "OptionArtist": "Artiste", + "OptionAlbum": "Album", + "OptionTrackName": "Titre", + "OptionCommunityRating": "Note de la communaut\u00e9", + "OptionNameSort": "Nom", + "OptionFolderSort": "R\u00e9pertoires", + "OptionBudget": "Budget", + "OptionRevenue": "Recettes", + "OptionPoster": "Affiche", + "OptionPosterCard": "Carte Affiche", + "OptionBackdrop": "Image d'arri\u00e8re-plan", + "OptionTimeline": "Chronologie", + "OptionThumb": "Vignette", + "OptionThumbCard": "Carte Vignette", + "OptionBanner": "Banni\u00e8re", + "OptionCriticRating": "Note des critiques", + "OptionVideoBitrate": "D\u00e9bit vid\u00e9o", + "OptionResumable": "Reprise possible", + "ScheduledTasksHelp": "S\u00e9lectionnez une t\u00e2che pour ajuster sa programmation.", + "ScheduledTasksTitle": "T\u00e2ches planifi\u00e9es", + "TabMyPlugins": "Mes plugins", + "TabCatalog": "Catalogue", + "TitlePlugins": "Plugins" } \ 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 f5d9421d1..46173c5da 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -1,293 +1,4 @@ { - "LabelExit": "\u05d9\u05e6\u05d9\u05d0\u05d4", - "LabelVisitCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u05e8\u05d2\u05d9\u05dc", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u05d3\u05e4\u05d3\u05e3 \u05d1\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4", - "LabelConfigureMediaBrowser": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea Media Browser", - "LabelOpenLibraryViewer": "\u05e4\u05ea\u05d7 \u05de\u05e6\u05d9\u05d2 \u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", - "LabelRestartServer": "\u05d0\u05ea\u05d7\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea", - "LabelShowLogWindow": "\u05d4\u05e8\u05d0\u05d4 \u05d7\u05dc\u05d5\u05df \u05dc\u05d5\u05d2", - "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", - "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", - "LabelNext": "\u05d4\u05d1\u05d0", - "LabelYoureDone": "\u05e1\u05d9\u05d9\u05de\u05ea!", - "WelcomeToMediaBrowser": "\u05d1\u05e8\u05d5\u05da \u05d4\u05d1\u05d0 \u05dc- Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u05d0\u05e9\u05e3 \u05d6\u05d4 \u05d9\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05d1\u05d4\u05ea\u05dc\u05d9\u05da \u05d4\u05d4\u05ea\u05e7\u05e0\u05d4.", - "TellUsAboutYourself": "\u05e1\u05e4\u05e8 \u05dc\u05e0\u05d5 \u05e2\u05dc \u05e2\u05e6\u05de\u05da", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u05e9\u05de\u05da \u05d4\u05e4\u05e8\u05d8\u05d9:", - "MoreUsersCanBeAddedLater": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd \u05de\u05d0\u05d5\u05d7\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4.", - "UserProfilesIntro": "Media Browser \u05db\u05d5\u05dc\u05dc \u05ea\u05de\u05d9\u05db\u05d4 \u05de\u05d5\u05d1\u05e0\u05ea \u05d1\u05de\u05e1\u05e4\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd. \u05d5\u05de\u05d0\u05e4\u05e9\u05e8 \u05dc\u05db\u05dc \u05d0\u05d7\u05d3 \u05de\u05d4\u05dd \u05ea\u05e6\u05d5\u05d2\u05ea \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea, \u05de\u05e6\u05d1 \u05e0\u05d2\u05df \u05d5\u05d1\u05e7\u05e8\u05ea \u05d4\u05d5\u05e8\u05d9\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea.", - "LabelWindowsService": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1", - "AWindowsServiceHasBeenInstalled": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d4\u05d5\u05ea\u05e7\u05df", - "WindowsServiceIntro1": "\u05e9\u05e8\u05ea Media Browser \u05e8\u05e5 \u05db\u05ea\u05d5\u05db\u05e0\u05ea \u05e9\u05d5\u05dc\u05d7\u05df \u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd \u05d0\u05d9\u05e7\u05d5\u05df \u05d1\u05e9\u05d5\u05e8\u05ea \u05d4\u05de\u05e9\u05d9\u05de\u05d5\u05ea, \u05d0\u05d1\u05dc \u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e2\u05d3\u05d9\u05e3 \u05dc\u05d4\u05e8\u05d9\u05e5 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05db\u05e9\u05d9\u05e8\u05d5\u05ea \u05e8\u05e7\u05e2, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05de\u05ea\u05d5\u05da \u05d7\u05dc\u05d5\u05df \u05d4\u05d1\u05e7\u05d4 \u05e9\u05dc \u05e9\u05d9\u05e8\u05d5\u05ea\u05d9 \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d1\u05de\u05e7\u05d5\u05dd.", - "WindowsServiceIntro2": "\u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1, \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e8\u05d5\u05e5 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d6\u05de\u05df \u05e9\u05d4\u05e9\u05e8\u05ea \u05db\u05d1\u05e8 \u05e2\u05d5\u05d1\u05d3 \u05d1\u05e8\u05e7\u05e2. \u05dc\u05db\u05df \u05ea\u05e6\u05d8\u05e8\u05da \u05dc\u05e1\u05d2\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea. \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d2\u05dd \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d3\u05e8 \u05e2\u05dd \u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05de\u05e0\u05d4\u05dc \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4. \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e7\u05d7 \u05d1\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05db\u05e8\u05d2\u05e2 \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05e2\u05e6\u05de\u05d5 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea, \u05d5\u05dc\u05db\u05df \u05d2\u05d9\u05e8\u05e1\u05d0\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d9\u05e6\u05e8\u05d9\u05db\u05d5 \u05e2\u05d9\u05d3\u05db\u05d5\u05df \u05d9\u05d3\u05e0\u05d9.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u05e7\u05d1\u05e2 \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", - "LabelEnableVideoImageExtraction": "\u05d0\u05e4\u05e9\u05e8 \u05e9\u05dc\u05d9\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4 \u05de\u05e1\u05e8\u05d8", - "VideoImageExtractionHelp": "\u05e2\u05d1\u05d5\u05e8 \u05e1\u05e8\u05d8\u05d9\u05dd \u05e9\u05d0\u05d9\u05df \u05dc\u05d4\u05dd \u05db\u05d1\u05e8 \u05ea\u05de\u05d5\u05e0\u05d4, \u05d5\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4 \u05dc\u05d4\u05dd \u05d0\u05d7\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8. \u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5 \u05ea\u05d5\u05e1\u05d9\u05e3 \u05de\u05e2\u05d8 \u05d6\u05de\u05df \u05dc\u05ea\u05d4\u05dc\u05d9\u05da \u05e1\u05e8\u05d9\u05e7\u05ea \u05d4\u05ea\u05e7\u05d9\u05d9\u05d4 \u05d4\u05e8\u05d0\u05e9\u05d5\u05e0\u05d9, \u05d0\u05da \u05ea\u05e1\u05e4\u05e7 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05e4\u05d4.", - "LabelEnableChapterImageExtractionForMovies": "\u05d7\u05dc\u05e5 \u05ea\u05de\u05d5\u05e0\u05ea \u05e4\u05e8\u05e7 \u05dc\u05e1\u05e8\u05d8\u05d9\u05dd", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u05d0\u05e4\u05e9\u05e8 \u05de\u05d9\u05e4\u05d5\u05d9 \u05e4\u05d5\u05e8\u05d8\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", - "LabelEnableAutomaticPortMappingHelp": "UPnP \u05de\u05d0\u05e4\u05e9\u05e8 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8 \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05de\u05e8\u05d5\u05d7\u05e7\u05ea \u05d1\u05e7\u05dc\u05d5\u05ea. \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3 \u05e2\u05dd \u05db\u05dc \u05d3\u05d2\u05de\u05d9 \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8\u05d9\u05dd.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "\u05d0\u05e9\u05e8", - "ButtonCancel": "\u05d1\u05d8\u05dc", - "ButtonExit": "Exit", - "ButtonNew": "\u05d7\u05d3\u05e9", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da", - "ButtonAddMediaFolder": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d9\u05e7\u05d9\u05d9\u05ea \u05de\u05d3\u05d9\u05d4", - "LabelFolderType": "\u05e1\u05d5\u05d2 \u05d4\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4:", - "ReferToMediaLibraryWiki": "\u05e4\u05e0\u05d4 \u05dc\u05de\u05d9\u05d3\u05e2 \u05d0\u05d5\u05d3\u05d5\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4.", - "LabelCountry": "\u05de\u05d3\u05d9\u05e0\u05d4:", - "LabelLanguage": "\u05e9\u05e4\u05d4:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u05e9\u05e4\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "LabelSaveLocalMetadata": "\u05e9\u05de\u05d5\u05e8 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d1\u05ea\u05d5\u05da \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4", - "LabelSaveLocalMetadataHelp": "\u05e9\u05de\u05d9\u05e8\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05d1\u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05ea\u05d0\u05e4\u05e9\u05e8 \u05e2\u05e8\u05d9\u05db\u05d4 \u05e0\u05d5\u05d7\u05d4 \u05d5\u05e7\u05dc\u05d4 \u05e9\u05dc\u05d4\u05dd.", - "LabelDownloadInternetMetadata": "\u05d4\u05d5\u05e8\u05d3 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05e8\u05e0\u05d8", - "LabelDownloadInternetMetadataHelp": "Media Browser \u05d9\u05db\u05d5\u05dc \u05dc\u05d4\u05d5\u05e8\u05d9\u05d3 \u05de\u05d9\u05d3\u05e2 \u05dc\u05d2\u05d1\u05d9 \u05e7\u05d1\u05e6\u05d9 \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da \u05db\u05d3\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05e2\u05e9\u05d9\u05e8\u05d4.", - "TabPreferences": "\u05d4\u05e2\u05d3\u05e4\u05d5\u05ea", - "TabPassword": "\u05e1\u05d9\u05e1\u05de\u05d0", - "TabLibraryAccess": "\u05d2\u05d9\u05e9\u05d4 \u05dc\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", - "TabAccess": "Access", - "TabImage": "\u05ea\u05de\u05d5\u05e0\u05d4", - "TabProfile": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc", - "TabMetadata": "Metadata", - "TabImages": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea", - "TabNotifications": "\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea", - "TabCollectionTitles": "\u05db\u05d5\u05ea\u05e8\u05d9\u05dd", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05dd \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", - "LabelUnairedMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05e9\u05e2\u05d3\u05d9\u05df \u05d0\u05dc \u05e9\u05d5\u05d3\u05e8\u05d5 \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", - "HeaderVideoPlaybackSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", - "HeaderPlaybackSettings": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", - "LabelAudioLanguagePreference": "\u05e9\u05e4\u05ea \u05e7\u05d5\u05dc \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "LabelSubtitleLanguagePreference": "\u05e9\u05e4\u05ea \u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd", - "TabSecurity": "\u05d1\u05d8\u05d9\u05d7\u05d5\u05ea", - "ButtonAddUser": "\u05d4\u05d5\u05e1\u05e3 \u05de\u05e9\u05ea\u05de\u05e9", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u05e9\u05de\u05d5\u05e8", - "ButtonResetPassword": "\u05d0\u05d9\u05e4\u05d5\u05e1 \u05e1\u05d9\u05e1\u05de\u05d0", - "LabelNewPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", - "LabelNewPasswordConfirm": "\u05d0\u05d9\u05de\u05d5\u05ea \u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", - "HeaderCreatePassword": "\u05e6\u05d5\u05e8 \u05e1\u05d9\u05e1\u05de\u05d0", - "LabelCurrentPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea:", - "LabelMaxParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05d5\u05e8\u05d9\u05dd \u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9:", - "MaxParentalRatingHelp": "\u05ea\u05d5\u05db\u05df \u05e2\u05dd \u05d3\u05d9\u05e8\u05d5\u05d2 \u05d2\u05d5\u05d1\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05d5\u05e1\u05ea\u05e8 \u05de\u05d4\u05de\u05e9\u05ea\u05de\u05e9.", - "LibraryAccessHelp": "\u05d1\u05d7\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05d0\u05e9\u05e8 \u05d9\u05e9\u05d5\u05ea\u05e4\u05d5 \u05e2\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9. \u05de\u05e0\u05d4\u05dc\u05d9\u05dd \u05d9\u05d5\u05db\u05dc\u05d5 \u05dc\u05e2\u05e8\u05d5\u05ea \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05d9\u05d3\u05e2.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "\u05de\u05d7\u05e7 \u05ea\u05de\u05d5\u05e0\u05d4", - "LabelSelectUsers": "\u05d1\u05d7\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd:", - "ButtonUpload": "\u05d4\u05e2\u05dc\u05d4", - "HeaderUploadNewImage": "\u05d4\u05e2\u05dc\u05d4 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "\u05de\u05d5\u05de\u05dc\u05e5 \u05d9\u05d7\u05e1 \u05d2\u05d5\u05d1\u05d4 \u05e9\u05dc 1:1. \u05e8\u05e7 JPG\/PNG.", - "MessageNothingHere": "\u05d0\u05d9\u05df \u05db\u05d0\u05df \u05db\u05dc\u05d5\u05dd.", - "MessagePleaseEnsureInternetMetadata": "\u05d1\u05d1\u05e7\u05e9\u05d4 \u05d5\u05d5\u05d3\u05d0 \u05db\u05d9 \u05d4\u05d5\u05e8\u05d3\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8 \u05de\u05d0\u05d5\u05e4\u05e9\u05e8\u05ea", - "TabSuggested": "\u05de\u05de\u05d5\u05dc\u05e5", - "TabLatest": "\u05d0\u05d7\u05e8\u05d5\u05df", - "TabUpcoming": "\u05d1\u05e7\u05e8\u05d5\u05d1", - "TabShows": "\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea", - "TabEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd", - "TabGenres": "\u05d6\u05d0\u05e0\u05e8\u05d9\u05dd", - "TabPeople": "\u05d0\u05e0\u05e9\u05d9\u05dd", - "TabNetworks": "\u05e8\u05e9\u05ea\u05d5\u05ea", - "HeaderUsers": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", - "HeaderFilters": "\u05de\u05e1\u05e0\u05e0\u05d9\u05dd:", - "ButtonFilter": "\u05de\u05e1\u05e0\u05df", - "OptionFavorite": "\u05de\u05d5\u05e2\u05d3\u05e4\u05d9\u05dd", - "OptionLikes": "\u05e0\u05d1\u05d7\u05e8\u05d9\u05dd", - "OptionDislikes": "\u05dc\u05d0 \u05d0\u05d5\u05d4\u05d1", - "OptionActors": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd", - "OptionGuestStars": "\u05e9\u05d7\u05e7\u05df \u05d0\u05d5\u05e8\u05d7", - "OptionDirectors": "\u05d1\u05de\u05d0\u05d9\u05dd", - "OptionWriters": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd", - "OptionProducers": "\u05de\u05e4\u05d9\u05e7\u05d9\u05dd", - "HeaderResume": "\u05d4\u05de\u05e9\u05da", - "HeaderNextUp": "\u05d4\u05d1\u05d0 \u05d1\u05ea\u05d5\u05e8", - "NoNextUpItemsMessage": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05db\u05dc\u05d5\u05dd. \u05d4\u05ea\u05d7\u05dc\u05ea \u05dc\u05e6\u05e4\u05d5\u05ea \u05d1\u05e1\u05d3\u05e8\u05d5\u05ea \u05e9\u05dc\u05da!", - "HeaderLatestEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", - "HeaderPersonTypes": "\u05e1\u05d5\u05d2\u05d9 \u05d0\u05e0\u05e9\u05d9\u05dd:", - "TabSongs": "\u05e9\u05d9\u05e8\u05d9\u05dd", - "TabAlbums": "\u05d0\u05dc\u05d1\u05d5\u05de\u05d9\u05dd", - "TabArtists": "\u05d0\u05de\u05e0\u05d9\u05dd", - "TabAlbumArtists": "\u05d0\u05de\u05e0\u05d9 \u05d0\u05dc\u05d1\u05d5\u05dd", - "TabMusicVideos": "\u05e7\u05dc\u05d9\u05e4\u05d9\u05dd", - "ButtonSort": "\u05de\u05d9\u05d9\u05df", - "HeaderSortBy": "\u05de\u05d9\u05d9\u05df \u05dc\u05e4\u05d9:", - "HeaderSortOrder": "\u05e1\u05d3\u05e8 \u05de\u05d9\u05d5\u05df:", - "OptionPlayed": "\u05e0\u05d5\u05d2\u05df", - "OptionUnplayed": "\u05dc\u05d0 \u05e0\u05d5\u05d2\u05df", - "OptionAscending": "\u05e1\u05d3\u05e8 \u05e2\u05d5\u05dc\u05d4", - "OptionDescending": "\u05e1\u05d3\u05e8 \u05d9\u05d5\u05e8\u05d3", - "OptionRuntime": "\u05de\u05e9\u05da", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "\u05de\u05e1\u05e4\u05e8 \u05d4\u05e9\u05de\u05e2\u05d5\u05ea", - "OptionDatePlayed": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e0\u05d9\u05d2\u05d5\u05df", - "OptionDateAdded": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05d5\u05e1\u05e4\u05d4", - "OptionAlbumArtist": "\u05d0\u05de\u05df \u05d0\u05dc\u05d1\u05d5\u05dd", - "OptionArtist": "\u05d0\u05de\u05df", - "OptionAlbum": "\u05d0\u05dc\u05d1\u05d5\u05dd", - "OptionTrackName": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05e8", - "OptionCommunityRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05e7\u05d4\u05d9\u05dc\u05d4", - "OptionNameSort": "\u05e9\u05dd", - "OptionFolderSort": "\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", - "OptionBudget": "\u05ea\u05e7\u05e6\u05d9\u05d1", - "OptionRevenue": "\u05d4\u05db\u05e0\u05e1\u05d5\u05ea", - "OptionPoster": "\u05e4\u05d5\u05e1\u05d8\u05e8", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2", - "OptionTimeline": "\u05e6\u05d9\u05e8 \u05d6\u05de\u05df", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "\u05d1\u05d0\u05e0\u05e8", - "OptionCriticRating": "\u05e6\u05d9\u05d5\u05df \u05de\u05d1\u05e7\u05e8\u05d9\u05dd", - "OptionVideoBitrate": "\u05e7\u05e6\u05ea \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5", - "OptionResumable": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05de\u05e9\u05d9\u05da", - "ScheduledTasksHelp": "\u05dc\u05d7\u05e5 \u05e2\u05dc \u05de\u05e9\u05d9\u05de\u05d4 \u05dc\u05e2\u05e8\u05d5\u05da \u05d0\u05ea \u05d4\u05ea\u05d6\u05de\u05d5\u05df \u05e9\u05dc\u05d4", - "ScheduledTasksTitle": "\u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05ea\u05d5\u05d6\u05de\u05e0\u05d5\u05ea", - "TabMyPlugins": "\u05d4\u05ea\u05d5\u05e1\u05e4\u05d9\u05dd \u05e9\u05dc\u05d9", - "TabCatalog": "\u05e7\u05d8\u05dc\u05d5\u05d2", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "\u05e2\u05d9\u05d3\u05db\u05d5\u05e0\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05dd", - "HeaderNowPlaying": "\u05de\u05e0\u05d2\u05df \u05e2\u05db\u05e9\u05d9\u05d5", - "HeaderLatestAlbums": "\u05d0\u05dc\u05d1\u05d5\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", - "HeaderLatestSongs": "\u05e9\u05d9\u05e8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", - "HeaderRecentlyPlayed": "\u05e0\u05d5\u05d2\u05e0\u05d5 \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4", - "HeaderFrequentlyPlayed": "\u05e0\u05d5\u05d2\u05e0\u05d5 \u05dc\u05e8\u05d5\u05d1", - "DevBuildWarning": "\u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05de\u05e4\u05ea\u05d7 \u05d4\u05df \u05d7\u05d5\u05d3 \u05d4\u05d7\u05e0\u05d9\u05ea. \u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05d0\u05dc\u05d4 \u05dc\u05d0 \u05e0\u05d1\u05d3\u05e7\u05d5 \u05d5\u05d4\u05df \u05de\u05e9\u05d5\u05d7\u05e8\u05e8\u05d5\u05ea \u05d1\u05de\u05d4\u05d9\u05e8\u05d5\u05ea. \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05e7\u05e8\u05d5\u05e1 \u05d5\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05e1\u05d5\u05d9\u05d9\u05de\u05d9\u05dd \u05e2\u05dc\u05d5\u05dc\u05d9\u05dd \u05db\u05dc\u05dc \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3.", - "LabelVideoType": "\u05d2\u05d5\u05d3 \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5:", - "OptionBluray": "\u05d1\u05dc\u05d5-\u05e8\u05d9\u05d9", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "\u05ea\u05dc\u05ea \u05de\u05d9\u05de\u05d3", - "LabelFeatures": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "\u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea", - "OptionHasTrailer": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05e8", - "OptionHasThemeSong": "\u05e9\u05d9\u05e8 \u05e0\u05d5\u05e9\u05d0", - "OptionHasThemeVideo": "\u05e1\u05e8\u05d8 \u05e0\u05d5\u05e9\u05d0", - "TabMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", - "TabStudios": "\u05d0\u05d5\u05dc\u05e4\u05e0\u05d9\u05dd", - "TabTrailers": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05e8\u05d9\u05dd", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", - "HeaderLatestTrailers": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05d9\u05e8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", - "OptionHasSpecialFeatures": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd", - "OptionImdbRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 IMDb", - "OptionParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d1\u05e7\u05e8\u05ea \u05d4\u05d5\u05e8\u05d9\u05dd", - "OptionPremiereDate": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e9\u05d9\u05d3\u05d5\u05e8 \u05e8\u05d0\u05e9\u05d5\u05df", - "TabBasic": "\u05d1\u05e1\u05d9\u05e1\u05d9", - "TabAdvanced": "\u05de\u05ea\u05e7\u05d3\u05dd", - "HeaderStatus": "\u05de\u05e6\u05d1", - "OptionContinuing": "\u05de\u05de\u05e9\u05d9\u05da", - "OptionEnded": "\u05d4\u05e1\u05ea\u05d9\u05d9\u05dd", - "HeaderAirDays": "Air Days", - "OptionSunday": "\u05e8\u05d0\u05e9\u05d5\u05df", - "OptionMonday": "\u05e9\u05e0\u05d9", - "OptionTuesday": "\u05e9\u05dc\u05d9\u05e9\u05d9", - "OptionWednesday": "\u05e8\u05d1\u05d9\u05e2\u05d9", - "OptionThursday": "\u05d7\u05de\u05d9\u05e9\u05d9", - "OptionFriday": "\u05e9\u05d9\u05e9\u05d9", - "OptionSaturday": "\u05e9\u05d1\u05ea", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "\u05d7\u05e1\u05e8 \u05de\u05d6\u05d4\u05d4 IMBb", - "OptionMissingTvdbId": "\u05d7\u05e1\u05e8 \u05de\u05d6\u05d4\u05d4 TheTVDB", - "OptionMissingOverview": "\u05d7\u05e1\u05e8\u05d4 \u05e1\u05e7\u05d9\u05e8\u05d4", - "OptionFileMetadataYearMismatch": "\u05d4\u05e9\u05e0\u05d4 \u05dc\u05d0 \u05de\u05ea\u05d0\u05d9\u05de\u05d4 \u05d1\u05d9\u05df \u05d4\u05de\u05d9\u05d3\u05e2 \u05dc\u05e7\u05d5\u05d1\u05e5", - "TabGeneral": "\u05db\u05dc\u05dc\u05d9", - "TitleSupport": "\u05ea\u05de\u05d9\u05db\u05d4", - "TabLog": "\u05dc\u05d5\u05d2", - "TabAbout": "\u05d0\u05d5\u05d3\u05d5\u05ea", - "TabSupporterKey": "\u05de\u05e4\u05ea\u05d7 \u05ea\u05d5\u05de\u05da", - "TabBecomeSupporter": "\u05d4\u05e4\u05d5\u05da \u05dc\u05ea\u05d5\u05de\u05da", - "MediaBrowserHasCommunity": "\u05dcMedia Browser \u05d9\u05e9 \u05e7\u05d4\u05d9\u05dc\u05d4 \u05e4\u05d5\u05e8\u05d7\u05ea \u05e9\u05dc \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d5\u05ea\u05d5\u05e8\u05de\u05d9\u05dd.", - "CheckoutKnowledgeBase": "\u05e2\u05d9\u05d9\u05df \u05d1\u05de\u05d0\u05d2\u05e8 \u05d4\u05de\u05d9\u05d3\u05e2 \u05e9\u05dc\u05e0\u05d5 \u05dc\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05dc\u05d4\u05d5\u05e6\u05d9\u05d0 \u05d0\u05ea \u05d4\u05de\u05d9\u05e8\u05d1 \u05deMedia Browser.", - "SearchKnowledgeBase": "\u05d7\u05e4\u05e9 \u05d1\u05de\u05d0\u05d2\u05e8 \u05d4\u05de\u05d9\u05d3\u05e2", - "VisitTheCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", "VisitMediaBrowserWebsite": "\u05d1\u05e7\u05e8 \u05d1\u05d0\u05ea\u05e8 \u05e9\u05dc Media Browser", "VisitMediaBrowserWebsiteLong": "\u05d1\u05e7\u05e8 \u05d1\u05d0\u05ea\u05e8 \u05e9\u05dc Media Browser \u05db\u05d3\u05d9 \u05dc\u05d4\u05ea\u05e2\u05d3\u05db\u05df \u05d1\u05d7\u05e9\u05d3\u05d5\u05ea \u05d4\u05d0\u05d7\u05e8\u05d5\u05e0\u05d5\u05ea \u05d5\u05d1\u05d1\u05dc\u05d5\u05d2 \u05d4\u05de\u05e4\u05ea\u05d7\u05d9\u05dd.", "OptionHideUser": "\u05d4\u05e1\u05ea\u05e8 \u05de\u05e9\u05ea\u05de\u05e9 \u05d6\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d4\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea", @@ -917,6 +628,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +871,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1084,306 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u05d9\u05e6\u05d9\u05d0\u05d4", + "LabelVisitCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u05e8\u05d2\u05d9\u05dc", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u05d3\u05e4\u05d3\u05e3 \u05d1\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4", + "LabelConfigureMediaBrowser": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea Media Browser", + "LabelOpenLibraryViewer": "\u05e4\u05ea\u05d7 \u05de\u05e6\u05d9\u05d2 \u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", + "LabelRestartServer": "\u05d0\u05ea\u05d7\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea", + "LabelShowLogWindow": "\u05d4\u05e8\u05d0\u05d4 \u05d7\u05dc\u05d5\u05df \u05dc\u05d5\u05d2", + "LabelPrevious": "\u05d4\u05e7\u05d5\u05d3\u05dd", + "LabelFinish": "\u05e1\u05d9\u05d9\u05dd", + "LabelNext": "\u05d4\u05d1\u05d0", + "LabelYoureDone": "\u05e1\u05d9\u05d9\u05de\u05ea!", + "WelcomeToMediaBrowser": "\u05d1\u05e8\u05d5\u05da \u05d4\u05d1\u05d0 \u05dc- Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u05d0\u05e9\u05e3 \u05d6\u05d4 \u05d9\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05d1\u05d4\u05ea\u05dc\u05d9\u05da \u05d4\u05d4\u05ea\u05e7\u05e0\u05d4.", + "TellUsAboutYourself": "\u05e1\u05e4\u05e8 \u05dc\u05e0\u05d5 \u05e2\u05dc \u05e2\u05e6\u05de\u05da", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u05e9\u05de\u05da \u05d4\u05e4\u05e8\u05d8\u05d9:", + "MoreUsersCanBeAddedLater": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05d2\u05d3\u05d9\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd \u05de\u05d0\u05d5\u05d7\u05e8 \u05d9\u05d5\u05ea\u05e8 \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4.", + "UserProfilesIntro": "Media Browser \u05db\u05d5\u05dc\u05dc \u05ea\u05de\u05d9\u05db\u05d4 \u05de\u05d5\u05d1\u05e0\u05ea \u05d1\u05de\u05e1\u05e4\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd. \u05d5\u05de\u05d0\u05e4\u05e9\u05e8 \u05dc\u05db\u05dc \u05d0\u05d7\u05d3 \u05de\u05d4\u05dd \u05ea\u05e6\u05d5\u05d2\u05ea \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea, \u05de\u05e6\u05d1 \u05e0\u05d2\u05df \u05d5\u05d1\u05e7\u05e8\u05ea \u05d4\u05d5\u05e8\u05d9\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea.", + "LabelWindowsService": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1", + "AWindowsServiceHasBeenInstalled": "\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d4\u05d5\u05ea\u05e7\u05df", + "WindowsServiceIntro1": "\u05e9\u05e8\u05ea Media Browser \u05e8\u05e5 \u05db\u05ea\u05d5\u05db\u05e0\u05ea \u05e9\u05d5\u05dc\u05d7\u05df \u05e2\u05d1\u05d5\u05d3\u05d4 \u05e2\u05dd \u05d0\u05d9\u05e7\u05d5\u05df \u05d1\u05e9\u05d5\u05e8\u05ea \u05d4\u05de\u05e9\u05d9\u05de\u05d5\u05ea, \u05d0\u05d1\u05dc \u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e2\u05d3\u05d9\u05e3 \u05dc\u05d4\u05e8\u05d9\u05e5 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05db\u05e9\u05d9\u05e8\u05d5\u05ea \u05e8\u05e7\u05e2, \u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05ea\u05d7\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05de\u05ea\u05d5\u05da \u05d7\u05dc\u05d5\u05df \u05d4\u05d1\u05e7\u05d4 \u05e9\u05dc \u05e9\u05d9\u05e8\u05d5\u05ea\u05d9 \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1 \u05d1\u05de\u05e7\u05d5\u05dd.", + "WindowsServiceIntro2": "\u05d0\u05dd \u05d0\u05ea\u05d4 \u05de\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d5\u05d5\u05d9\u05e0\u05d3\u05d5\u05e1, \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e9\u05d9\u05dd \u05dc\u05d1 \u05e9\u05d4\u05d5\u05d0 \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e8\u05d5\u05e5 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d6\u05de\u05df \u05e9\u05d4\u05e9\u05e8\u05ea \u05db\u05d1\u05e8 \u05e2\u05d5\u05d1\u05d3 \u05d1\u05e8\u05e7\u05e2. \u05dc\u05db\u05df \u05ea\u05e6\u05d8\u05e8\u05da \u05dc\u05e1\u05d2\u05d5\u05e8 \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea \u05e2\u05dc \u05de\u05e0\u05ea \u05dc\u05d4\u05e4\u05e2\u05d9\u05dc \u05d0\u05ea \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea. \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05d2\u05dd \u05e6\u05e8\u05d9\u05da \u05dc\u05d4\u05d9\u05d5\u05ea \u05de\u05d5\u05d2\u05d3\u05e8 \u05e2\u05dd \u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05de\u05e0\u05d4\u05dc \u05d3\u05e8\u05da \u05dc\u05d5\u05d7 \u05d4\u05d1\u05e7\u05e8\u05d4. \u05d1\u05d1\u05e7\u05e9\u05d4 \u05e7\u05d7 \u05d1\u05d7\u05e9\u05d1\u05d5\u05df \u05e9\u05db\u05e8\u05d2\u05e2 \u05d4\u05e9\u05d9\u05e8\u05d5\u05ea \u05dc\u05d0 \u05d9\u05db\u05d5\u05dc \u05dc\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05e2\u05e6\u05de\u05d5 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea, \u05d5\u05dc\u05db\u05df \u05d2\u05d9\u05e8\u05e1\u05d0\u05d5\u05ea \u05d7\u05d3\u05e9\u05d5\u05ea \u05d9\u05e6\u05e8\u05d9\u05db\u05d5 \u05e2\u05d9\u05d3\u05db\u05d5\u05df \u05d9\u05d3\u05e0\u05d9.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u05e7\u05d1\u05e2 \u05d0\u05ea \u05ea\u05e6\u05d5\u05e8\u05ea \u05d4\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", + "LabelEnableVideoImageExtraction": "\u05d0\u05e4\u05e9\u05e8 \u05e9\u05dc\u05d9\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4 \u05de\u05e1\u05e8\u05d8", + "VideoImageExtractionHelp": "\u05e2\u05d1\u05d5\u05e8 \u05e1\u05e8\u05d8\u05d9\u05dd \u05e9\u05d0\u05d9\u05df \u05dc\u05d4\u05dd \u05db\u05d1\u05e8 \u05ea\u05de\u05d5\u05e0\u05d4, \u05d5\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4 \u05dc\u05d4\u05dd \u05d0\u05d7\u05ea \u05d1\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8. \u05d4\u05d2\u05d3\u05e8\u05d4 \u05d6\u05d5 \u05ea\u05d5\u05e1\u05d9\u05e3 \u05de\u05e2\u05d8 \u05d6\u05de\u05df \u05dc\u05ea\u05d4\u05dc\u05d9\u05da \u05e1\u05e8\u05d9\u05e7\u05ea \u05d4\u05ea\u05e7\u05d9\u05d9\u05d4 \u05d4\u05e8\u05d0\u05e9\u05d5\u05e0\u05d9, \u05d0\u05da \u05ea\u05e1\u05e4\u05e7 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05e4\u05d4.", + "LabelEnableChapterImageExtractionForMovies": "\u05d7\u05dc\u05e5 \u05ea\u05de\u05d5\u05e0\u05ea \u05e4\u05e8\u05e7 \u05dc\u05e1\u05e8\u05d8\u05d9\u05dd", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u05d0\u05e4\u05e9\u05e8 \u05de\u05d9\u05e4\u05d5\u05d9 \u05e4\u05d5\u05e8\u05d8\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9", + "LabelEnableAutomaticPortMappingHelp": "UPnP \u05de\u05d0\u05e4\u05e9\u05e8 \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05d5\u05ea \u05e9\u05dc \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8 \u05dc\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05de\u05e8\u05d5\u05d7\u05e7\u05ea \u05d1\u05e7\u05dc\u05d5\u05ea. \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3 \u05e2\u05dd \u05db\u05dc \u05d3\u05d2\u05de\u05d9 \u05d4\u05e8\u05d0\u05d5\u05d8\u05e8\u05d9\u05dd.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "\u05d0\u05e9\u05e8", + "ButtonCancel": "\u05d1\u05d8\u05dc", + "ButtonExit": "Exit", + "ButtonNew": "\u05d7\u05d3\u05e9", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "\u05d4\u05d2\u05d3\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da", + "ButtonAddMediaFolder": "\u05d4\u05d5\u05e1\u05e3 \u05ea\u05d9\u05e7\u05d9\u05d9\u05ea \u05de\u05d3\u05d9\u05d4", + "LabelFolderType": "\u05e1\u05d5\u05d2 \u05d4\u05ea\u05d9\u05e7\u05d9\u05d9\u05d4:", + "ReferToMediaLibraryWiki": "\u05e4\u05e0\u05d4 \u05dc\u05de\u05d9\u05d3\u05e2 \u05d0\u05d5\u05d3\u05d5\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea \u05d4\u05de\u05d3\u05d9\u05d4.", + "LabelCountry": "\u05de\u05d3\u05d9\u05e0\u05d4:", + "LabelLanguage": "\u05e9\u05e4\u05d4:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u05e9\u05e4\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "LabelSaveLocalMetadata": "\u05e9\u05de\u05d5\u05e8 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d1\u05ea\u05d5\u05da \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4", + "LabelSaveLocalMetadataHelp": "\u05e9\u05de\u05d9\u05e8\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05d1\u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05ea\u05d0\u05e4\u05e9\u05e8 \u05e2\u05e8\u05d9\u05db\u05d4 \u05e0\u05d5\u05d7\u05d4 \u05d5\u05e7\u05dc\u05d4 \u05e9\u05dc\u05d4\u05dd.", + "LabelDownloadInternetMetadata": "\u05d4\u05d5\u05e8\u05d3 \u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2 \u05d5\u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05e8\u05e0\u05d8", + "LabelDownloadInternetMetadataHelp": "Media Browser \u05d9\u05db\u05d5\u05dc \u05dc\u05d4\u05d5\u05e8\u05d9\u05d3 \u05de\u05d9\u05d3\u05e2 \u05dc\u05d2\u05d1\u05d9 \u05e7\u05d1\u05e6\u05d9 \u05d4\u05de\u05d3\u05d9\u05d4 \u05e9\u05dc\u05da \u05db\u05d3\u05d9 \u05d0\u05e4\u05e9\u05e8 \u05ea\u05e6\u05d5\u05d2\u05d4 \u05e2\u05e9\u05d9\u05e8\u05d4.", + "TabPreferences": "\u05d4\u05e2\u05d3\u05e4\u05d5\u05ea", + "TabPassword": "\u05e1\u05d9\u05e1\u05de\u05d0", + "TabLibraryAccess": "\u05d2\u05d9\u05e9\u05d4 \u05dc\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", + "TabAccess": "Access", + "TabImage": "\u05ea\u05de\u05d5\u05e0\u05d4", + "TabProfile": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc", + "TabMetadata": "Metadata", + "TabImages": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea", + "TabNotifications": "\u05d4\u05ea\u05e8\u05d0\u05d5\u05ea", + "TabCollectionTitles": "\u05db\u05d5\u05ea\u05e8\u05d9\u05dd", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05dd \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", + "LabelUnairedMissingEpisodesWithinSeasons": "\u05d4\u05e6\u05d2 \u05e4\u05e8\u05e7\u05d9\u05dd \u05e9\u05e2\u05d3\u05d9\u05df \u05d0\u05dc \u05e9\u05d5\u05d3\u05e8\u05d5 \u05d1\u05ea\u05d5\u05da \u05d4\u05e2\u05d5\u05e0\u05d5\u05ea", + "HeaderVideoPlaybackSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", + "HeaderPlaybackSettings": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d9\u05d2\u05d5\u05df", + "LabelAudioLanguagePreference": "\u05e9\u05e4\u05ea \u05e7\u05d5\u05dc \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "LabelSubtitleLanguagePreference": "\u05e9\u05e4\u05ea \u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea \u05de\u05d5\u05e2\u05d3\u05e4\u05ea:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd", + "TabSecurity": "\u05d1\u05d8\u05d9\u05d7\u05d5\u05ea", + "ButtonAddUser": "\u05d4\u05d5\u05e1\u05e3 \u05de\u05e9\u05ea\u05de\u05e9", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u05e9\u05de\u05d5\u05e8", + "ButtonResetPassword": "\u05d0\u05d9\u05e4\u05d5\u05e1 \u05e1\u05d9\u05e1\u05de\u05d0", + "LabelNewPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", + "LabelNewPasswordConfirm": "\u05d0\u05d9\u05de\u05d5\u05ea \u05e1\u05d9\u05e1\u05de\u05d0 \u05d7\u05d3\u05e9\u05d4:", + "HeaderCreatePassword": "\u05e6\u05d5\u05e8 \u05e1\u05d9\u05e1\u05de\u05d0", + "LabelCurrentPassword": "\u05e1\u05d9\u05e1\u05de\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea:", + "LabelMaxParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05d5\u05e8\u05d9\u05dd \u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9:", + "MaxParentalRatingHelp": "\u05ea\u05d5\u05db\u05df \u05e2\u05dd \u05d3\u05d9\u05e8\u05d5\u05d2 \u05d2\u05d5\u05d1\u05d4 \u05d9\u05d5\u05ea\u05e8 \u05d9\u05d5\u05e1\u05ea\u05e8 \u05de\u05d4\u05de\u05e9\u05ea\u05de\u05e9.", + "LibraryAccessHelp": "\u05d1\u05d7\u05e8 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d5\u05ea \u05d4\u05de\u05d3\u05d9\u05d4 \u05d0\u05e9\u05e8 \u05d9\u05e9\u05d5\u05ea\u05e4\u05d5 \u05e2\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9. \u05de\u05e0\u05d4\u05dc\u05d9\u05dd \u05d9\u05d5\u05db\u05dc\u05d5 \u05dc\u05e2\u05e8\u05d5\u05ea \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05e2\u05d5\u05e8\u05da \u05d4\u05de\u05d9\u05d3\u05e2.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "\u05de\u05d7\u05e7 \u05ea\u05de\u05d5\u05e0\u05d4", + "LabelSelectUsers": "\u05d1\u05d7\u05e8 \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd:", + "ButtonUpload": "\u05d4\u05e2\u05dc\u05d4", + "HeaderUploadNewImage": "\u05d4\u05e2\u05dc\u05d4 \u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05d3\u05e9\u05d4", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "\u05de\u05d5\u05de\u05dc\u05e5 \u05d9\u05d7\u05e1 \u05d2\u05d5\u05d1\u05d4 \u05e9\u05dc 1:1. \u05e8\u05e7 JPG\/PNG.", + "MessageNothingHere": "\u05d0\u05d9\u05df \u05db\u05d0\u05df \u05db\u05dc\u05d5\u05dd.", + "MessagePleaseEnsureInternetMetadata": "\u05d1\u05d1\u05e7\u05e9\u05d4 \u05d5\u05d5\u05d3\u05d0 \u05db\u05d9 \u05d4\u05d5\u05e8\u05d3\u05ea \u05de\u05d9\u05d3\u05e2 \u05de\u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8 \u05de\u05d0\u05d5\u05e4\u05e9\u05e8\u05ea", + "TabSuggested": "\u05de\u05de\u05d5\u05dc\u05e5", + "TabLatest": "\u05d0\u05d7\u05e8\u05d5\u05df", + "TabUpcoming": "\u05d1\u05e7\u05e8\u05d5\u05d1", + "TabShows": "\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea", + "TabEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd", + "TabGenres": "\u05d6\u05d0\u05e0\u05e8\u05d9\u05dd", + "TabPeople": "\u05d0\u05e0\u05e9\u05d9\u05dd", + "TabNetworks": "\u05e8\u05e9\u05ea\u05d5\u05ea", + "HeaderUsers": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", + "HeaderFilters": "\u05de\u05e1\u05e0\u05e0\u05d9\u05dd:", + "ButtonFilter": "\u05de\u05e1\u05e0\u05df", + "OptionFavorite": "\u05de\u05d5\u05e2\u05d3\u05e4\u05d9\u05dd", + "OptionLikes": "\u05e0\u05d1\u05d7\u05e8\u05d9\u05dd", + "OptionDislikes": "\u05dc\u05d0 \u05d0\u05d5\u05d4\u05d1", + "OptionActors": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd", + "OptionGuestStars": "\u05e9\u05d7\u05e7\u05df \u05d0\u05d5\u05e8\u05d7", + "OptionDirectors": "\u05d1\u05de\u05d0\u05d9\u05dd", + "OptionWriters": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd", + "OptionProducers": "\u05de\u05e4\u05d9\u05e7\u05d9\u05dd", + "HeaderResume": "\u05d4\u05de\u05e9\u05da", + "HeaderNextUp": "\u05d4\u05d1\u05d0 \u05d1\u05ea\u05d5\u05e8", + "NoNextUpItemsMessage": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0 \u05db\u05dc\u05d5\u05dd. \u05d4\u05ea\u05d7\u05dc\u05ea \u05dc\u05e6\u05e4\u05d5\u05ea \u05d1\u05e1\u05d3\u05e8\u05d5\u05ea \u05e9\u05dc\u05da!", + "HeaderLatestEpisodes": "\u05e4\u05e8\u05e7\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "HeaderPersonTypes": "\u05e1\u05d5\u05d2\u05d9 \u05d0\u05e0\u05e9\u05d9\u05dd:", + "TabSongs": "\u05e9\u05d9\u05e8\u05d9\u05dd", + "TabAlbums": "\u05d0\u05dc\u05d1\u05d5\u05de\u05d9\u05dd", + "TabArtists": "\u05d0\u05de\u05e0\u05d9\u05dd", + "TabAlbumArtists": "\u05d0\u05de\u05e0\u05d9 \u05d0\u05dc\u05d1\u05d5\u05dd", + "TabMusicVideos": "\u05e7\u05dc\u05d9\u05e4\u05d9\u05dd", + "ButtonSort": "\u05de\u05d9\u05d9\u05df", + "HeaderSortBy": "\u05de\u05d9\u05d9\u05df \u05dc\u05e4\u05d9:", + "HeaderSortOrder": "\u05e1\u05d3\u05e8 \u05de\u05d9\u05d5\u05df:", + "OptionPlayed": "\u05e0\u05d5\u05d2\u05df", + "OptionUnplayed": "\u05dc\u05d0 \u05e0\u05d5\u05d2\u05df", + "OptionAscending": "\u05e1\u05d3\u05e8 \u05e2\u05d5\u05dc\u05d4", + "OptionDescending": "\u05e1\u05d3\u05e8 \u05d9\u05d5\u05e8\u05d3", + "OptionRuntime": "\u05de\u05e9\u05da", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "\u05de\u05e1\u05e4\u05e8 \u05d4\u05e9\u05de\u05e2\u05d5\u05ea", + "OptionDatePlayed": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e0\u05d9\u05d2\u05d5\u05df", + "OptionDateAdded": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05d5\u05e1\u05e4\u05d4", + "OptionAlbumArtist": "\u05d0\u05de\u05df \u05d0\u05dc\u05d1\u05d5\u05dd", + "OptionArtist": "\u05d0\u05de\u05df", + "OptionAlbum": "\u05d0\u05dc\u05d1\u05d5\u05dd", + "OptionTrackName": "\u05e9\u05dd \u05d4\u05e9\u05d9\u05e8", + "OptionCommunityRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d4\u05e7\u05d4\u05d9\u05dc\u05d4", + "OptionNameSort": "\u05e9\u05dd", + "OptionFolderSort": "\u05ea\u05d9\u05e7\u05d9\u05d5\u05ea", + "OptionBudget": "\u05ea\u05e7\u05e6\u05d9\u05d1", + "OptionRevenue": "\u05d4\u05db\u05e0\u05e1\u05d5\u05ea", + "OptionPoster": "\u05e4\u05d5\u05e1\u05d8\u05e8", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "\u05ea\u05de\u05d5\u05e0\u05d5\u05ea \u05e8\u05e7\u05e2", + "OptionTimeline": "\u05e6\u05d9\u05e8 \u05d6\u05de\u05df", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "\u05d1\u05d0\u05e0\u05e8", + "OptionCriticRating": "\u05e6\u05d9\u05d5\u05df \u05de\u05d1\u05e7\u05e8\u05d9\u05dd", + "OptionVideoBitrate": "\u05e7\u05e6\u05ea \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5", + "OptionResumable": "\u05e0\u05d9\u05ea\u05df \u05dc\u05d4\u05de\u05e9\u05d9\u05da", + "ScheduledTasksHelp": "\u05dc\u05d7\u05e5 \u05e2\u05dc \u05de\u05e9\u05d9\u05de\u05d4 \u05dc\u05e2\u05e8\u05d5\u05da \u05d0\u05ea \u05d4\u05ea\u05d6\u05de\u05d5\u05df \u05e9\u05dc\u05d4", + "ScheduledTasksTitle": "\u05de\u05e9\u05d9\u05de\u05d5\u05ea \u05de\u05ea\u05d5\u05d6\u05de\u05e0\u05d5\u05ea", + "TabMyPlugins": "\u05d4\u05ea\u05d5\u05e1\u05e4\u05d9\u05dd \u05e9\u05dc\u05d9", + "TabCatalog": "\u05e7\u05d8\u05dc\u05d5\u05d2", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "\u05e2\u05d9\u05d3\u05db\u05d5\u05e0\u05d9\u05dd \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05dd", + "HeaderNowPlaying": "\u05de\u05e0\u05d2\u05df \u05e2\u05db\u05e9\u05d9\u05d5", + "HeaderLatestAlbums": "\u05d0\u05dc\u05d1\u05d5\u05de\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "HeaderLatestSongs": "\u05e9\u05d9\u05e8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "HeaderRecentlyPlayed": "\u05e0\u05d5\u05d2\u05e0\u05d5 \u05dc\u05d0\u05d7\u05e8\u05d5\u05e0\u05d4", + "HeaderFrequentlyPlayed": "\u05e0\u05d5\u05d2\u05e0\u05d5 \u05dc\u05e8\u05d5\u05d1", + "DevBuildWarning": "\u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05de\u05e4\u05ea\u05d7 \u05d4\u05df \u05d7\u05d5\u05d3 \u05d4\u05d7\u05e0\u05d9\u05ea. \u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05d0\u05dc\u05d4 \u05dc\u05d0 \u05e0\u05d1\u05d3\u05e7\u05d5 \u05d5\u05d4\u05df \u05de\u05e9\u05d5\u05d7\u05e8\u05e8\u05d5\u05ea \u05d1\u05de\u05d4\u05d9\u05e8\u05d5\u05ea. \u05d4\u05ea\u05d5\u05db\u05e0\u05d4 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05e7\u05e8\u05d5\u05e1 \u05d5\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05e1\u05d5\u05d9\u05d9\u05de\u05d9\u05dd \u05e2\u05dc\u05d5\u05dc\u05d9\u05dd \u05db\u05dc\u05dc \u05dc\u05d0 \u05dc\u05e2\u05d1\u05d5\u05d3.", + "LabelVideoType": "\u05d2\u05d5\u05d3 \u05d5\u05d5\u05d9\u05d3\u05d0\u05d5:", + "OptionBluray": "\u05d1\u05dc\u05d5-\u05e8\u05d9\u05d9", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "\u05ea\u05dc\u05ea \u05de\u05d9\u05de\u05d3", + "LabelFeatures": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "\u05db\u05ea\u05d5\u05d1\u05d9\u05d5\u05ea", + "OptionHasTrailer": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05e8", + "OptionHasThemeSong": "\u05e9\u05d9\u05e8 \u05e0\u05d5\u05e9\u05d0", + "OptionHasThemeVideo": "\u05e1\u05e8\u05d8 \u05e0\u05d5\u05e9\u05d0", + "TabMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", + "TabStudios": "\u05d0\u05d5\u05dc\u05e4\u05e0\u05d9\u05dd", + "TabTrailers": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05e8\u05d9\u05dd", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "HeaderLatestTrailers": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05d9\u05e8\u05d9\u05dd \u05d0\u05d7\u05e8\u05d5\u05e0\u05d9\u05dd", + "OptionHasSpecialFeatures": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd", + "OptionImdbRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 IMDb", + "OptionParentalRating": "\u05d3\u05d9\u05e8\u05d5\u05d2 \u05d1\u05e7\u05e8\u05ea \u05d4\u05d5\u05e8\u05d9\u05dd", + "OptionPremiereDate": "\u05ea\u05d0\u05e8\u05d9\u05da \u05e9\u05d9\u05d3\u05d5\u05e8 \u05e8\u05d0\u05e9\u05d5\u05df", + "TabBasic": "\u05d1\u05e1\u05d9\u05e1\u05d9", + "TabAdvanced": "\u05de\u05ea\u05e7\u05d3\u05dd", + "HeaderStatus": "\u05de\u05e6\u05d1", + "OptionContinuing": "\u05de\u05de\u05e9\u05d9\u05da", + "OptionEnded": "\u05d4\u05e1\u05ea\u05d9\u05d9\u05dd", + "HeaderAirDays": "Air Days", + "OptionSunday": "\u05e8\u05d0\u05e9\u05d5\u05df", + "OptionMonday": "\u05e9\u05e0\u05d9", + "OptionTuesday": "\u05e9\u05dc\u05d9\u05e9\u05d9", + "OptionWednesday": "\u05e8\u05d1\u05d9\u05e2\u05d9", + "OptionThursday": "\u05d7\u05de\u05d9\u05e9\u05d9", + "OptionFriday": "\u05e9\u05d9\u05e9\u05d9", + "OptionSaturday": "\u05e9\u05d1\u05ea", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "\u05d7\u05e1\u05e8 \u05de\u05d6\u05d4\u05d4 IMBb", + "OptionMissingTvdbId": "\u05d7\u05e1\u05e8 \u05de\u05d6\u05d4\u05d4 TheTVDB", + "OptionMissingOverview": "\u05d7\u05e1\u05e8\u05d4 \u05e1\u05e7\u05d9\u05e8\u05d4", + "OptionFileMetadataYearMismatch": "\u05d4\u05e9\u05e0\u05d4 \u05dc\u05d0 \u05de\u05ea\u05d0\u05d9\u05de\u05d4 \u05d1\u05d9\u05df \u05d4\u05de\u05d9\u05d3\u05e2 \u05dc\u05e7\u05d5\u05d1\u05e5", + "TabGeneral": "\u05db\u05dc\u05dc\u05d9", + "TitleSupport": "\u05ea\u05de\u05d9\u05db\u05d4", + "TabLog": "\u05dc\u05d5\u05d2", + "TabAbout": "\u05d0\u05d5\u05d3\u05d5\u05ea", + "TabSupporterKey": "\u05de\u05e4\u05ea\u05d7 \u05ea\u05d5\u05de\u05da", + "TabBecomeSupporter": "\u05d4\u05e4\u05d5\u05da \u05dc\u05ea\u05d5\u05de\u05da", + "MediaBrowserHasCommunity": "\u05dcMedia Browser \u05d9\u05e9 \u05e7\u05d4\u05d9\u05dc\u05d4 \u05e4\u05d5\u05e8\u05d7\u05ea \u05e9\u05dc \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d5\u05ea\u05d5\u05e8\u05de\u05d9\u05dd.", + "CheckoutKnowledgeBase": "\u05e2\u05d9\u05d9\u05df \u05d1\u05de\u05d0\u05d2\u05e8 \u05d4\u05de\u05d9\u05d3\u05e2 \u05e9\u05dc\u05e0\u05d5 \u05dc\u05e2\u05d6\u05d5\u05e8 \u05dc\u05da \u05dc\u05d4\u05d5\u05e6\u05d9\u05d0 \u05d0\u05ea \u05d4\u05de\u05d9\u05e8\u05d1 \u05deMedia Browser.", + "SearchKnowledgeBase": "\u05d7\u05e4\u05e9 \u05d1\u05de\u05d0\u05d2\u05e8 \u05d4\u05de\u05d9\u05d3\u05e2", + "VisitTheCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4" } \ 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 2578b9553..d96492577 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -1,273 +1,4 @@ { - "LabelExit": "Izlaz", - "LabelVisitCommunity": "Posjeti zajednicu", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Pregledaj biblioteku", - "LabelConfigureMediaBrowser": "Konfiguriraj Media Browser", - "LabelOpenLibraryViewer": "Otvori preglednik bibilioteke", - "LabelRestartServer": "Restartiraj Server", - "LabelShowLogWindow": "Prika\u017ei Log Zapis", - "LabelPrevious": "Prethodni", - "LabelFinish": "Kraj", - "LabelNext": "Sljede\u0107i", - "LabelYoureDone": "Zavr\u0161eno!", - "WelcomeToMediaBrowser": "Dobrodo\u0161li u Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Ovaj pomo\u0107nik \u0107e Vas voditi kroz proces pode\u0161avanja. Za po\u010detak, odaberite \u017eeljeni jezik.", - "TellUsAboutYourself": "Recite nam ne\u0161to o sebi", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Ime:", - "MoreUsersCanBeAddedLater": "Vi\u0161e korisnika mo\u017eete dodati naknadno preko nadzorne plo\u010de.", - "UserProfilesIntro": "Media Browser ima ugra\u0111enu podr\u0161ku za korisni\u010dke profile, omogu\u0107uju\u0107i svakom korisniku da imaju svoje vlastite postavke prikaza i roditeljsku kontrolu.", - "LabelWindowsService": "Windows servis", - "AWindowsServiceHasBeenInstalled": "Windows servis je instaliran.", - "WindowsServiceIntro1": "Media Browser Server radi kao desktop aplikacija sa ikonom u alatnoj traci, ali ako \u017eelite da radi kao pozadinska usluga mo\u017ee se pokrenuti preko windows servisa na upravlja\u010dkoj plo\u010di.", - "WindowsServiceIntro2": "Ako koristite windows servis uslugu, imajte na umu da nemo\u017ee raditi u isto vrijeme kad i aplikacija na alatnoj traci. Stoga morate ugasiti aplikaciju na altanoj traci da bi mogli pokrenuti servis. Servis \u0107e te morati postaviti sa administrativnim dopu\u0161tenjima preko windows upravlja\u010dke plo\u010de. Tako\u0111er imajte na umu da se u ovom trenutku servis nemo\u017ee automatizirano nadograditi, ve\u0107 je za nove verzije potrebna interakcija korisnika.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfiguracija postavki", - "LabelEnableVideoImageExtraction": "Omogu\u0107i preuzimanje slika iz videa", - "VideoImageExtractionHelp": "Za videa koja jo\u0161 nemaju slike, i za koja nismo uspijeli na\u0107i slike na internetu ovo \u0107e dodati jo\u0161 malo vremena na po\u010detno skeniranje biblioteke ali \u0107e biti ugodnija prezentacija naslova.", - "LabelEnableChapterImageExtractionForMovies": "Izvuci slike poglavlja za Filmove", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Omogu\u0107i automatsko mapiranje porta", - "LabelEnableAutomaticPortMappingHelp": "UPnP omogu\u0107uje automatsku konfiguraciju usmjeriva\u010da (router \/ modem) za lak\u0161i pristup na daljinu. Ovo mo\u017eda ne\u0107e raditi sa nekim modelima usmjeriva\u010da.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Odustani", - "ButtonExit": "Exit", - "ButtonNew": "Novo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Postavi svoju medijsku biblioteku", - "ButtonAddMediaFolder": "Dodaj mapu sa medijem", - "LabelFolderType": "Tip mape:", - "ReferToMediaLibraryWiki": "Informirajte se o medijskoj bibilioteci wiki", - "LabelCountry": "Zemlja:", - "LabelLanguage": "Jezik:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u017deljeni metadata jezik:", - "LabelSaveLocalMetadata": "Snimi ilustracije i metadata u medijske mape", - "LabelSaveLocalMetadataHelp": "Snimljene ilustracije i metadata u medijskim mapama \u0107e biti postavljene na lokaciju gdje \u0107e se mo\u0107i jednostavno mjenjati.", - "LabelDownloadInternetMetadata": "Preuzmi ilustracije i metadata (opise) sa interneta", - "LabelDownloadInternetMetadataHelp": "Media Browser mo\u017ee preuzeti informacije o va\u0161im medijskim datotekama kako bi imali bogatu prezentaciju.", - "TabPreferences": "Postavke", - "TabPassword": "Lozinka", - "TabLibraryAccess": "Pristup biblioteci", - "TabAccess": "Access", - "TabImage": "Slika", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Slike", - "TabNotifications": "Obavijesti", - "TabCollectionTitles": "Naslovi", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Prika\u017ei epizode koje nedostaju unutar sezone", - "LabelUnairedMissingEpisodesWithinSeasons": "Prika\u017ei epizode koje nisu emitirane unutar sezone", - "HeaderVideoPlaybackSettings": "Postavke video reprodukcije", - "HeaderPlaybackSettings": "Postavke reprodukcije", - "LabelAudioLanguagePreference": "Postavke audio jezika:", - "LabelSubtitleLanguagePreference": "Jezik prijevoda:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "Nema titlova", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profili", - "TabSecurity": "Sigurnost", - "ButtonAddUser": "Dodaj korisnika", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Snimi", - "ButtonResetPassword": "Resetiraj lozinku", - "LabelNewPassword": "Nova lozinka:", - "LabelNewPasswordConfirm": "Potvrda nove lozinke:", - "HeaderCreatePassword": "Kreiraj lozinku", - "LabelCurrentPassword": "Sada\u0161nja lozinka:", - "LabelMaxParentalRating": "Najve\u0107a dopu\u0161tena roditeljska ocjena:", - "MaxParentalRatingHelp": "Sadr\u017eaj sa vi\u0161om ocjenom \u0107e biti skriven od ovog korisnika.", - "LibraryAccessHelp": "Odaberite medijske mape za djeljenje sa ovim korisnikom. Administratori \u0107e mo\u0107i mjenjati sve mape preko Metadata menad\u017eera.", - "ChannelAccessHelp": "Odaberite kanale za dijeljenje sa ovim korisnikom. Administratori \u0107e mo\u0107i mijenjati sve kanale koriste\u0107i metadata menad\u017eer.", - "ButtonDeleteImage": "Izbri\u0161i sliku", - "LabelSelectUsers": "Odaberite korisnika:", - "ButtonUpload": "Dostavi", - "HeaderUploadNewImage": "Dostavi novu sliku", - "LabelDropImageHere": "Ubaci sliku ovdje", - "ImageUploadAspectRatioHelp": "1:1 Omjer, preporu\u010damo. Samo JPG\/PNG.", - "MessageNothingHere": "Ni\u0161ta ovdje.", - "MessagePleaseEnsureInternetMetadata": "Molimo provjerite da je preuzimanje metadata sa interneta omogu\u0107eno.", - "TabSuggested": "Preporu\u010deno", - "TabLatest": "Zadnje", - "TabUpcoming": "Uskoro", - "TabShows": "Emisije", - "TabEpisodes": "Epizode", - "TabGenres": "\u017danrovi", - "TabPeople": "Ljudi", - "TabNetworks": "Mre\u017ee", - "HeaderUsers": "Korisnici", - "HeaderFilters": "Filteri:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favoriti", - "OptionLikes": "Volim", - "OptionDislikes": "Nevolim", - "OptionActors": "Glumci", - "OptionGuestStars": "Gostu\u0107e zvjezde", - "OptionDirectors": "Redatelji", - "OptionWriters": "Pisci", - "OptionProducers": "Producenti", - "HeaderResume": "Nastavi", - "HeaderNextUp": "Sljede\u0107e je", - "NoNextUpItemsMessage": "Nije prona\u0111eno. Krenite sa gledanjem va\u0161e emisije!", - "HeaderLatestEpisodes": "Zadnje epizode", - "HeaderPersonTypes": "Tip osobe:", - "TabSongs": "Pjesme", - "TabAlbums": "Albumi", - "TabArtists": "Izvo\u0111a\u010di", - "TabAlbumArtists": "Albumi izvo\u0111a\u010da", - "TabMusicVideos": "Muzi\u010dki spotovi", - "ButtonSort": "Slo\u017ei", - "HeaderSortBy": "Slo\u017ei po:", - "HeaderSortOrder": "Redosljed slaganja:", - "OptionPlayed": "Izvo\u0111eni", - "OptionUnplayed": "Neizvo\u0111eni", - "OptionAscending": "Uzlazno", - "OptionDescending": "Silazno", - "OptionRuntime": "Trajanje", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Broju izvo\u0111enja", - "OptionDatePlayed": "Datumu izvo\u0111enja", - "OptionDateAdded": "Datumu dodavanja", - "OptionAlbumArtist": "Albumu izvo\u0111a\u010da", - "OptionArtist": "Izvo\u0111a\u010du", - "OptionAlbum": "Albumu", - "OptionTrackName": "Nazivu pjesme", - "OptionCommunityRating": "Ocjeni zajednice", - "OptionNameSort": "Nazivu", - "OptionFolderSort": "Mape", - "OptionBudget": "Bud\u017eet", - "OptionRevenue": "Prihod", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Pozadina", - "OptionTimeline": "Vremenska linija", - "OptionThumb": "Sli\u010dica", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Zaglavlje", - "OptionCriticRating": "Ocjeni kritike", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Nastavi", - "ScheduledTasksHelp": "Klini na zadatak za pode\u0161avanje raporeda.", - "ScheduledTasksTitle": "Raspored zadataka", - "TabMyPlugins": "Moji dodaci", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatske nadogradnje", - "HeaderNowPlaying": "Sad se izvodi", - "HeaderLatestAlbums": "Zadnji albumi", - "HeaderLatestSongs": "Zadnje pjesme", - "HeaderRecentlyPlayed": "Zadnje izvo\u0111eno", - "HeaderFrequentlyPlayed": "\u010cesto izvo\u0111eno", - "DevBuildWarning": "Dev distribucije su klimave. \u010cesto se izbacuju, a nisu ni testirane. Aplikacija se mo\u017ee sru\u0161iti i mogu otkazati sve funkcije.", - "LabelVideoType": "Tip Videa:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Mogu\u0107nosti:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Prijevodi", - "OptionHasTrailer": "Kratki video", - "OptionHasThemeSong": "Pjesma teme", - "OptionHasThemeVideo": "Video teme", - "TabMovies": "Filmovi", - "TabStudios": "Studio", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Zadnji Filmovi", - "HeaderLatestTrailers": "Zadnji trailersi", - "OptionHasSpecialFeatures": "Specijalne opcije", - "OptionImdbRating": "IMDb ocjena", - "OptionParentalRating": "Roditeljska ocjena", - "OptionPremiereDate": "Datum premijere", - "TabBasic": "Osnovno", - "TabAdvanced": "Napredno", - "HeaderStatus": "Status", - "OptionContinuing": "Nastavlja se", - "OptionEnded": "Zavr\u0161eno", - "HeaderAirDays": "Dani emitiranja", - "OptionSunday": "Nedjelja", - "OptionMonday": "Ponedjeljak", - "OptionTuesday": "Utorak", "OptionWednesday": "Srijeda", "OptionThursday": "\u010cetvrtak", "OptionFriday": "Petak", @@ -917,6 +648,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +891,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1104,286 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Izlaz", + "LabelVisitCommunity": "Posjeti zajednicu", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Pregledaj biblioteku", + "LabelConfigureMediaBrowser": "Konfiguriraj Media Browser", + "LabelOpenLibraryViewer": "Otvori preglednik bibilioteke", + "LabelRestartServer": "Restartiraj Server", + "LabelShowLogWindow": "Prika\u017ei Log Zapis", + "LabelPrevious": "Prethodni", + "LabelFinish": "Kraj", + "LabelNext": "Sljede\u0107i", + "LabelYoureDone": "Zavr\u0161eno!", + "WelcomeToMediaBrowser": "Dobrodo\u0161li u Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Ovaj pomo\u0107nik \u0107e Vas voditi kroz proces pode\u0161avanja. Za po\u010detak, odaberite \u017eeljeni jezik.", + "TellUsAboutYourself": "Recite nam ne\u0161to o sebi", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Ime:", + "MoreUsersCanBeAddedLater": "Vi\u0161e korisnika mo\u017eete dodati naknadno preko nadzorne plo\u010de.", + "UserProfilesIntro": "Media Browser ima ugra\u0111enu podr\u0161ku za korisni\u010dke profile, omogu\u0107uju\u0107i svakom korisniku da imaju svoje vlastite postavke prikaza i roditeljsku kontrolu.", + "LabelWindowsService": "Windows servis", + "AWindowsServiceHasBeenInstalled": "Windows servis je instaliran.", + "WindowsServiceIntro1": "Media Browser Server radi kao desktop aplikacija sa ikonom u alatnoj traci, ali ako \u017eelite da radi kao pozadinska usluga mo\u017ee se pokrenuti preko windows servisa na upravlja\u010dkoj plo\u010di.", + "WindowsServiceIntro2": "Ako koristite windows servis uslugu, imajte na umu da nemo\u017ee raditi u isto vrijeme kad i aplikacija na alatnoj traci. Stoga morate ugasiti aplikaciju na altanoj traci da bi mogli pokrenuti servis. Servis \u0107e te morati postaviti sa administrativnim dopu\u0161tenjima preko windows upravlja\u010dke plo\u010de. Tako\u0111er imajte na umu da se u ovom trenutku servis nemo\u017ee automatizirano nadograditi, ve\u0107 je za nove verzije potrebna interakcija korisnika.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfiguracija postavki", + "LabelEnableVideoImageExtraction": "Omogu\u0107i preuzimanje slika iz videa", + "VideoImageExtractionHelp": "Za videa koja jo\u0161 nemaju slike, i za koja nismo uspijeli na\u0107i slike na internetu ovo \u0107e dodati jo\u0161 malo vremena na po\u010detno skeniranje biblioteke ali \u0107e biti ugodnija prezentacija naslova.", + "LabelEnableChapterImageExtractionForMovies": "Izvuci slike poglavlja za Filmove", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Omogu\u0107i automatsko mapiranje porta", + "LabelEnableAutomaticPortMappingHelp": "UPnP omogu\u0107uje automatsku konfiguraciju usmjeriva\u010da (router \/ modem) za lak\u0161i pristup na daljinu. Ovo mo\u017eda ne\u0107e raditi sa nekim modelima usmjeriva\u010da.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Odustani", + "ButtonExit": "Exit", + "ButtonNew": "Novo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Postavi svoju medijsku biblioteku", + "ButtonAddMediaFolder": "Dodaj mapu sa medijem", + "LabelFolderType": "Tip mape:", + "ReferToMediaLibraryWiki": "Informirajte se o medijskoj bibilioteci wiki", + "LabelCountry": "Zemlja:", + "LabelLanguage": "Jezik:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u017deljeni metadata jezik:", + "LabelSaveLocalMetadata": "Snimi ilustracije i metadata u medijske mape", + "LabelSaveLocalMetadataHelp": "Snimljene ilustracije i metadata u medijskim mapama \u0107e biti postavljene na lokaciju gdje \u0107e se mo\u0107i jednostavno mjenjati.", + "LabelDownloadInternetMetadata": "Preuzmi ilustracije i metadata (opise) sa interneta", + "LabelDownloadInternetMetadataHelp": "Media Browser mo\u017ee preuzeti informacije o va\u0161im medijskim datotekama kako bi imali bogatu prezentaciju.", + "TabPreferences": "Postavke", + "TabPassword": "Lozinka", + "TabLibraryAccess": "Pristup biblioteci", + "TabAccess": "Access", + "TabImage": "Slika", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Slike", + "TabNotifications": "Obavijesti", + "TabCollectionTitles": "Naslovi", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Prika\u017ei epizode koje nedostaju unutar sezone", + "LabelUnairedMissingEpisodesWithinSeasons": "Prika\u017ei epizode koje nisu emitirane unutar sezone", + "HeaderVideoPlaybackSettings": "Postavke video reprodukcije", + "HeaderPlaybackSettings": "Postavke reprodukcije", + "LabelAudioLanguagePreference": "Postavke audio jezika:", + "LabelSubtitleLanguagePreference": "Jezik prijevoda:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "Nema titlova", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profili", + "TabSecurity": "Sigurnost", + "ButtonAddUser": "Dodaj korisnika", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Snimi", + "ButtonResetPassword": "Resetiraj lozinku", + "LabelNewPassword": "Nova lozinka:", + "LabelNewPasswordConfirm": "Potvrda nove lozinke:", + "HeaderCreatePassword": "Kreiraj lozinku", + "LabelCurrentPassword": "Sada\u0161nja lozinka:", + "LabelMaxParentalRating": "Najve\u0107a dopu\u0161tena roditeljska ocjena:", + "MaxParentalRatingHelp": "Sadr\u017eaj sa vi\u0161om ocjenom \u0107e biti skriven od ovog korisnika.", + "LibraryAccessHelp": "Odaberite medijske mape za djeljenje sa ovim korisnikom. Administratori \u0107e mo\u0107i mjenjati sve mape preko Metadata menad\u017eera.", + "ChannelAccessHelp": "Odaberite kanale za dijeljenje sa ovim korisnikom. Administratori \u0107e mo\u0107i mijenjati sve kanale koriste\u0107i metadata menad\u017eer.", + "ButtonDeleteImage": "Izbri\u0161i sliku", + "LabelSelectUsers": "Odaberite korisnika:", + "ButtonUpload": "Dostavi", + "HeaderUploadNewImage": "Dostavi novu sliku", + "LabelDropImageHere": "Ubaci sliku ovdje", + "ImageUploadAspectRatioHelp": "1:1 Omjer, preporu\u010damo. Samo JPG\/PNG.", + "MessageNothingHere": "Ni\u0161ta ovdje.", + "MessagePleaseEnsureInternetMetadata": "Molimo provjerite da je preuzimanje metadata sa interneta omogu\u0107eno.", + "TabSuggested": "Preporu\u010deno", + "TabLatest": "Zadnje", + "TabUpcoming": "Uskoro", + "TabShows": "Emisije", + "TabEpisodes": "Epizode", + "TabGenres": "\u017danrovi", + "TabPeople": "Ljudi", + "TabNetworks": "Mre\u017ee", + "HeaderUsers": "Korisnici", + "HeaderFilters": "Filteri:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favoriti", + "OptionLikes": "Volim", + "OptionDislikes": "Nevolim", + "OptionActors": "Glumci", + "OptionGuestStars": "Gostu\u0107e zvjezde", + "OptionDirectors": "Redatelji", + "OptionWriters": "Pisci", + "OptionProducers": "Producenti", + "HeaderResume": "Nastavi", + "HeaderNextUp": "Sljede\u0107e je", + "NoNextUpItemsMessage": "Nije prona\u0111eno. Krenite sa gledanjem va\u0161e emisije!", + "HeaderLatestEpisodes": "Zadnje epizode", + "HeaderPersonTypes": "Tip osobe:", + "TabSongs": "Pjesme", + "TabAlbums": "Albumi", + "TabArtists": "Izvo\u0111a\u010di", + "TabAlbumArtists": "Albumi izvo\u0111a\u010da", + "TabMusicVideos": "Muzi\u010dki spotovi", + "ButtonSort": "Slo\u017ei", + "HeaderSortBy": "Slo\u017ei po:", + "HeaderSortOrder": "Redosljed slaganja:", + "OptionPlayed": "Izvo\u0111eni", + "OptionUnplayed": "Neizvo\u0111eni", + "OptionAscending": "Uzlazno", + "OptionDescending": "Silazno", + "OptionRuntime": "Trajanje", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Broju izvo\u0111enja", + "OptionDatePlayed": "Datumu izvo\u0111enja", + "OptionDateAdded": "Datumu dodavanja", + "OptionAlbumArtist": "Albumu izvo\u0111a\u010da", + "OptionArtist": "Izvo\u0111a\u010du", + "OptionAlbum": "Albumu", + "OptionTrackName": "Nazivu pjesme", + "OptionCommunityRating": "Ocjeni zajednice", + "OptionNameSort": "Nazivu", + "OptionFolderSort": "Mape", + "OptionBudget": "Bud\u017eet", + "OptionRevenue": "Prihod", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Pozadina", + "OptionTimeline": "Vremenska linija", + "OptionThumb": "Sli\u010dica", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Zaglavlje", + "OptionCriticRating": "Ocjeni kritike", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Nastavi", + "ScheduledTasksHelp": "Klini na zadatak za pode\u0161avanje raporeda.", + "ScheduledTasksTitle": "Raspored zadataka", + "TabMyPlugins": "Moji dodaci", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatske nadogradnje", + "HeaderNowPlaying": "Sad se izvodi", + "HeaderLatestAlbums": "Zadnji albumi", + "HeaderLatestSongs": "Zadnje pjesme", + "HeaderRecentlyPlayed": "Zadnje izvo\u0111eno", + "HeaderFrequentlyPlayed": "\u010cesto izvo\u0111eno", + "DevBuildWarning": "Dev distribucije su klimave. \u010cesto se izbacuju, a nisu ni testirane. Aplikacija se mo\u017ee sru\u0161iti i mogu otkazati sve funkcije.", + "LabelVideoType": "Tip Videa:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Mogu\u0107nosti:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Prijevodi", + "OptionHasTrailer": "Kratki video", + "OptionHasThemeSong": "Pjesma teme", + "OptionHasThemeVideo": "Video teme", + "TabMovies": "Filmovi", + "TabStudios": "Studio", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Zadnji Filmovi", + "HeaderLatestTrailers": "Zadnji trailersi", + "OptionHasSpecialFeatures": "Specijalne opcije", + "OptionImdbRating": "IMDb ocjena", + "OptionParentalRating": "Roditeljska ocjena", + "OptionPremiereDate": "Datum premijere", + "TabBasic": "Osnovno", + "TabAdvanced": "Napredno", + "HeaderStatus": "Status", + "OptionContinuing": "Nastavlja se", + "OptionEnded": "Zavr\u0161eno", + "HeaderAirDays": "Dani emitiranja", + "OptionSunday": "Nedjelja", + "OptionMonday": "Ponedjeljak", + "OptionTuesday": "Utorak" } \ 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 7f931a27d..6c223b2e0 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -1,243 +1,4 @@ { - "LabelExit": "Esci", - "LabelVisitCommunity": "Visita Comunit\u00e0", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Documentazione Api", - "LabelDeveloperResources": "Risorse programmatori", - "LabelBrowseLibrary": "Esplora la libreria", - "LabelConfigureMediaBrowser": "Configura Media Browser", - "LabelOpenLibraryViewer": "Apri visualizzatore libreria", - "LabelRestartServer": "Riavvia Server", - "LabelShowLogWindow": "Mostra Finestra log", - "LabelPrevious": "Precedente", - "LabelFinish": "Finito", - "LabelNext": "Prossimo", - "LabelYoureDone": "Hai Finito!", - "WelcomeToMediaBrowser": "Benvenuto in Media Browser!", - "TitleMediaBrowser": "Media browser", - "ThisWizardWillGuideYou": "Questa procedura ti guider\u00e0 durante il processo di installazione. Per cominciare, per favore seleziona la tua lingua preferita", - "TellUsAboutYourself": "Parlaci di te", - "ButtonQuickStartGuide": "Guida rapida", - "LabelYourFirstName": "Nome", - "MoreUsersCanBeAddedLater": "Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione", - "UserProfilesIntro": "Media Browser include il supporto integrato per i profili utente, permettendo ad ogni utente di avere le proprie impostazioni di visualizzazione.", - "LabelWindowsService": "Servizio Windows", - "AWindowsServiceHasBeenInstalled": "Servizio Windows Installato", - "WindowsServiceIntro1": "Media Browser Server, normalmente viene eseguito come un'applicazione desktop con un' icona nella barra, ma se invece si preferisce farlo funzionare come un servizio in background, pu\u00f2 essere avviato dal pannello di controllo dei servizi di Windows", - "WindowsServiceIntro2": "Se si utilizza il servizio di Windows, si ricorda che non pu\u00f2 essere eseguito allo stesso tempo con l'icona di sistema, quindi devi chiudere l'applicazione al fine di eseguire il servizio. Il servizio dovr\u00e0 anche essere configurato con privilegi amministrativi tramite il pannello di controllo. Si prega di notare che in questo momento il servizio non \u00e8 in grado di Autoaggiornarsi, quindi le nuove versioni richiedono l'interazione manuale", - "WizardCompleted": "Questo \u00e8 tutto ci\u00f2 che ci serve per ora. Media Browser ha cominciato a raccogliere informazioni sulla tua libreria. Dai un'occhiata alle nostre app, e poi clicca su Fine<\/b> per andare alla Pagina Principale<\/b>", - "LabelConfigureSettings": "Configura", - "LabelEnableVideoImageExtraction": "Abilita estrazione immagine video", - "VideoImageExtractionHelp": "Per i video che sono sprovvisti di immagini, e per i quali non siamo riusciti a trovare immagini su Internet.Questo aggiunger\u00e0 del tempo addizionale alla scansione della tua libreria ma si tradurr\u00e0 in una presentazione pi\u00f9 piacevole.", - "LabelEnableChapterImageExtractionForMovies": "Estrazione immagine capitolo estratto per i Film", - "LabelChapterImageExtractionForMoviesHelp": "L'estrazione delle immagini dai capitoli permetter\u00e0 ai client di avere un men\u00f9 grafico per la selezione delle scene. Il processo potrebbe essere lento, con uso intensivo della CPU e potrebbe richiedere diversi gigabyte di spazio. Viene avviato durante la notte, ad ogni modo \u00e8 configurabile nella sezione azioni pianificate. Non \u00e8 raccomandato l'avvio di questo processo durante le ore di massimo utilizzo.", - "LabelEnableAutomaticPortMapping": "Abilita mappatura delle porte automatiche", - "LabelEnableAutomaticPortMappingHelp": "UPnP consente la configurazione automatica del router per l'accesso remoto facile. Questo potrebbe non funzionare con alcuni modelli di router.", - "HeaderTermsOfService": "Termini di servizio di Media Browser", - "MessagePleaseAcceptTermsOfService": "Per favore accetta i termini di servizio e l'informativa sulla privacy prima di continuare.", - "OptionIAcceptTermsOfService": "Accetto i termini di servizio", - "ButtonPrivacyPolicy": "Informativa sulla privacy", - "ButtonTermsOfService": "Termini di Servizio", - "HeaderDeveloperOptions": "Opzioni Sviluppatore", - "OptionEnableWebClientResponseCache": "Abilita la cache del client web", - "OptionDisableForDevelopmentHelp": "Configura questi parametri per sviluppatori del client web", - "OptionEnableWebClientResourceMinification": "Abilita la minimizzazione delle risorse del client web", - "LabelDashboardSourcePath": "Percorso sorgente client web", - "LabelDashboardSourcePathHelp": "se si sta eseguendo il server da una sorgente, specifica il percorso dell'interfaccia. Tutti i file per i client saranno presi da questo percorso", - "ButtonConvertMedia": "Converti media", - "ButtonOrganize": "Organizza", - "LabelPinCode": "Codice Pin", - "ButtonOk": "OK", - "ButtonCancel": "Annulla", - "ButtonExit": "Esci", - "ButtonNew": "Nuovo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Percorsi", - "CategorySync": "Sinc.zza", - "HeaderEasyPinCode": "Codice pin", - "HeaderGrownupsOnly": "Solo adulti", - "DividerOr": "- o -", - "HeaderInstalledServices": "Servizi installati", - "HeaderAvailableServices": "Servizi disponibili", - "MessageNoServicesInstalled": "Nessun servizio attualmente installato", - "HeaderToAccessPleaseEnterEasyPinCode": "Per accedere per favore inserisci il tuo codice pin", - "KidsModeAdultInstruction": "Clicca sull'icona del lucchetto nell'angolo in basso a destra per configurare o abbandonare la modalit\u00e0 bambini. Verr\u00e0 richiesto il tuo codice pin", - "ButtonConfigurePinCode": "Configura codice pin", - "HeaderAdultsReadHere": "Adulti leggete qui!", - "RegisterWithPayPal": "Registra con PayPal", - "HeaderSyncRequiresSupporterMembership": "La sincronizzazione richiede un'iscrizione come supporter", - "HeaderEnjoyDayTrial": "Goditi la tua prova gratuita di 14 giorni", - "LabelSyncTempPath": "Percorso file temporanei", - "LabelSyncTempPathHelp": "Specifica una cartella per la sincronizzazione. I file multimediali convertiti durante la sincronizzazione verranno collocati qui.", - "LabelCustomCertificatePath": "Percorso certificati personalizzato:", - "LabelCustomCertificatePathHelp": "Fornire un tuo file .pfx certificato SSL. Se omesso, il server creer\u00e0 un certificato auto-firmato.", - "TitleNotifications": "Notifiche", - "ButtonDonateWithPayPal": "Effettua una donazione con PayPal", - "OptionDetectArchiveFilesAsMedia": "Considera gli archivi come file multimediali", - "OptionDetectArchiveFilesAsMediaHelp": "se attivato, i file con estensione .rar e .zip saranno considerati come file multimediali.", - "LabelEnterConnectUserName": "Nome Utente o email:", - "LabelEnterConnectUserNameHelp": "Questo \u00e8 il tuo nome utente, o password, per il tuo account online di Media Browser.", - "LabelEnableEnhancedMovies": "Abilita le visuali film migliorate", - "LabelEnableEnhancedMoviesHelp": "Quando abilitato, i film verranno mostrati come cartelle che includono i trailer, gli extra, il cast & crew, e altri contenuti correlati.", - "HeaderSyncJobInfo": "Attiv. di Sinc.", - "FolderTypeMixed": "contenuto misto", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musica", - "FolderTypeAdultVideos": "Video per adulti", - "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Video musicali", - "FolderTypeHomeVideos": "Video personali", - "FolderTypeGames": "Giochi", - "FolderTypeBooks": "Libri", - "FolderTypeTvShows": "Tv", - "FolderTypeInherit": "ereditare", - "LabelContentType": "Tipo di contenuto:", - "TitleScheduledTasks": "Compiti Pianificati", - "HeaderSetupLibrary": "Configura la tua libreria", - "ButtonAddMediaFolder": "Aggiungi cartella", - "LabelFolderType": "Tipo cartella", - "ReferToMediaLibraryWiki": "Fare riferimento alla wiki libreria multimediale.", - "LabelCountry": "Nazione:", - "LabelLanguage": "Lingua:", - "LabelTimeLimitHours": "Tempo limite (ore):", - "ButtonJoinTheDevelopmentTeam": "Unisciti al Team di Sviluppo", - "HeaderPreferredMetadataLanguage": "Lingua dei metadati preferita:", - "LabelSaveLocalMetadata": "Salva immagini e metadati nelle cartelle multimediali", - "LabelSaveLocalMetadataHelp": "Il salvataggio di immagini e dei metadati direttamente nelle cartelle multimediali verranno messe in un posto dove possono essere facilmente modificate.", - "LabelDownloadInternetMetadata": "Scarica immagini e metadati da internet", - "LabelDownloadInternetMetadataHelp": "Media Browser pu\u00f2 scaricare informazioni sui vostri media per consentire presentazioni migliori.", - "TabPreferences": "Preferenze", - "TabPassword": "Password", - "TabLibraryAccess": "Accesso libreria", - "TabAccess": "Accesso", - "TabImage": "Immagine", - "TabProfile": "Profilo", - "TabMetadata": "Metadati", - "TabImages": "Immagini", - "TabNotifications": "Notifiche", - "TabCollectionTitles": "Titolo", - "HeaderDeviceAccess": "Accesso dispositivo", - "OptionEnableAccessFromAllDevices": "Abilitare l'accesso da tutti i dispositivi", - "OptionEnableAccessToAllChannels": "Abilita l'accesso a tutti i canali", - "OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie", - "DeviceAccessHelp": "Questo vale solo per i dispositivi che possono essere identificati in modo univoco e non impedire l'accesso del browser. Filtraggio di accesso al dispositivo dell'utente impedir\u00e0 loro di usare nuovi dispositivi fino a quando non sono state approvate qui.", - "LabelDisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni", - "LabelUnairedMissingEpisodesWithinSeasons": "Visualizzare episodi mai andati in onda all'interno stagioni", - "HeaderVideoPlaybackSettings": "Impostazioni di riproduzione video", - "HeaderPlaybackSettings": "Impostazioni di riproduzione", - "LabelAudioLanguagePreference": "Preferenze lingua audio:", - "LabelSubtitleLanguagePreference": "Preferenze lingua dei sottotitoli:", - "OptionDefaultSubtitles": "Predefinito", - "OptionOnlyForcedSubtitles": "Solo i sottotitoli forzati", - "OptionAlwaysPlaySubtitles": "Visualizza sempre i sottotitoli", - "OptionNoSubtitles": "Nessun Sottotitolo", - "OptionDefaultSubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati quando l'audio \u00e8 in una lingua straniera.", - "OptionOnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", - "OptionAlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua audio.", - "OptionNoSubtitlesHelp": "I sottotitoli non verranno caricati di default.", - "TabProfiles": "Profili", - "TabSecurity": "Sicurezza", - "ButtonAddUser": "Aggiungi Utente", - "ButtonAddLocalUser": "Aggiungi Utente locale", - "ButtonInviteUser": "Invita un utente", - "ButtonSave": "Salva", - "ButtonResetPassword": "Ripristina Password", - "LabelNewPassword": "Nuova Password:", - "LabelNewPasswordConfirm": "Conferma Nuova Password:", - "HeaderCreatePassword": "Crea Password", - "LabelCurrentPassword": "Password Corrente:", - "LabelMaxParentalRating": "Massima valutazione dei genitori consentita:", - "MaxParentalRatingHelp": "Contenuto con un punteggio pi\u00f9 elevato sar\u00e0 nascosto per questo utente.", - "LibraryAccessHelp": "Selezionare le cartelle multimediali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", - "ChannelAccessHelp": "Selezionare i canali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutti i canali usando il gestore dei metadati", - "ButtonDeleteImage": "Elimina immagine", - "LabelSelectUsers": "Seleziona Utenti:", - "ButtonUpload": "Carica", - "HeaderUploadNewImage": "Carica nuova immagine", - "LabelDropImageHere": "Trascina l'immagine qui", - "ImageUploadAspectRatioHelp": "1:1 Rapporto dimensioni raccomandato. Solo JPG\/PNG.", - "MessageNothingHere": "Niente qui.", - "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati internet sia abilitato.", - "TabSuggested": "Suggeriti", - "TabLatest": "Novit\u00e0", - "TabUpcoming": "In Arrivo", - "TabShows": "Serie", - "TabEpisodes": "Episodi", - "TabGenres": "Generi", - "TabPeople": "Attori", - "TabNetworks": "Internet", - "HeaderUsers": "Utenti", - "HeaderFilters": "Filtri", - "ButtonFilter": "Filtro", - "OptionFavorite": "Preferiti", - "OptionLikes": "Belli", - "OptionDislikes": "Brutti", - "OptionActors": "Attori", - "OptionGuestStars": "Personaggi Famosi", - "OptionDirectors": "Registra", - "OptionWriters": "Scrittore", - "OptionProducers": "Produttore", - "HeaderResume": "Riprendi", - "HeaderNextUp": "Da vedere", - "NoNextUpItemsMessage": "Trovato nessuno. Inizia a guardare i tuoi programmi!", - "HeaderLatestEpisodes": "Ultimi Episodi Aggiunti", - "HeaderPersonTypes": "Tipo Persone:", - "TabSongs": "Canzoni", - "TabAlbums": "Album", - "TabArtists": "Artisti", - "TabAlbumArtists": "Artisti Album", - "TabMusicVideos": "Video Musicali", - "ButtonSort": "Ordina", - "HeaderSortBy": "Ordina per:", - "HeaderSortOrder": "Ordina per:", - "OptionPlayed": "Visto", - "OptionUnplayed": "Non visto", - "OptionAscending": "Ascendente", - "OptionDescending": "Discentente", - "OptionRuntime": "Durata", - "OptionReleaseDate": "Data di rilascio", - "OptionPlayCount": "Visto N\u00b0", - "OptionDatePlayed": "Visto il", - "OptionDateAdded": "Aggiunto il", - "OptionAlbumArtist": "Artista Album", - "OptionArtist": "Artista", - "OptionAlbum": "Album", - "OptionTrackName": "Nome Brano", - "OptionCommunityRating": "Voto del pubblico", - "OptionNameSort": "Nome", - "OptionFolderSort": "Cartelle", - "OptionBudget": "Budget", - "OptionRevenue": "Recensione", - "OptionPoster": "Locandina", - "OptionPosterCard": "scheda poster", - "OptionBackdrop": "Sfondo", - "OptionTimeline": "Anno", - "OptionThumb": "Sfondo", - "OptionThumbCard": "carta Thumb", - "OptionBanner": "Banner", - "OptionCriticRating": "Voto critica", - "OptionVideoBitrate": "Bitrate Video", - "OptionResumable": "Interrotti", - "ScheduledTasksHelp": "Fare clic su una voce per cambiare la pianificazione.", - "ScheduledTasksTitle": "Operazioni Pianificate", - "TabMyPlugins": "Plugins Installati", - "TabCatalog": "Catalogo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Aggiornamenti Automatici", - "HeaderNowPlaying": "In Riproduzione", - "HeaderLatestAlbums": "Ultimi Album", - "HeaderLatestSongs": "Ultime Canzoni", - "HeaderRecentlyPlayed": "Visti di recente", - "HeaderFrequentlyPlayed": "Visti di frequente", - "DevBuildWarning": "Le versioni Dev sono sperimentali. Rilasciate di frequente, queste versioni non sono state testate. L'applicazione potrebbe chiudersi in modo imprevisto e alcune intere funzionalit\u00e0 potrebbero non funzionare affatto", - "LabelVideoType": "Tipo video:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", "Option3D": "3D", "LabelFeatures": "Caratteristiche:", "LabelService": "Servizio:", @@ -917,6 +678,7 @@ "LabelChannelDownloadAgeHelp": "Contenuti scaricati pi\u00f9 vecchi di questo limite sarnno cancellati. Rimarranno riproducibili via internet in streaming.", "ChannelSettingsFormHelp": "Installare canali come Trailer e Vimeo nel catalogo plugin.", "ButtonOptions": "Opzioni", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Film", "ViewTypeTvShows": "Serie Tv", "ViewTypeGames": "Giochi", @@ -1159,6 +921,7 @@ "LabelIfYouWishToContinueWithDeletion": "Se si desidera continuare, si prega di confermare inserendo il valore di:", "ButtonIdentify": "Identifica", "LabelAlbumArtist": "Artista Album", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Voto Comunit\u00e0:", "LabelVoteCount": "Totale Voti:", @@ -1371,5 +1134,256 @@ "LabelTagFilterMode": "Modalit\u00e0:", "LabelTagFilterAllowModeHelp": "Se i tag permessi vengono utilizzati come parte di una struttura di cartelle profondamente nidificate, il contenuto che viene etichettato richieder\u00e0 cartelle principali di essere etichettato come bene.", "HeaderThisUserIsCurrentlyDisabled": "Questo utente \u00e8 al momento disabilitato", - "MessageReenableUser": "Guarda in basso per ri-abilitare" + "MessageReenableUser": "Guarda in basso per ri-abilitare", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "Pi\u00f9...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Esci", + "LabelVisitCommunity": "Visita Comunit\u00e0", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Documentazione Api", + "LabelDeveloperResources": "Risorse programmatori", + "LabelBrowseLibrary": "Esplora la libreria", + "LabelConfigureMediaBrowser": "Configura Media Browser", + "LabelOpenLibraryViewer": "Apri visualizzatore libreria", + "LabelRestartServer": "Riavvia Server", + "LabelShowLogWindow": "Mostra Finestra log", + "LabelPrevious": "Precedente", + "LabelFinish": "Finito", + "LabelNext": "Prossimo", + "LabelYoureDone": "Hai Finito!", + "WelcomeToMediaBrowser": "Benvenuto in Media Browser!", + "TitleMediaBrowser": "Media browser", + "ThisWizardWillGuideYou": "Questa procedura ti guider\u00e0 durante il processo di installazione. Per cominciare, per favore seleziona la tua lingua preferita", + "TellUsAboutYourself": "Parlaci di te", + "ButtonQuickStartGuide": "Guida rapida", + "LabelYourFirstName": "Nome", + "MoreUsersCanBeAddedLater": "Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione", + "UserProfilesIntro": "Media Browser include il supporto integrato per i profili utente, permettendo ad ogni utente di avere le proprie impostazioni di visualizzazione.", + "LabelWindowsService": "Servizio Windows", + "AWindowsServiceHasBeenInstalled": "Servizio Windows Installato", + "WindowsServiceIntro1": "Media Browser Server, normalmente viene eseguito come un'applicazione desktop con un' icona nella barra, ma se invece si preferisce farlo funzionare come un servizio in background, pu\u00f2 essere avviato dal pannello di controllo dei servizi di Windows", + "WindowsServiceIntro2": "Se si utilizza il servizio di Windows, si ricorda che non pu\u00f2 essere eseguito allo stesso tempo con l'icona di sistema, quindi devi chiudere l'applicazione al fine di eseguire il servizio. Il servizio dovr\u00e0 anche essere configurato con privilegi amministrativi tramite il pannello di controllo. Si prega di notare che in questo momento il servizio non \u00e8 in grado di Autoaggiornarsi, quindi le nuove versioni richiedono l'interazione manuale", + "WizardCompleted": "Questo \u00e8 tutto ci\u00f2 che ci serve per ora. Media Browser ha cominciato a raccogliere informazioni sulla tua libreria. Dai un'occhiata alle nostre app, e poi clicca su Fine<\/b> per andare alla Pagina Principale<\/b>", + "LabelConfigureSettings": "Configura", + "LabelEnableVideoImageExtraction": "Abilita estrazione immagine video", + "VideoImageExtractionHelp": "Per i video che sono sprovvisti di immagini, e per i quali non siamo riusciti a trovare immagini su Internet.Questo aggiunger\u00e0 del tempo addizionale alla scansione della tua libreria ma si tradurr\u00e0 in una presentazione pi\u00f9 piacevole.", + "LabelEnableChapterImageExtractionForMovies": "Estrazione immagine capitolo estratto per i Film", + "LabelChapterImageExtractionForMoviesHelp": "L'estrazione delle immagini dai capitoli permetter\u00e0 ai client di avere un men\u00f9 grafico per la selezione delle scene. Il processo potrebbe essere lento, con uso intensivo della CPU e potrebbe richiedere diversi gigabyte di spazio. Viene avviato durante la notte, ad ogni modo \u00e8 configurabile nella sezione azioni pianificate. Non \u00e8 raccomandato l'avvio di questo processo durante le ore di massimo utilizzo.", + "LabelEnableAutomaticPortMapping": "Abilita mappatura delle porte automatiche", + "LabelEnableAutomaticPortMappingHelp": "UPnP consente la configurazione automatica del router per l'accesso remoto facile. Questo potrebbe non funzionare con alcuni modelli di router.", + "HeaderTermsOfService": "Termini di servizio di Media Browser", + "MessagePleaseAcceptTermsOfService": "Per favore accetta i termini di servizio e l'informativa sulla privacy prima di continuare.", + "OptionIAcceptTermsOfService": "Accetto i termini di servizio", + "ButtonPrivacyPolicy": "Informativa sulla privacy", + "ButtonTermsOfService": "Termini di Servizio", + "HeaderDeveloperOptions": "Opzioni Sviluppatore", + "OptionEnableWebClientResponseCache": "Abilita la cache del client web", + "OptionDisableForDevelopmentHelp": "Configura questi parametri per sviluppatori del client web", + "OptionEnableWebClientResourceMinification": "Abilita la minimizzazione delle risorse del client web", + "LabelDashboardSourcePath": "Percorso sorgente client web", + "LabelDashboardSourcePathHelp": "se si sta eseguendo il server da una sorgente, specifica il percorso dell'interfaccia. Tutti i file per i client saranno presi da questo percorso", + "ButtonConvertMedia": "Converti media", + "ButtonOrganize": "Organizza", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Codice Pin", + "ButtonOk": "OK", + "ButtonCancel": "Annulla", + "ButtonExit": "Esci", + "ButtonNew": "Nuovo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Percorsi", + "CategorySync": "Sinc.zza", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Codice pin", + "HeaderGrownupsOnly": "Solo adulti", + "DividerOr": "- o -", + "HeaderInstalledServices": "Servizi installati", + "HeaderAvailableServices": "Servizi disponibili", + "MessageNoServicesInstalled": "Nessun servizio attualmente installato", + "HeaderToAccessPleaseEnterEasyPinCode": "Per accedere per favore inserisci il tuo codice pin", + "KidsModeAdultInstruction": "Clicca sull'icona del lucchetto nell'angolo in basso a destra per configurare o abbandonare la modalit\u00e0 bambini. Verr\u00e0 richiesto il tuo codice pin", + "ButtonConfigurePinCode": "Configura codice pin", + "HeaderAdultsReadHere": "Adulti leggete qui!", + "RegisterWithPayPal": "Registra con PayPal", + "HeaderSyncRequiresSupporterMembership": "La sincronizzazione richiede un'iscrizione come supporter", + "HeaderEnjoyDayTrial": "Goditi la tua prova gratuita di 14 giorni", + "LabelSyncTempPath": "Percorso file temporanei", + "LabelSyncTempPathHelp": "Specifica una cartella per la sincronizzazione. I file multimediali convertiti durante la sincronizzazione verranno collocati qui.", + "LabelCustomCertificatePath": "Percorso certificati personalizzato:", + "LabelCustomCertificatePathHelp": "Fornire un tuo file .pfx certificato SSL. Se omesso, il server creer\u00e0 un certificato auto-firmato.", + "TitleNotifications": "Notifiche", + "ButtonDonateWithPayPal": "Effettua una donazione con PayPal", + "OptionDetectArchiveFilesAsMedia": "Considera gli archivi come file multimediali", + "OptionDetectArchiveFilesAsMediaHelp": "se attivato, i file con estensione .rar e .zip saranno considerati come file multimediali.", + "LabelEnterConnectUserName": "Nome Utente o email:", + "LabelEnterConnectUserNameHelp": "Questo \u00e8 il tuo nome utente, o password, per il tuo account online di Media Browser.", + "LabelEnableEnhancedMovies": "Abilita le visuali film migliorate", + "LabelEnableEnhancedMoviesHelp": "Quando abilitato, i film verranno mostrati come cartelle che includono i trailer, gli extra, il cast & crew, e altri contenuti correlati.", + "HeaderSyncJobInfo": "Attiv. di Sinc.", + "FolderTypeMixed": "contenuto misto", + "FolderTypeMovies": "Film", + "FolderTypeMusic": "Musica", + "FolderTypeAdultVideos": "Video per adulti", + "FolderTypePhotos": "Foto", + "FolderTypeMusicVideos": "Video musicali", + "FolderTypeHomeVideos": "Video personali", + "FolderTypeGames": "Giochi", + "FolderTypeBooks": "Libri", + "FolderTypeTvShows": "Tv", + "FolderTypeInherit": "ereditare", + "LabelContentType": "Tipo di contenuto:", + "TitleScheduledTasks": "Compiti Pianificati", + "HeaderSetupLibrary": "Configura la tua libreria", + "ButtonAddMediaFolder": "Aggiungi cartella", + "LabelFolderType": "Tipo cartella", + "ReferToMediaLibraryWiki": "Fare riferimento alla wiki libreria multimediale.", + "LabelCountry": "Nazione:", + "LabelLanguage": "Lingua:", + "LabelTimeLimitHours": "Tempo limite (ore):", + "ButtonJoinTheDevelopmentTeam": "Unisciti al Team di Sviluppo", + "HeaderPreferredMetadataLanguage": "Lingua dei metadati preferita:", + "LabelSaveLocalMetadata": "Salva immagini e metadati nelle cartelle multimediali", + "LabelSaveLocalMetadataHelp": "Il salvataggio di immagini e dei metadati direttamente nelle cartelle multimediali verranno messe in un posto dove possono essere facilmente modificate.", + "LabelDownloadInternetMetadata": "Scarica immagini e metadati da internet", + "LabelDownloadInternetMetadataHelp": "Media Browser pu\u00f2 scaricare informazioni sui vostri media per consentire presentazioni migliori.", + "TabPreferences": "Preferenze", + "TabPassword": "Password", + "TabLibraryAccess": "Accesso libreria", + "TabAccess": "Accesso", + "TabImage": "Immagine", + "TabProfile": "Profilo", + "TabMetadata": "Metadati", + "TabImages": "Immagini", + "TabNotifications": "Notifiche", + "TabCollectionTitles": "Titolo", + "HeaderDeviceAccess": "Accesso dispositivo", + "OptionEnableAccessFromAllDevices": "Abilitare l'accesso da tutti i dispositivi", + "OptionEnableAccessToAllChannels": "Abilita l'accesso a tutti i canali", + "OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie", + "DeviceAccessHelp": "Questo vale solo per i dispositivi che possono essere identificati in modo univoco e non impedire l'accesso del browser. Filtraggio di accesso al dispositivo dell'utente impedir\u00e0 loro di usare nuovi dispositivi fino a quando non sono state approvate qui.", + "LabelDisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni", + "LabelUnairedMissingEpisodesWithinSeasons": "Visualizzare episodi mai andati in onda all'interno stagioni", + "HeaderVideoPlaybackSettings": "Impostazioni di riproduzione video", + "HeaderPlaybackSettings": "Impostazioni di riproduzione", + "LabelAudioLanguagePreference": "Preferenze lingua audio:", + "LabelSubtitleLanguagePreference": "Preferenze lingua dei sottotitoli:", + "OptionDefaultSubtitles": "Predefinito", + "OptionOnlyForcedSubtitles": "Solo i sottotitoli forzati", + "OptionAlwaysPlaySubtitles": "Visualizza sempre i sottotitoli", + "OptionNoSubtitles": "Nessun Sottotitolo", + "OptionDefaultSubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati quando l'audio \u00e8 in una lingua straniera.", + "OptionOnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", + "OptionAlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua audio.", + "OptionNoSubtitlesHelp": "I sottotitoli non verranno caricati di default.", + "TabProfiles": "Profili", + "TabSecurity": "Sicurezza", + "ButtonAddUser": "Aggiungi Utente", + "ButtonAddLocalUser": "Aggiungi Utente locale", + "ButtonInviteUser": "Invita un utente", + "ButtonSave": "Salva", + "ButtonResetPassword": "Ripristina Password", + "LabelNewPassword": "Nuova Password:", + "LabelNewPasswordConfirm": "Conferma Nuova Password:", + "HeaderCreatePassword": "Crea Password", + "LabelCurrentPassword": "Password Corrente:", + "LabelMaxParentalRating": "Massima valutazione dei genitori consentita:", + "MaxParentalRatingHelp": "Contenuto con un punteggio pi\u00f9 elevato sar\u00e0 nascosto per questo utente.", + "LibraryAccessHelp": "Selezionare le cartelle multimediali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.", + "ChannelAccessHelp": "Selezionare i canali da condividere con questo utente. Gli amministratori saranno in grado di modificare tutti i canali usando il gestore dei metadati", + "ButtonDeleteImage": "Elimina immagine", + "LabelSelectUsers": "Seleziona Utenti:", + "ButtonUpload": "Carica", + "HeaderUploadNewImage": "Carica nuova immagine", + "LabelDropImageHere": "Trascina l'immagine qui", + "ImageUploadAspectRatioHelp": "1:1 Rapporto dimensioni raccomandato. Solo JPG\/PNG.", + "MessageNothingHere": "Niente qui.", + "MessagePleaseEnsureInternetMetadata": "Assicurarsi che il download dei metadati internet sia abilitato.", + "TabSuggested": "Suggeriti", + "TabLatest": "Novit\u00e0", + "TabUpcoming": "In Arrivo", + "TabShows": "Serie", + "TabEpisodes": "Episodi", + "TabGenres": "Generi", + "TabPeople": "Attori", + "TabNetworks": "Internet", + "HeaderUsers": "Utenti", + "HeaderFilters": "Filtri", + "ButtonFilter": "Filtro", + "OptionFavorite": "Preferiti", + "OptionLikes": "Belli", + "OptionDislikes": "Brutti", + "OptionActors": "Attori", + "OptionGuestStars": "Personaggi Famosi", + "OptionDirectors": "Registra", + "OptionWriters": "Scrittore", + "OptionProducers": "Produttore", + "HeaderResume": "Riprendi", + "HeaderNextUp": "Da vedere", + "NoNextUpItemsMessage": "Trovato nessuno. Inizia a guardare i tuoi programmi!", + "HeaderLatestEpisodes": "Ultimi Episodi Aggiunti", + "HeaderPersonTypes": "Tipo Persone:", + "TabSongs": "Canzoni", + "TabAlbums": "Album", + "TabArtists": "Artisti", + "TabAlbumArtists": "Artisti Album", + "TabMusicVideos": "Video Musicali", + "ButtonSort": "Ordina", + "HeaderSortBy": "Ordina per:", + "HeaderSortOrder": "Ordina per:", + "OptionPlayed": "Visto", + "OptionUnplayed": "Non visto", + "OptionAscending": "Ascendente", + "OptionDescending": "Discentente", + "OptionRuntime": "Durata", + "OptionReleaseDate": "Data di rilascio", + "OptionPlayCount": "Visto N\u00b0", + "OptionDatePlayed": "Visto il", + "OptionDateAdded": "Aggiunto il", + "OptionAlbumArtist": "Artista Album", + "OptionArtist": "Artista", + "OptionAlbum": "Album", + "OptionTrackName": "Nome Brano", + "OptionCommunityRating": "Voto del pubblico", + "OptionNameSort": "Nome", + "OptionFolderSort": "Cartelle", + "OptionBudget": "Budget", + "OptionRevenue": "Recensione", + "OptionPoster": "Locandina", + "OptionPosterCard": "scheda poster", + "OptionBackdrop": "Sfondo", + "OptionTimeline": "Anno", + "OptionThumb": "Sfondo", + "OptionThumbCard": "carta Thumb", + "OptionBanner": "Banner", + "OptionCriticRating": "Voto critica", + "OptionVideoBitrate": "Bitrate Video", + "OptionResumable": "Interrotti", + "ScheduledTasksHelp": "Fare clic su una voce per cambiare la pianificazione.", + "ScheduledTasksTitle": "Operazioni Pianificate", + "TabMyPlugins": "Plugins Installati", + "TabCatalog": "Catalogo", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Aggiornamenti Automatici", + "HeaderNowPlaying": "In Riproduzione", + "HeaderLatestAlbums": "Ultimi Album", + "HeaderLatestSongs": "Ultime Canzoni", + "HeaderRecentlyPlayed": "Visti di recente", + "HeaderFrequentlyPlayed": "Visti di frequente", + "DevBuildWarning": "Le versioni Dev sono sperimentali. Rilasciate di frequente, queste versioni non sono state testate. L'applicazione potrebbe chiudersi in modo imprevisto e alcune intere funzionalit\u00e0 potrebbero non funzionare affatto", + "LabelVideoType": "Tipo video:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso" } \ 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 adcf01b50..a0416d6cf 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -1,389 +1,4 @@ { - "LabelExit": "\u0428\u044b\u0493\u0443", - "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", - "LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", - "LabelSwagger": "Swagger \u0442\u0456\u043b\u0434\u0435\u0441\u0443\u0456", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b", - "LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", - "LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", - "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", - "LabelConfigureMediaBrowser": "Media Browser \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456", - "LabelOpenLibraryViewer": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u049b\u0430\u0440\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b", - "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", - "LabelShowLogWindow": "\u0416\u04b1\u0440\u043d\u0430\u043b \u0442\u0435\u0440\u0435\u0437\u0435\u0441\u0456\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", - "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", - "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", - "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", - "LabelYoureDone": "\u0411\u04d9\u0440\u0456 \u0434\u0430\u0439\u044b\u043d!", - "WelcomeToMediaBrowser": "Media Browser \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u0441\u044b\u043d\u0430 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u0411\u04b1\u043b \u043a\u043e\u043c\u0435\u043a\u0448\u0456 \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u0441\u0430\u0442\u044b\u043b\u0430\u0440\u044b\u043c\u0435\u043d \u04e9\u0442\u043a\u0456\u0437\u0435\u0434\u0456. \u0411\u0430\u0441\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u04e9\u0437\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", - "TellUsAboutYourself": "\u04e8\u0437\u0456\u04a3\u0456\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u0439\u0442\u044b\u04a3\u044b\u0437", - "ButtonQuickStartGuide": "\u0422\u0435\u0437 \u0431\u0430\u0441\u0442\u0430\u0443 \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u0493\u044b\u043d\u0430", - "LabelYourFirstName": "\u0410\u0442\u044b\u04a3\u044b\u0437:", - "MoreUsersCanBeAddedLater": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u043a\u0435\u0439\u0456\u043d \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04af\u0441\u0442\u0435\u0443\u0456\u04a3\u0456\u0437 \u043c\u04af\u043c\u043a\u0456\u043d.", - "UserProfilesIntro": "Media Browser \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440\u0456\u043d \u049b\u0430\u043c\u0442\u0438\u0434\u044b, \u04d9\u0440 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456, \u043e\u0439\u043d\u0430\u0442\u0443 \u043a\u04af\u0439\u0456 \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", - "LabelWindowsService": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456", - "AWindowsServiceHasBeenInstalled": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b.", - "WindowsServiceIntro1": "Media Browser Server \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456 \u0431\u0430\u0440 \u0436\u04b1\u043c\u044b\u0441 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0441\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u04d9\u0434\u0435\u043f\u043a\u0456 \u043e\u0440\u044b\u043d\u0434\u0430\u043b\u0430\u0434\u044b, \u0431\u0456\u0440\u0430\u049b \u0435\u0433\u0435\u0440 \u0431\u04b1\u043d\u044b \u04e9\u04a3\u0434\u0456\u043a \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0434\u0456 \u049b\u0430\u043b\u0430\u0441\u0430\u04a3\u044b\u0437, \u043e\u0440\u043d\u044b\u043d\u0430 \u0431\u04b1\u043b Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", - "WindowsServiceIntro2": "\u0415\u0433\u0435\u0440 Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0435\u0441\u043a\u0435\u0440\u0456\u04a3\u0456\u0437, \u0431\u04b1\u043b \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u0439 \u0436\u04af\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u043d \u0448\u044b\u0493\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u0493\u0430\u043d \u049b\u0430\u0442\u0430\u0440, \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u04d9\u043a\u0456\u043c\u0448\u0456 \u049b\u04b1\u049b\u044b\u049b\u0442\u0430\u0440\u044b\u043d\u0430 \u0438\u0435 \u0431\u043e\u043b\u044b\u043f \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0435\u04a3\u0448\u0435\u0443 \u049b\u0430\u0436\u0435\u0442. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0431\u04b1\u043b \u049b\u044b\u0437\u043c\u0435\u0442 \u04e9\u0437\u0456\u043d\u0435\u043d-\u04e9\u0437\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u043c\u0430\u0439\u0434\u044b, \u0441\u043e\u043d\u0434\u044b\u049b\u0442\u0430\u043d \u0436\u0430\u04a3\u0430 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440 \u049b\u043e\u043b\u043c\u0435\u043d \u04e9\u0437\u0430\u0440\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0441\u0443\u0434\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", - "WizardCompleted": "\u0411\u04b1\u043b \u04d9\u0437\u0456\u0440\u0448\u0435 \u0431\u0456\u0437\u0433\u0435 \u043a\u0435\u0440\u0435\u0433\u0456\u043d\u0456\u04a3 \u0431\u04d9\u0440\u0456. Media Browser \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u0438\u043d\u0430\u0443\u0434\u044b \u0431\u0430\u0441\u0442\u0430\u0434\u044b. \u041a\u0435\u0439\u0431\u0456\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043c\u044b\u0437\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437 \u0434\u0430, \u0421\u0435\u0440\u0432\u0435\u0440 \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d<\/b> \u043a\u04e9\u0440\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0439\u0456\u043d \u0414\u0430\u0439\u044b\u043d<\/b>\u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.", - "LabelConfigureSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443", - "LabelEnableVideoImageExtraction": "\u0411\u0435\u0439\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "VideoImageExtractionHelp": "\u04d8\u043b\u0456 \u0434\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u0436\u043e\u049b, \u0436\u04d9\u043d\u0435 \u043e\u043b\u0430\u0440 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u04af\u0448\u0456\u043d. \u0411\u04b1\u043b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b\u04a3 \u0431\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0456 \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0443\u0430\u049b\u044b\u0442 \u04af\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u043d\u04d9\u0442\u0438\u0436\u0435\u0441\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u043c\u0434\u044b\u043b\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c \u0431\u043e\u043b\u0430\u0434\u044b.", - "LabelEnableChapterImageExtractionForMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelChapterImageExtractionForMoviesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u0411\u04b1\u043b \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0434\u0435\u0433\u0435\u043d\u043c\u0435\u043d \u0431\u04b1\u043b \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelEnableAutomaticPortMapping": "\u041f\u043e\u0440\u0442 \u0430\u0432\u0442\u043e\u0441\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443\u044b\u043d \u049b\u043e\u0441\u0443", - "LabelEnableAutomaticPortMappingHelp": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d UPnP \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043a\u0435\u0439\u0431\u0456\u0440 \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448 \u04af\u043b\u0433\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0439\u0442\u0456\u043d\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "HeaderTermsOfService": "Media Browser \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", - "MessagePleaseAcceptTermsOfService": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u0441 \u0431\u04b1\u0440\u044b\u043d \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u0436\u04d9\u043d\u0435 \u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u04a3\u044b\u0437.", - "OptionIAcceptTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0439\u043c\u044b\u043d", - "ButtonPrivacyPolicy": "\u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d\u0430", - "ButtonTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d\u0430", - "HeaderDeveloperOptions": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "OptionEnableWebClientResponseCache": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u04af\u043d \u049b\u0430\u0442\u0443 \u043a\u044d\u0448\u0442\u0435\u0443\u0456\u043d \u049b\u043e\u0441\u0443", - "OptionDisableForDevelopmentHelp": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u043c\u044b\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u0435\u04a3\u0448\u0435\u04a3\u0456\u0437.", - "OptionEnableWebClientResourceMinification": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u049b\u043e\u0440\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelDashboardSourcePath": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u04e9\u0437\u0456\u043d\u0456\u04a3 \u0436\u043e\u043b\u044b:", - "LabelDashboardSourcePathHelp": "\u0415\u0433\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u043d\u0430\u0440 \u043a\u043e\u0434\u044b\u043d\u0430\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0441\u0435, dashboard-ui \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u0430 \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0456\u04a3 \u0431\u0430\u0440\u043b\u044b\u049b \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u043e\u0441\u044b \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u0430\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u0430\u0434\u044b.", - "ButtonConvertMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", - "ButtonOrganize": "\u04b0\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", - "LabelPinCode": "PIN-\u043a\u043e\u0434:", - "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", - "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "ButtonExit": "\u0428\u044b\u0493\u0443", - "ButtonNew": "\u0416\u0430\u0441\u0430\u0443", - "HeaderTV": "\u0422\u0414", - "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", - "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435", - "HeaderPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", - "CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", - "HeaderEasyPinCode": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434", - "HeaderGrownupsOnly": "\u0422\u0435\u043a \u0435\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440!", - "DividerOr": "-- \u043d\u0435\u043c\u0435\u0441\u0435 --", - "HeaderInstalledServices": "\u041e\u0440\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", - "HeaderAvailableServices": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", - "MessageNoServicesInstalled": "\u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", - "HeaderToAccessPleaseEnterEasyPinCode": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u0442\u044b \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437", - "KidsModeAdultInstruction": "\u0422\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u0434\u0435\u0433\u0456 \u043e\u04a3 \u0436\u0430\u049b\u0442\u0430\u0493\u044b \u049b\u04b1\u043b\u044b\u043f \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0430\u043b\u0430\u043b\u044b\u049b \u0440\u0435\u0436\u0456\u043c\u0456\u043d \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437. PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", - "ButtonConfigurePinCode": "PIN-\u043a\u043e\u0434\u0442\u044b \u0442\u0435\u04a3\u0448\u0435\u0443", - "HeaderAdultsReadHere": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440, \u043c\u044b\u043d\u0430\u043d\u044b \u043e\u049b\u044b\u04a3\u044b\u0437!", - "RegisterWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0456\u0440\u043a\u0435\u043b\u0443", - "HeaderSyncRequiresSupporterMembership": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043b\u044b\u049b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u049b\u0430\u0436\u0435\u0442", - "HeaderEnjoyDayTrial": "14 \u043a\u04af\u043d \u0442\u0435\u0433\u0456\u043d \u0441\u044b\u043d\u0430\u043f \u043a\u04e9\u0440\u0456\u04a3\u0456\u0437", - "LabelSyncTempPath": "\u0423\u0430\u049b\u044b\u0442\u0448\u0430 \u0444\u0430\u0439\u043b \u0436\u043e\u043b\u044b:", - "LabelSyncTempPathHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u049b\u0430\u043b\u0442\u0430\u043d\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043e\u0441\u044b \u043e\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", - "LabelCustomCertificatePath": "\u041a\u0443\u04d9\u043b\u0456\u043a \u0436\u043e\u043b\u044b:", - "LabelCustomCertificatePathHelp": "\u04e8\u0437 SSL-\u043a\u0443\u04d9\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 .pfx \u0444\u0430\u0439\u043b\u044b\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0415\u0433\u0435\u0440 \u0442\u04af\u0441\u0456\u0440\u0456\u043b\u0441\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u043d\u0448\u0456\u043a \u049b\u043e\u043b\u0442\u0430\u04a3\u0431\u0430\u0441\u044b \u0431\u0430\u0440 \u043a\u0443\u04d9\u043b\u0456\u043a\u0442\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b.", - "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", - "ButtonDonateWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", - "OptionDetectArchiveFilesAsMedia": "\u041c\u04b1\u0440\u0430\u0493\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u0443", - "OptionDetectArchiveFilesAsMediaHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, .rar \u0436\u04d9\u043d\u0435 .zip \u043a\u0435\u04a3\u0435\u0439\u0442\u0456\u043c\u0434\u0435\u0440\u0456 \u0431\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", - "LabelEnterConnectUserName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456", - "LabelEnterConnectUserNameHelp": "\u0411\u04b1\u043b - \u0441\u0456\u0437\u0434\u0456\u04a3 Media Browser \u0436\u0435\u043b\u0456\u043b\u0456\u043a \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456.", - "LabelEnableEnhancedMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443", - "LabelEnableEnhancedMoviesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440\u0434\u0456, \u049b\u043e\u0441\u044b\u043c\u0448\u0430\u043b\u0430\u0440\u0434\u044b, \u0442\u04af\u0441\u0456\u0440\u0443\u0433\u0435 \u049b\u0430\u0442\u044b\u0441\u049b\u0430\u043d\u0434\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u049b\u0430\u0442\u044b\u0441\u0442\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u049b\u0430\u043c\u0442\u0443 \u04af\u0448\u0456\u043d, \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u049b\u0430\u043b\u0442\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", - "HeaderSyncJobInfo": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b", - "FolderTypeMixed": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", - "FolderTypeMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", - "FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", - "FolderTypeTvShows": "\u0422\u0414", - "FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", - "LabelContentType": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456:", - "TitleScheduledTasks": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043b\u0430\u0440", - "HeaderSetupLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443", - "ButtonAddMediaFolder": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d \u04af\u0441\u0442\u0435\u0443", - "LabelFolderType": "\u049a\u0430\u043b\u0442\u0430 \u0442\u04af\u0440\u0456:", - "ReferToMediaLibraryWiki": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0443\u0440\u0430\u043b\u044b \u0443\u0438\u043a\u0438 \u0456\u0448\u0456\u043d\u0435\u043d \u049b\u0430\u0440\u0430\u04a3\u044b\u0437.", - "LabelCountry": "\u0415\u043b:", - "LabelLanguage": "\u0422\u0456\u043b:", - "LabelTimeLimitHours": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456 (\u0441\u0430\u0493\u0430\u0442):", - "ButtonJoinTheDevelopmentTeam": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u043e\u0431\u044b\u043d\u0430 \u043a\u0456\u0440\u0443", - "HeaderPreferredMetadataLanguage": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "LabelSaveLocalMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", - "LabelSaveLocalMetadataHelp": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u0443\u044b \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d\u0493\u0430 \u049b\u043e\u044f\u0434\u044b.", - "LabelDownloadInternetMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", - "LabelDownloadInternetMetadataHelp": "\u0422\u043e\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Media Browser \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "TabPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", - "TabPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", - "TabLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "TabAccess": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443", - "TabImage": "\u0421\u0443\u0440\u0435\u0442", - "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c", - "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "TabImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440", - "TabNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", - "TabCollectionTitles": "\u0422\u0443\u044b\u043d\u0434\u044b\u043b\u0430\u0440", - "HeaderDeviceAccess": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "OptionEnableAccessFromAllDevices": "\u0411\u0430\u0440\u043b\u044b\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "OptionEnableAccessToAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "OptionEnableAccessToAllLibraries": "\u0411\u0430\u0440\u043b\u044b\u049b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "DeviceAccessHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0433\u0435\u0439 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0448\u043e\u043b\u0493\u044b\u0448\u043f\u0435\u043d \u049b\u0430\u043d\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u043c\u0430\u0439\u0434\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0441\u044b\u043d\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0441\u04af\u0437\u0433\u0456\u043b\u0435\u0443\u0456 \u0436\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u043c\u04b1\u043d\u0434\u0430 \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d\u0448\u0435 \u0434\u0435\u0439\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0430\u0434\u044b.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", - "LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", - "HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "LabelAudioLanguagePreference": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "LabelSubtitleLanguagePreference": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "OptionDefaultSubtitles": "\u04d8\u0434\u0435\u043f\u043a\u0456", - "OptionOnlyForcedSubtitles": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", - "OptionAlwaysPlaySubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u04d9\u0440\u049b\u0430\u0448\u0430\u043d \u043e\u0439\u043d\u0430\u0442\u0443", - "OptionNoSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u043e\u049b", - "OptionDefaultSubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0448\u0435\u0442\u0435\u043b \u0442\u0456\u043b\u0456\u043d\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionOnlyForcedSubtitlesHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionAlwaysPlaySubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0435 \u049b\u0430\u0442\u044b\u0441\u0441\u044b\u0437 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", - "OptionNoSubtitlesHelp": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u043c\u0435\u0439\u0434\u0456.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440", - "TabSecurity": "\u049a\u0430\u0443\u0456\u043f\u0441\u0456\u0437\u0434\u0456\u043a", - "ButtonAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", - "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", - "ButtonInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443", - "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", - "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443", - "LabelNewPassword": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", - "LabelNewPasswordConfirm": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0440\u0430\u0441\u0442\u0430\u0443:", - "HeaderCreatePassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0436\u0430\u0441\u0430\u0443", - "LabelCurrentPassword": "\u0410\u0493\u044b\u043c\u0434\u0430\u0493\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", - "LabelMaxParentalRating": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u04b1\u0439\u0493\u0430\u0440\u044b\u043d\u0434\u044b \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b:", - "MaxParentalRatingHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u043e\u0493\u0430\u0440\u044b\u043b\u0430\u0443 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u0431\u0430\u0440 \u043c\u0430\u0437\u043c\u04b1\u043d \u0436\u0430\u0441\u044b\u0440\u044b\u043b\u0430\u0434\u044b", - "LibraryAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "ChannelAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "ButtonDeleteImage": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u0436\u043e\u044e", - "LabelSelectUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u0443:", - "ButtonUpload": "\u041a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", - "HeaderUploadNewImage": "\u0416\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0456 \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", - "LabelDropImageHere": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u043c\u04b1\u043d\u0434\u0430 \u0441\u04af\u0439\u0440\u0435\u0442\u0456\u04a3\u0456\u0437", - "ImageUploadAspectRatioHelp": "1:1 \u043f\u0456\u0448\u0456\u043c\u0434\u0456\u043a \u0430\u0440\u0430\u049b\u0430\u0442\u044b\u043d\u0430\u0441\u044b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b. \u0422\u0435\u043a \u049b\u0430\u043d\u0430 JPG\/PNG.", - "MessageNothingHere": "\u041e\u0441\u044b\u043d\u0434\u0430 \u0435\u0448\u0442\u0435\u043c\u0435 \u0436\u043e\u049b.", - "MessagePleaseEnsureInternetMetadata": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", - "TabSuggested": "\u04b0\u0441\u044b\u043d\u044b\u043b\u0493\u0430\u043d", - "TabLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", - "TabUpcoming": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d", - "TabShows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", - "TabEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "TabGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "TabPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", - "TabNetworks": "\u0416\u0435\u043b\u0456\u043b\u0435\u0440", - "HeaderUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", - "HeaderFilters": "\u0421\u04af\u0437\u0433\u0456\u043b\u0435\u0440:", - "ButtonFilter": "\u0421\u04af\u0437\u0443", - "OptionFavorite": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "OptionLikes": "\u04b0\u043d\u0430\u0442\u0443\u043b\u0430\u0440", - "OptionDislikes": "\u04b0\u043d\u0430\u0442\u043f\u0430\u0443\u043b\u0430\u0440", - "OptionActors": "\u0410\u043a\u0442\u0435\u0440\u043b\u0435\u0440", - "OptionGuestStars": "\u0428\u0430\u049b\u044b\u0440\u044b\u043b\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440\u043b\u0435\u0440", - "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440", - "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0448\u0456\u043b\u0435\u0440", - "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043b\u0435\u0440", - "HeaderResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", - "HeaderNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", - "NoNextUpItemsMessage": "\u0415\u0448\u0442\u0435\u04a3\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u0430\u0440\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u04a3\u044b\u0437!", - "HeaderLatestEpisodes": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "HeaderPersonTypes": "\u0422\u04b1\u043b\u0493\u0430 \u0442\u04af\u0440\u043b\u0435\u0440\u0456:", - "TabSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", - "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0435\u0440", - "TabArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", - "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", - "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "ButtonSort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", - "HeaderSortBy": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", - "HeaderSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456:", - "OptionPlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", - "OptionUnplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", - "OptionAscending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430", - "OptionDescending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430", - "OptionRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", - "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", - "OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", - "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", - "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", - "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b", - "OptionArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", - "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", - "OptionTrackName": "\u0416\u043e\u043b\u0448\u044b\u049b \u0430\u0442\u044b", - "OptionCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionNameSort": "\u0410\u0442\u044b", - "OptionFolderSort": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", - "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", - "OptionRevenue": "\u0422\u0430\u0431\u044b\u0441", - "OptionPoster": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437", - "OptionPosterCard": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437-\u043a\u0430\u0440\u0442\u0430", - "OptionBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", - "OptionTimeline": "\u0423\u0430\u049b\u044b\u0442 \u0448\u043a\u0430\u043b\u0430\u0441\u044b", - "OptionThumb": "\u041d\u043e\u0431\u0430\u0439", - "OptionThumbCard": "\u041d\u043e\u0431\u0430\u0439-\u043a\u0430\u0440\u0442\u0430", - "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", - "OptionCriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionVideoBitrate": "\u0411\u0435\u0439\u043d\u0435 \u049b\u0430\u0440\u049b\u044b\u043d\u044b", - "OptionResumable": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430\u043b\u0430\u0442\u044b\u043d", - "ScheduledTasksHelp": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u044b\u043d \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437.", - "ScheduledTasksTitle": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b", - "TabMyPlugins": "\u041c\u0435\u043d\u0456\u04a3 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456\u043c", - "TabCatalog": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435", - "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440", - "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440", - "HeaderNowPlaying": "\u049a\u0430\u0437\u0456\u0440 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0443\u0434\u0430", - "HeaderLatestAlbums": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", - "HeaderLatestSongs": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", - "HeaderRecentlyPlayed": "\u0416\u0430\u049b\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", - "HeaderFrequentlyPlayed": "\u0416\u0438\u0456 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", - "DevBuildWarning": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0435\u04a3 \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0442\u0430\u0440\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. \u0416\u0438\u0456 \u0448\u044b\u0493\u0430\u0440\u043b\u044b\u043f \u043c\u044b\u043d\u0430 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0442\u043e\u043b\u044b\u049b \u0441\u044b\u043d\u0430\u049b\u0442\u0430\u043c\u0430\u043b\u0430\u0443\u0434\u0430\u043d \u04e9\u0442\u043f\u0435\u0433\u0435\u043d. \u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0431\u04b1\u0437\u044b\u043b\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u04d9\u043d\u0435 \u0430\u049b\u044b\u0440 \u0430\u044f\u0493\u044b\u043d\u0434\u0430 \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440 \u0431\u04af\u0442\u0456\u043d\u0434\u0435\u0439 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", - "LabelVideoType": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u0456:", - "OptionBluray": "BluRay", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440:", - "LabelService": "\u049a\u044b\u0437\u043c\u0435\u0442:", - "LabelStatus": "\u041a\u04af\u0439:", - "LabelVersion": "\u041d\u04b1\u0441\u049b\u0430:", - "LabelLastResult": "\u0421\u043e\u04a3\u0493\u044b \u043d\u04d9\u0442\u0438\u0436\u0435:", - "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", - "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", - "OptionHasThemeSong": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d", - "OptionHasThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435", - "TabMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u044f\u043b\u0430\u0440", - "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", - "LabelArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440:", - "LabelArtistsHelp": "\u0411\u0456\u0440\u043d\u0435\u0448\u0443\u0456\u043d (;) \u0430\u0440\u049b\u044b\u043b\u044b \u0431\u04e9\u043b\u0456\u04a3\u0456\u0437", - "HeaderLatestMovies": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "HeaderLatestTrailers": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", - "OptionHasSpecialFeatures": "\u0410\u0440\u043d\u0430\u0439\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440", - "OptionImdbRating": "IMDb \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "OptionParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442", - "OptionPremiereDate": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440 \u043a\u04af\u043d-\u0430\u0439\u044b", - "TabBasic": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", - "TabAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", - "HeaderStatus": "\u041a\u04af\u0439", - "OptionContinuing": "\u0416\u0430\u043b\u0493\u0430\u0441\u0443\u0434\u0430", - "OptionEnded": "\u0410\u044f\u049b\u0442\u0430\u043b\u0434\u044b", - "HeaderAirDays": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", - "OptionSunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", - "OptionMonday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionTuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionWednesday": "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", - "OptionThursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", - "OptionFriday": "\u0436\u04b1\u043c\u0430", - "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456", - "HeaderManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "LabelManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "OptionMissingImdbId": "IMDb Id \u0436\u043e\u049b", - "OptionMissingTvdbId": "TheTVDB Id \u0436\u043e\u049b", - "OptionMissingOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443 \u0436\u043e\u049b", - "OptionFileMetadataYearMismatch": "\u0424\u0430\u0439\u043b\/\u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0436\u044b\u043b\u044b \u0441\u04d9\u0439\u043a\u0435\u0441 \u0435\u043c\u0435\u0441", - "TabGeneral": "\u0416\u0430\u043b\u043f\u044b", - "TitleSupport": "\u0416\u0430\u049b\u0442\u0430\u0443", - "TabLog": "\u0416\u04b1\u0440\u043d\u0430\u043b", - "TabAbout": "\u0422\u0443\u0440\u0430\u043b\u044b", - "TabSupporterKey": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456", - "TabBecomeSupporter": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0431\u043e\u043b\u0443", - "MediaBrowserHasCommunity": "Media Browser \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u044b \u0431\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b\u04a3 \u0434\u0430\u043c\u0443\u0434\u0430\u0493\u044b \u049b\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0493\u044b \u0431\u0430\u0440.", - "CheckoutKnowledgeBase": "Media Browser \u0435\u04a3 \u04af\u043b\u043a\u0435\u043d \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u0430\u043b\u0443 \u0436\u04e9\u043d\u0456\u043d\u0434\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d \u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d \u049b\u0430\u0440\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", - "SearchKnowledgeBase": "\u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d\u0430\u043d \u0456\u0437\u0434\u0435\u0443", - "VisitTheCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", - "VisitMediaBrowserWebsite": "Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u0443", - "VisitMediaBrowserWebsiteLong": "\u0421\u043e\u04a3\u0493\u044b \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u043b\u0456\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0431\u043b\u043e\u0433\u0456\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u044b\u04a3\u044b\u0437.", - "OptionHideUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u043a\u0456\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u044b\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0443", - "OptionHideUserFromLoginHelp": "\u0416\u0435\u043a\u0435 \u043d\u0435\u043c\u0435\u0441\u0435 \u0436\u0430\u0441\u044b\u0440\u044b\u043d \u04d9\u043a\u0456\u043c\u0448\u0456 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u043b\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043c\u0435\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u043d\u0433\u0456\u0437\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u049b\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", - "OptionDisableUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443", - "OptionDisableUserHelp": "\u0415\u0433\u0435\u0440 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u044b\u043d\u0441\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u043f\u0435\u0439\u0434\u0456. \u0411\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440 \u043a\u0435\u043d\u0435\u0442 \u04af\u0437\u0456\u043b\u0435\u0434\u0456.", - "HeaderAdvancedControl": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", - "LabelName": "\u0410\u0442\u044b:", - "ButtonHelp": "\u0410\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", - "OptionAllowUserToManageServer": "\u0411\u0443\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "HeaderFeatureAccess": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", - "OptionAllowMediaPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowBrowsingLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowDeleteLibraryContent": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044e\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowManageLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0430\u0437\u0443\u044b\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteControlOthers": "\u0411\u0430\u0441\u049b\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteSharedDevices": "\u041e\u0440\u0442\u0430\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "OptionAllowRemoteSharedDevicesHelp": "DLNA-\u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d \u043e\u0440\u0442\u0430\u049b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0435\u0441\u0435\u043f\u0442\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", - "HeaderRemoteControl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", - "OptionMissingTmdbId": "TMDb Id \u0436\u043e\u049b", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "ButtonSelect": "\u0411\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", - "ButtonGroupVersions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", - "ButtonAddToCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443", - "PismoMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Pismo File Mount \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", - "TangibleSoftwareMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Tangible Solutions Java\/C# \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0433\u0456\u0448\u0442\u0435\u0440\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", - "HeaderCredits": "\u0428\u044b\u0493\u0430\u0440\u043c\u0430\u0448\u044b\u043b\u044b\u049b\u0442\u044b \u0440\u0430\u0441\u0442\u0430\u0443", - "PleaseSupportOtherProduces": "\u0411\u0456\u0437 \u049b\u043e\u043b\u0434\u0430\u043d\u0430\u0442\u044b\u043d \u0431\u0430\u0441\u049b\u0430 \u0442\u0435\u0433\u0456\u043d \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u049b\u0442\u0430\u04a3\u044b\u0437:", - "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", - "TabPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", - "TabServer": "\u0421\u0435\u0440\u0432\u0435\u0440", - "TabTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443", - "TitleAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", - "LabelAutomaticUpdateLevel": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443 \u0434\u0435\u04a3\u0433\u0435\u0439\u0456", - "OptionRelease": "\u0420\u0435\u0441\u043c\u0438 \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u044b\u043c", - "OptionBeta": "\u0411\u0435\u0442\u0430 \u043d\u04b1\u0441\u049b\u0430", - "OptionDev": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 (\u0442\u04b1\u0440\u0430\u049b\u0441\u044b\u0437)", - "LabelAllowServerAutoRestart": "\u0416\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u044b \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", - "LabelAllowServerAutoRestartHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0443\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0435\u043c\u0435\u0441, \u04d9\u0440\u0435\u043a\u0435\u0442\u0441\u0456\u0437 \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435\u0440\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", - "LabelEnableDebugLogging": "\u041a\u04af\u0439\u043a\u0435\u043b\u0442\u0456\u0440\u0443 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u043d \u0436\u04b1\u0440\u043d\u0430\u043b\u0434\u0430 \u049b\u043e\u0441\u0443", - "LabelRunServerAtStartup": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u0430\u043d \u0431\u0430\u0441\u0442\u0430\u043f \u043e\u0440\u044b\u043d\u0434\u0430\u0443", - "LabelRunServerAtStartupHelp": "\u0411\u04b1\u043b Windows \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b. Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456\u043d \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d, \u049b\u04b1\u0441\u0431\u0435\u043b\u0433\u0456\u043d\u0456 \u0430\u043b\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u04a3\u044b\u0437. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u0411\u04b1\u043b \u0435\u043a\u0435\u0443\u0456\u043d \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0431\u0456\u0440\u0433\u0435 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u043d \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", - "ButtonSelectDirectory": "\u049a\u0430\u0442\u0430\u043b\u043e\u0433\u0442\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", - "LabelCustomPaths": "\u049a\u0430\u043b\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u0430\u0440\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04d8\u0434\u0435\u043f\u043a\u0456\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0434\u0456 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", - "LabelCachePath": "\u041a\u044d\u0448\u043a\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelCachePathHelp": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043a\u044d\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelImagesByNamePath": "\u0410\u0442\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelImagesByNamePathHelp": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440, \u0436\u0430\u043d\u0440, \u0436\u04d9\u043d\u0435 \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelMetadataPath": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", - "LabelMetadataPathHelp": "\u0415\u0433\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", - "LabelTranscodingTempPath": "Transcoding temporary \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u044b\u04a3 \u0436\u043e\u043b\u044b:", - "LabelTranscodingTempPathHelp": "\u0411\u04b1\u043b \u049b\u0430\u043b\u0442\u0430 \u049b\u04b1\u0440\u0430\u043c\u044b\u043d\u0434\u0430 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0430\u0442\u044b\u043d \u0436\u04b1\u043c\u044b\u0441 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0431\u0430\u0440. \u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u049b\u0430\u043b\u0442\u0430\u0441\u044b \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u04d9\u0434\u0435\u043f\u043a\u0456\u0441\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", - "TabBasics": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", - "TabTV": "\u0422\u0414", - "TabGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "TabMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "TabOthers": "\u0411\u0430\u0441\u049b\u0430\u043b\u0430\u0440", - "HeaderExtractChapterImagesFor": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043c\u0430\u043a\u0441\u0430\u0442\u044b:", - "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "OptionEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "OptionOtherVideos": "\u0411\u0430\u0441\u049b\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "TitleMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", - "LabelAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesTmdb": "TheMovieDB.org \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesTvdb": "TheTVDB.com \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", - "LabelAutomaticUpdatesFanartHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 fanart.tv \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelAutomaticUpdatesTmdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheMovieDB.org \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelAutomaticUpdatesTvdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheTVDB.com \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelFanartApiKey": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442:", - "LabelFanartApiKeyHelp": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u0441\u0456\u0437 Fanart \u04af\u0448\u0456\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0430\u0443\u0430\u043b\u0434\u0430\u0440\u0493\u0430 7 \u043a\u04af\u043d\u0456\u043d\u0435\u043d \u0431\u04b1\u0440\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0493\u0430\u043d \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043b\u0430\u0434\u044b. \u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u043c\u0435\u043d \u0431\u04b1\u043b 48 \u0441\u0430\u0493\u0430\u0442\u049b\u0430 \u0434\u0435\u0439\u0456\u043d \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b, \u0430\u043b,\u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, Fanart VIP-\u043c\u04af\u0448\u0435\u0441\u0456 \u0431\u043e\u043b\u0441\u0430\u04a3\u044b\u0437, \u0431\u04b1\u043b \u0448\u0430\u043c\u0430\u043c\u0435\u043d 10 \u043c\u0438\u043d\u04e9\u0442\u043a\u0435 \u0434\u0435\u0439\u0456\u043d \u0442\u0430\u0493\u044b \u0434\u0430 \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", - "ExtractChapterImagesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u041e\u043b \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0442\u0430\u0431\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u04d9\u043d\u0435 \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456. \u041e\u0440\u044b\u043d\u0434\u0430\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0442\u043a\u0456\u0437\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", - "LabelMetadataDownloadLanguage": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", - "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u0430\u0439\u043d\u0430\u043b\u0434\u044b\u0440\u0443", - "LabelImageSavingConvention": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0430\u049b\u0442\u0430\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456:", - "LabelImageSavingConventionHelp": "Media Browser \u043a\u0435\u04a3 \u0442\u0430\u0440\u0430\u0493\u0430\u043d \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0430\u043d \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043d\u0438\u0434\u044b. \u0421\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u0430\u0442\u0430\u0440 \u0431\u0430\u0441\u049b\u0430 \u04e9\u043d\u0456\u043c\u0434\u0435\u0440 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u043f\u0430\u0439\u0434\u0430\u043b\u044b.", - "OptionImageSavingCompatible": "\u0421\u044b\u0439\u044b\u0441\u044b\u043c\u0434\u044b - Media Browser\/Kodi\/Plex", - "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b - MB2", - "ButtonSignIn": "\u041a\u0456\u0440\u0443", - "TitleSignIn": "\u041a\u0456\u0440\u0443", - "HeaderPleaseSignIn": "\u041a\u0456\u0440\u0456\u04a3\u0456\u0437", - "LabelUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b:", - "LabelPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", - "ButtonManualLogin": "\u049a\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443", - "PasswordLocalhostMessage": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 (localhost) \u043e\u0440\u044b\u043d\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u049b\u0430\u0436\u0435\u0442 \u0435\u043c\u0435\u0441.", - "TabGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448", - "TabChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "TabCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", - "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "TabRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440", - "TabScheduled": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d", - "TabSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", - "TabFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "TabMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c", - "ButtonCancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", "HeaderPrePostPadding": "\u0410\u043b\u0493\u0430\/\u0410\u0440\u0442\u049b\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441", "LabelPrePaddingMinutes": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441, \u043c\u0438\u043d:", "OptionPrePaddingRequired": "\u0410\u043b\u0493\u0430 \u0448\u0435\u0433\u0456\u043d\u0456\u0441 \u0436\u0430\u0437\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0440\u0435\u043a.", @@ -691,7 +306,7 @@ "CategorySystem": "\u0416\u04af\u0439\u0435", "CategoryApplication": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430", "CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\u043d", - "LabelMessageTitle": "\u0425\u0430\u0431\u0430\u0440 \u043c\u04d9\u0442\u0456\u043d\u0456:", + "LabelMessageTitle": "\u0425\u0430\u0431\u0430\u0440 \u0442\u0430\u049b\u044b\u0440\u044b\u0431\u044b:", "LabelAvailableTokens": "\u049a\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0431\u0430\u043b\u0430\u0443\u044b\u0448\u0442\u0430\u0440:", "AdditionalNotificationServices": "\u049a\u043e\u0441\u044b\u043c\u0448\u0430 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u043e\u0440\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435\u0441\u0456\u043d \u0448\u043e\u043b\u044b\u04a3\u044b\u0437.", "OptionAllUsers": "\u0411\u0430\u0440\u043b\u044b\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", @@ -899,7 +514,7 @@ "OptionCommunityMostWatchedSort": "\u0415\u04a3 \u043a\u04e9\u043f \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d\u0434\u0430\u0440", "TabNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", "HeaderBecomeMediaBrowserSupporter": "Media Browser \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u044b \u0431\u043e\u043b\u044b\u04a3\u044b\u0437", - "TextEnjoyBonusFeatures": "\u0421\u044b\u0439\u0430\u049b\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u043c\u0435\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437", + "TextEnjoyBonusFeatures": "\u0421\u044b\u0439\u0430\u049b\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437", "MessageNoMovieSuggestionsAvailable": "\u0415\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0444\u0438\u043b\u044c\u043c \u04b1\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440\u044b \u0430\u0493\u044b\u043c\u0434\u0430 \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456 \u0435\u043c\u0435\u0441. \u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u0430\u0440\u0430\u0443\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u0434\u044b \u0431\u0430\u0441\u0442\u0430\u04a3\u044b\u0437, \u0441\u043e\u043d\u0434\u0430 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u04b1\u0441\u044b\u043d\u044b\u0442\u0430\u0440\u044b\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0440\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0439\u0442\u0430 \u043a\u0435\u043b\u0456\u04a3\u0456\u0437.", "MessageNoCollectionsAvailable": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440 \u0441\u0456\u0437\u0433\u0435 \u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3, \u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440\u0434\u044b\u04a3, \u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440\u0434\u044b\u04a3, \u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440\u0434\u044b\u04a3, \u0436\u04d9\u043d\u0435 \u041e\u0439\u044b\u043d\u0434\u0430\u0440\u0434\u044b\u04a3 \u0434\u0435\u0440\u0431\u0435\u0441\u0442\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u043e\u043f\u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043c\u0435\u043d \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440 \u0436\u0430\u0441\u0430\u0443\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \"+\" \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.", "MessageNoPlaylistsAvailable": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456 \u0431\u0456\u0440 \u043a\u0435\u0437\u0434\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0442\u0456\u0437\u0456\u043c\u0456\u043d \u0436\u0430\u0441\u0430\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0433\u0435 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u0434\u044b \u04af\u0441\u0442\u0435\u0443 \u04af\u0448\u0456\u043d, \u0442\u0456\u043d\u0442\u0443\u0456\u0440\u0434\u0456\u04a3 \u043e\u04a3 \u0436\u0430\u049b \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0442\u04af\u0440\u0442\u0456\u043f \u0436\u04d9\u043d\u0435 \u04b1\u0441\u0442\u0430\u043f \u0442\u04b1\u0440\u044b\u04a3\u044b\u0437, \u0441\u043e\u043d\u0434\u0430 \u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456\u043d\u0435 \u04af\u0441\u0442\u0435\u0443 \u0434\u0435\u0433\u0435\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", @@ -917,6 +532,7 @@ "LabelChannelDownloadAgeHelp": "\u0411\u04b1\u0434\u0430\u043d \u0431\u04b1\u0440\u044b\u043d\u0493\u044b \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04af\u043d \u0436\u043e\u0439\u044b\u043b\u0430\u0434\u044b. \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u04d9\u0434\u0456\u0441\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u043e\u0439\u043d\u0430\u0442\u0443 \u0456\u0441\u0442\u0435 \u049b\u0430\u043b\u0430\u0434\u044b.", "ChannelSettingsFormHelp": "\u041f\u043b\u0430\u0433\u0438\u043d \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435\u0441\u0456\u043d\u0434\u0435\u0433\u0456 Trailers \u0436\u04d9\u043d\u0435 Vimeo \u0441\u0438\u044f\u049b\u0442\u044b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u043e\u0440\u043d\u0430\u0442\u044b\u04a3\u044b\u0437.", "ButtonOptions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0493\u0430", + "ViewTypePlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", "ViewTypeMovies": "\u041a\u0438\u043d\u043e", "ViewTypeTvShows": "\u0422\u0414", "ViewTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", @@ -1159,6 +775,7 @@ "LabelIfYouWishToContinueWithDeletion": "\u0415\u0433\u0435\u0440 \u0436\u0430\u043b\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u049b\u0430\u043b\u0430\u0441\u0430\u04a3\u044b\u0437, \u043c\u044b\u043d\u0430\u043d\u044b\u04a3 \u043c\u04d9\u043d\u0456\u043d \u0435\u043d\u0433\u0456\u0437\u0456\u043f \u0440\u0430\u0441\u0442\u0430\u04a3\u044b\u0437:", "ButtonIdentify": "\u0410\u043d\u044b\u049b\u0442\u0430\u0443", "LabelAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b:", + "LabelAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b:", "LabelAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c:", "LabelCommunityRating": "\u049a\u0430\u0443\u044b\u043c \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b:", "LabelVoteCount": "\u0414\u0430\u0443\u044b\u0441 \u0435\u0441\u0435\u0431\u0456:", @@ -1371,5 +988,402 @@ "LabelTagFilterMode": "\u0420\u0435\u0436\u0456\u043c:", "LabelTagFilterAllowModeHelp": "\u0415\u0433\u0435\u0440 \u04b1\u0439\u0493\u0430\u0440\u044b\u043d\u0434\u044b \u0442\u0435\u0433\u0442\u0435\u0440 \u0442\u0435\u0440\u0435\u04a3 \u043a\u0456\u0440\u0456\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u049b\u0430\u043b\u0442\u0430 \u049b\u04b1\u0440\u044b\u043b\u044b\u043c\u044b\u043d\u044b\u04a3 \u0431\u04e9\u043b\u0456\u0433\u0456 \u0431\u043e\u043b\u0441\u0430, \u043e\u043d\u0434\u0430 \u0442\u0435\u0433\u0442\u0435\u0440\u043c\u0435\u043d \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0493\u0430, \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u0442\u0435\u043a\u0442\u0456\u043a \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0431\u043e\u043b\u0443\u044b \u0442\u0430\u043b\u0430\u043f \u0435\u0442\u0456\u043b\u0435\u0434\u0456.", "HeaderThisUserIsCurrentlyDisabled": "\u041e\u0441\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u0430\u0437\u0456\u0440\u0433\u0456 \u043a\u0435\u0437\u0434\u0435 \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d", - "MessageReenableUser": "\u049a\u0430\u0439\u0442\u0430 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u043d\u0434\u0435 \u049b\u0430\u0440\u0430\u04a3\u044b\u0437" + "MessageReenableUser": "\u049a\u0430\u0439\u0442\u0430 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u043d\u0434\u0435 \u049b\u0430\u0440\u0430\u04a3\u044b\u0437", + "LabelEnableInternetMetadataForTvPrograms": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", + "OptionTVMovies": "\u0422\u0414-\u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "HeaderUpcomingMovies": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "HeaderUpcomingPrograms": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0435\u0440\u043b\u0456\u043c\u0434\u0435\u0440", + "ButtonMoreItems": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a...", + "LabelShowLibraryTileNames": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0430\u049b\u0442\u0430\u0439\u0448\u0430\u043b\u0430\u0440\u044b\u043d\u044b\u04a3 \u0430\u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", + "LabelShowLibraryTileNamesHelp": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442\u0442\u0435 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0430\u049b\u0442\u0430\u0439\u0448\u0430\u043b\u0430\u0440\u044b \u0430\u0441\u0442\u044b\u043d\u0434\u0430 \u0436\u0430\u0437\u0443\u043b\u0430\u0440 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0435 \u043c\u0435 \u0435\u043a\u0435\u043d\u0456 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", + "LabelExit": "\u0428\u044b\u0493\u0443", + "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", + "LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", + "LabelSwagger": "Swagger \u0442\u0456\u043b\u0434\u0435\u0441\u0443\u0456", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b", + "LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", + "LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", + "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", + "LabelConfigureMediaBrowser": "Media Browser \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456", + "LabelOpenLibraryViewer": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u049b\u0430\u0440\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b", + "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", + "LabelShowLogWindow": "\u0416\u04b1\u0440\u043d\u0430\u043b \u0442\u0435\u0440\u0435\u0437\u0435\u0441\u0456\u043d \u043a\u04e9\u0440\u0441\u0435\u0442\u0443", + "LabelPrevious": "\u0410\u043b\u0434\u044b\u04a3\u0493\u044b", + "LabelFinish": "\u0410\u044f\u049b\u0442\u0430\u0443", + "LabelNext": "\u041a\u0435\u043b\u0435\u0441\u0456", + "LabelYoureDone": "\u0411\u04d9\u0440\u0456 \u0434\u0430\u0439\u044b\u043d!", + "WelcomeToMediaBrowser": "Media Browser \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u0441\u044b\u043d\u0430 \u049b\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u0411\u04b1\u043b \u043a\u043e\u043c\u0435\u043a\u0448\u0456 \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u0441\u0430\u0442\u044b\u043b\u0430\u0440\u044b\u043c\u0435\u043d \u04e9\u0442\u043a\u0456\u0437\u0435\u0434\u0456. \u0411\u0430\u0441\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u04e9\u0437\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", + "TellUsAboutYourself": "\u04e8\u0437\u0456\u04a3\u0456\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u0439\u0442\u044b\u04a3\u044b\u0437", + "ButtonQuickStartGuide": "\u0422\u0435\u0437 \u0431\u0430\u0441\u0442\u0430\u0443 \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u0493\u044b\u043d\u0430", + "LabelYourFirstName": "\u0410\u0442\u044b\u04a3\u044b\u0437:", + "MoreUsersCanBeAddedLater": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u043a\u0435\u0439\u0456\u043d \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b \u0430\u0440\u049b\u044b\u043b\u044b \u04af\u0441\u0442\u0435\u0443\u0456\u04a3\u0456\u0437 \u043c\u04af\u043c\u043a\u0456\u043d.", + "UserProfilesIntro": "Media Browser \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440\u0456\u043d \u049b\u0430\u043c\u0442\u0438\u0434\u044b, \u04d9\u0440 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u04e9\u0437\u0456\u043d\u0456\u04a3 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456, \u043e\u0439\u043d\u0430\u0442\u0443 \u043a\u04af\u0439\u0456 \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", + "LabelWindowsService": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456", + "AWindowsServiceHasBeenInstalled": "Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b.", + "WindowsServiceIntro1": "Media Browser Server \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456 \u0431\u0430\u0440 \u0436\u04b1\u043c\u044b\u0441 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0441\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u04d9\u0434\u0435\u043f\u043a\u0456 \u043e\u0440\u044b\u043d\u0434\u0430\u043b\u0430\u0434\u044b, \u0431\u0456\u0440\u0430\u049b \u0435\u0433\u0435\u0440 \u0431\u04b1\u043d\u044b \u04e9\u04a3\u0434\u0456\u043a \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0434\u0456 \u049b\u0430\u043b\u0430\u0441\u0430\u04a3\u044b\u0437, \u043e\u0440\u043d\u044b\u043d\u0430 \u0431\u04b1\u043b Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", + "WindowsServiceIntro2": "\u0415\u0433\u0435\u0440 Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0435\u0441\u043a\u0435\u0440\u0456\u04a3\u0456\u0437, \u0431\u04b1\u043b \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u0439 \u0436\u04af\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u043d \u0448\u044b\u0493\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442. \u0421\u043e\u0493\u0430\u043d \u049b\u0430\u0442\u0430\u0440, \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u04d9\u043a\u0456\u043c\u0448\u0456 \u049b\u04b1\u049b\u044b\u049b\u0442\u0430\u0440\u044b\u043d\u0430 \u0438\u0435 \u0431\u043e\u043b\u044b\u043f \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0440\u0435\u0442\u0442\u0435\u0443\u0456\u0448\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0435\u04a3\u0448\u0435\u0443 \u049b\u0430\u0436\u0435\u0442. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0431\u04b1\u043b \u049b\u044b\u0437\u043c\u0435\u0442 \u04e9\u0437\u0456\u043d\u0435\u043d-\u04e9\u0437\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u043c\u0430\u0439\u0434\u044b, \u0441\u043e\u043d\u0434\u044b\u049b\u0442\u0430\u043d \u0436\u0430\u04a3\u0430 \u043d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440 \u049b\u043e\u043b\u043c\u0435\u043d \u04e9\u0437\u0430\u0440\u0430 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0441\u0443\u0434\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0434\u0456.", + "WizardCompleted": "\u0411\u04b1\u043b \u04d9\u0437\u0456\u0440\u0448\u0435 \u0431\u0456\u0437\u0433\u0435 \u043a\u0435\u0440\u0435\u0433\u0456\u043d\u0456\u04a3 \u0431\u04d9\u0440\u0456. Media Browser \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u0438\u043d\u0430\u0443\u0434\u044b \u0431\u0430\u0441\u0442\u0430\u0434\u044b. \u041a\u0435\u0439\u0431\u0456\u0440 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043c\u044b\u0437\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437 \u0434\u0430, \u0421\u0435\u0440\u0432\u0435\u0440 \u0431\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b\u043d<\/b> \u043a\u04e9\u0440\u0443 \u04af\u0448\u0456\u043d \u043a\u0435\u0439\u0456\u043d \u0414\u0430\u0439\u044b\u043d<\/b>\u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437.", + "LabelConfigureSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443", + "LabelEnableVideoImageExtraction": "\u0411\u0435\u0439\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "VideoImageExtractionHelp": "\u04d8\u043b\u0456 \u0434\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u0436\u043e\u049b, \u0436\u04d9\u043d\u0435 \u043e\u043b\u0430\u0440 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440 \u04af\u0448\u0456\u043d. \u0411\u04b1\u043b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b\u04a3 \u0431\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0456 \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043c\u0448\u0430 \u0443\u0430\u049b\u044b\u0442 \u04af\u0441\u0442\u0435\u0439\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u043d\u04d9\u0442\u0438\u0436\u0435\u0441\u0456\u043d\u0434\u0435 \u04b1\u043d\u0430\u043c\u0434\u044b\u043b\u0430\u0443 \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c \u0431\u043e\u043b\u0430\u0434\u044b.", + "LabelEnableChapterImageExtractionForMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelChapterImageExtractionForMoviesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u0411\u04b1\u043b \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456, \u0434\u0435\u0433\u0435\u043d\u043c\u0435\u043d \u0431\u04b1\u043b \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelEnableAutomaticPortMapping": "\u041f\u043e\u0440\u0442 \u0430\u0432\u0442\u043e\u0441\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443\u044b\u043d \u049b\u043e\u0441\u0443", + "LabelEnableAutomaticPortMappingHelp": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u044b\u043f \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d UPnP \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043a\u0435\u0439\u0431\u0456\u0440 \u0436\u043e\u043b \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u044b\u0448 \u04af\u043b\u0433\u0456\u043b\u0435\u0440\u0456\u043c\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0439\u0442\u0456\u043d\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "HeaderTermsOfService": "Media Browser \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b", + "MessagePleaseAcceptTermsOfService": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u0441 \u0431\u04b1\u0440\u044b\u043d \u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u0436\u04d9\u043d\u0435 \u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u04a3\u044b\u0437.", + "OptionIAcceptTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0439\u043c\u044b\u043d", + "ButtonPrivacyPolicy": "\u049a\u04b1\u043f\u0438\u044f\u043b\u044b\u043b\u044b\u049b \u0441\u0430\u044f\u0441\u0430\u0442\u044b\u043d\u0430", + "ButtonTermsOfService": "\u049a\u044b\u0437\u043c\u0435\u0442 \u0448\u0430\u0440\u0442\u0442\u0430\u0440\u044b\u043d\u0430", + "HeaderDeveloperOptions": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "OptionEnableWebClientResponseCache": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u04af\u043d \u049b\u0430\u0442\u0443 \u043a\u044d\u0448\u0442\u0435\u0443\u0456\u043d \u049b\u043e\u0441\u0443", + "OptionDisableForDevelopmentHelp": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u043c\u044b\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u0435\u04a3\u0448\u0435\u04a3\u0456\u0437.", + "OptionEnableWebClientResourceMinification": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u049b\u043e\u0440\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelDashboardSourcePath": "\u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043a\u04e9\u0437\u0456\u043d\u0456\u04a3 \u0436\u043e\u043b\u044b:", + "LabelDashboardSourcePathHelp": "\u0415\u0433\u0435\u0440 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u043d\u0430\u0440 \u043a\u043e\u0434\u044b\u043d\u0430\u043d \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0441\u0435, dashboard-ui \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u0430 \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u0412\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0456\u04a3 \u0431\u0430\u0440\u043b\u044b\u049b \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u043e\u0441\u044b \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u0430\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u0430\u0434\u044b.", + "ButtonConvertMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443", + "ButtonOrganize": "\u04b0\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u0443", + "LinkedToMediaBrowserConnect": "Media Browser Connect \u04af\u0448\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u049b\u0430\u043d", + "HeaderSupporterBenefits": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0430\u0440\u0442\u044b\u049b\u0448\u044b\u043b\u044b\u049b\u0442\u0430\u0440\u044b", + "HeaderAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "LabelAddConnectSupporterHelp": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435 \u0436\u043e\u049b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443 \u04af\u0448\u0456\u043d, \u0430\u043b\u0434\u044b\u043c\u0435\u043d \u043e\u043d\u044b\u04a3 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b \u0431\u0435\u0442\u0456\u043d\u0435\u043d Media Browser Connect \u04af\u0448\u0456\u043d \u043e\u043d\u044b\u04a3 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u044b\u0440\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442.", + "LabelPinCode": "PIN-\u043a\u043e\u0434:", + "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", + "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", + "ButtonExit": "\u0428\u044b\u0493\u0443", + "ButtonNew": "\u0416\u0430\u0441\u0430\u0443", + "HeaderTV": "\u0422\u0414", + "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", + "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435", + "HeaderPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", + "CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "\u041e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434", + "HeaderGrownupsOnly": "\u0422\u0435\u043a \u0435\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440!", + "DividerOr": "-- \u043d\u0435\u043c\u0435\u0441\u0435 --", + "HeaderInstalledServices": "\u041e\u0440\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", + "HeaderAvailableServices": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440", + "MessageNoServicesInstalled": "\u049a\u0430\u0437\u0456\u0440\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", + "HeaderToAccessPleaseEnterEasyPinCode": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u043e\u04a3\u0430\u0439\u0442\u044b\u043b\u0493\u0430\u043d PIN-\u043a\u043e\u0434\u0442\u044b \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437", + "KidsModeAdultInstruction": "\u0422\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0442\u04e9\u043c\u0435\u0434\u0435\u0433\u0456 \u043e\u04a3 \u0436\u0430\u049b\u0442\u0430\u0493\u044b \u049b\u04b1\u043b\u044b\u043f \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0431\u0430\u043b\u0430\u043b\u044b\u049b \u0440\u0435\u0436\u0456\u043c\u0456\u043d \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437. PIN-\u043a\u043e\u0434\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", + "ButtonConfigurePinCode": "PIN-\u043a\u043e\u0434\u0442\u044b \u0442\u0435\u04a3\u0448\u0435\u0443", + "HeaderAdultsReadHere": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0435\u0440, \u043c\u044b\u043d\u0430\u043d\u044b \u043e\u049b\u044b\u04a3\u044b\u0437!", + "RegisterWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u0442\u0456\u0440\u043a\u0435\u043b\u0443", + "HeaderSyncRequiresSupporterMembership": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043b\u044b\u049b \u043c\u04af\u0448\u0435\u043b\u0456\u043a \u049b\u0430\u0436\u0435\u0442", + "HeaderEnjoyDayTrial": "\u0422\u0435\u0433\u0456\u043d \u0441\u044b\u043d\u0430\u0443\u0434\u044b 14 \u043a\u04af\u043d \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u04a3\u044b\u0456\u0437", + "LabelSyncTempPath": "\u0423\u0430\u049b\u044b\u0442\u0448\u0430 \u0444\u0430\u0439\u043b \u0436\u043e\u043b\u044b:", + "LabelSyncTempPathHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u04b1\u043c\u044b\u0441 \u049b\u0430\u043b\u0442\u0430\u043d\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u043e\u0441\u044b \u043e\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u043b\u0430\u0434\u044b.", + "LabelCustomCertificatePath": "\u041a\u0443\u04d9\u043b\u0456\u043a \u0436\u043e\u043b\u044b:", + "LabelCustomCertificatePathHelp": "\u04e8\u0437 SSL-\u043a\u0443\u04d9\u043b\u0456\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 .pfx \u0444\u0430\u0439\u043b\u044b\u043d \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437. \u0415\u0433\u0435\u0440 \u0442\u04af\u0441\u0456\u0440\u0456\u043b\u0441\u0435, \u0441\u0435\u0440\u0432\u0435\u0440 \u043c\u0435\u043d\u0448\u0456\u043a \u049b\u043e\u043b\u0442\u0430\u04a3\u0431\u0430\u0441\u044b \u0431\u0430\u0440 \u043a\u0443\u04d9\u043b\u0456\u043a\u0442\u0456 \u0436\u0430\u0441\u0430\u0439\u0434\u044b.", + "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", + "ButtonDonateWithPayPal": "PayPal \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", + "OptionDetectArchiveFilesAsMedia": "\u041c\u04b1\u0440\u0430\u0493\u0430\u0442\u0442\u0430\u043b\u0493\u0430\u043d \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u0443", + "OptionDetectArchiveFilesAsMediaHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, .rar \u0436\u04d9\u043d\u0435 .zip \u043a\u0435\u04a3\u0435\u0439\u0442\u0456\u043c\u0434\u0435\u0440\u0456 \u0431\u0430\u0440 \u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", + "LabelEnterConnectUserName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456", + "LabelEnterConnectUserNameHelp": "\u0411\u04b1\u043b - \u0441\u0456\u0437\u0434\u0456\u04a3 Media Browser \u0436\u0435\u043b\u0456\u043b\u0456\u043a \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043d\u0435\u043c\u0435\u0441\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456.", + "LabelEnableEnhancedMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u0436\u0430\u049b\u0441\u0430\u0440\u0442\u044b\u043b\u0493\u0430\u043d \u0431\u0435\u0439\u043d\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443", + "LabelEnableEnhancedMoviesHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440\u0434\u0456, \u049b\u043e\u0441\u044b\u043c\u0448\u0430\u043b\u0430\u0440\u0434\u044b, \u0442\u04af\u0441\u0456\u0440\u0443\u0433\u0435 \u049b\u0430\u0442\u044b\u0441\u049b\u0430\u043d\u0434\u0430\u0440\u0434\u044b \u0436\u04d9\u043d\u0435 \u0431\u0430\u0441\u049b\u0430 \u049b\u0430\u0442\u044b\u0441\u0442\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u049b\u0430\u043c\u0442\u0443 \u04af\u0448\u0456\u043d, \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440 \u049b\u0430\u043b\u0442\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0435\u0434\u0456", + "HeaderSyncJobInfo": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b", + "FolderTypeMixed": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", + "FolderTypeMovies": "\u041a\u0438\u043d\u043e", + "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", + "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", + "FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", + "FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", + "FolderTypeTvShows": "\u0422\u0414", + "FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", + "LabelContentType": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0442\u04af\u0440\u0456:", + "TitleScheduledTasks": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043b\u0430\u0440", + "HeaderSetupLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443", + "ButtonAddMediaFolder": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d \u04af\u0441\u0442\u0435\u0443", + "LabelFolderType": "\u049a\u0430\u043b\u0442\u0430 \u0442\u04af\u0440\u0456:", + "ReferToMediaLibraryWiki": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0442\u0443\u0440\u0430\u043b\u044b \u0443\u0438\u043a\u0438 \u0456\u0448\u0456\u043d\u0435\u043d \u049b\u0430\u0440\u0430\u04a3\u044b\u0437.", + "LabelCountry": "\u0415\u043b:", + "LabelLanguage": "\u0422\u0456\u043b:", + "LabelTimeLimitHours": "\u0423\u0430\u049b\u044b\u0442 \u0448\u0435\u0433\u0456 (\u0441\u0430\u0493\u0430\u0442):", + "ButtonJoinTheDevelopmentTeam": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0442\u043e\u0431\u044b\u043d\u0430 \u043a\u0456\u0440\u0443", + "HeaderPreferredMetadataLanguage": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "LabelSaveLocalMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u0443", + "LabelSaveLocalMetadataHelp": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u0443\u044b \u043e\u043b\u0430\u0440\u0434\u044b \u0436\u0435\u04a3\u0456\u043b \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0430\u0442\u044b\u043d \u043e\u0440\u044b\u043d\u0493\u0430 \u049b\u043e\u044f\u0434\u044b.", + "LabelDownloadInternetMetadata": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", + "LabelDownloadInternetMetadataHelp": "\u0422\u043e\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d Media Browser \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "TabPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440", + "TabPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", + "TabLibraryAccess": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "TabAccess": "\u049a\u0430\u0442\u044b\u043d\u0430\u0443", + "TabImage": "\u0421\u0443\u0440\u0435\u0442", + "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c", + "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "TabImages": "\u0421\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "TabNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", + "TabCollectionTitles": "\u0422\u0443\u044b\u043d\u0434\u044b\u043b\u0430\u0440", + "HeaderDeviceAccess": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "OptionEnableAccessFromAllDevices": "\u0411\u0430\u0440\u043b\u044b\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "OptionEnableAccessToAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "OptionEnableAccessToAllLibraries": "\u0411\u0430\u0440\u043b\u044b\u049b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "DeviceAccessHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0433\u0435\u0439 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0448\u043e\u043b\u0493\u044b\u0448\u043f\u0435\u043d \u049b\u0430\u043d\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u043c\u0430\u0439\u0434\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0441\u044b\u043d\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0441\u04af\u0437\u0433\u0456\u043b\u0435\u0443\u0456 \u0436\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u043c\u04b1\u043d\u0434\u0430 \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d\u0448\u0435 \u0434\u0435\u0439\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0430\u0434\u044b.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443", + "HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", + "LabelAudioLanguagePreference": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "LabelSubtitleLanguagePreference": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "OptionDefaultSubtitles": "\u04d8\u0434\u0435\u043f\u043a\u0456", + "OptionOnlyForcedSubtitles": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", + "OptionAlwaysPlaySubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u04d9\u0440\u049b\u0430\u0448\u0430\u043d \u043e\u0439\u043d\u0430\u0442\u0443", + "OptionNoSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u043e\u049b", + "OptionDefaultSubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0448\u0435\u0442\u0435\u043b \u0442\u0456\u043b\u0456\u043d\u0434\u0435 \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionOnlyForcedSubtitlesHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u043c\u04d9\u0436\u0431\u04af\u0440\u043b\u0456 \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u043d\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionAlwaysPlaySubtitlesHelp": "\u0422\u0456\u043b \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456\u043d\u0435 \u0441\u04d9\u0439\u043a\u0435\u0441 \u043a\u0435\u043b\u0433\u0435\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0434\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0435 \u049b\u0430\u0442\u044b\u0441\u0441\u044b\u0437 \u0436\u04af\u043a\u0442\u0435\u043b\u0435\u0434\u0456.", + "OptionNoSubtitlesHelp": "\u04d8\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u043c\u0435\u0439\u0434\u0456.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440", + "TabSecurity": "\u049a\u0430\u0443\u0456\u043f\u0441\u0456\u0437\u0434\u0456\u043a", + "ButtonAddUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "ButtonAddLocalUser": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u04af\u0441\u0442\u0435\u0443", + "ButtonInviteUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u0448\u0430\u049b\u044b\u0440\u0443", + "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", + "ButtonResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443", + "LabelNewPassword": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437", + "LabelNewPasswordConfirm": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0440\u0430\u0441\u0442\u0430\u0443:", + "HeaderCreatePassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0436\u0430\u0441\u0430\u0443", + "LabelCurrentPassword": "\u0410\u0493\u044b\u043c\u0434\u0430\u0493\u044b \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", + "LabelMaxParentalRating": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u04b1\u0439\u0493\u0430\u0440\u044b\u043d\u0434\u044b \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b:", + "MaxParentalRatingHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0436\u043e\u0493\u0430\u0440\u044b\u043b\u0430\u0443 \u0436\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b \u0431\u0430\u0440 \u043c\u0430\u0437\u043c\u04b1\u043d \u0436\u0430\u0441\u044b\u0440\u044b\u043b\u0430\u0434\u044b", + "LibraryAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "ChannelAccessHelp": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043c\u0435\u043d \u043e\u0440\u0442\u0430\u049b\u0442\u0430\u0441\u0443 \u04af\u0448\u0456\u043d \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u04a3\u0456\u0437. \u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0440\u0435\u0442\u0442\u0435\u0443\u0448\u0456\u043d\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f \u04d9\u043a\u0456\u043c\u0448\u0456\u043b\u0435\u0440 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u04e9\u04a3\u0434\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "ButtonDeleteImage": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u0436\u043e\u044e", + "LabelSelectUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u0442\u0430\u04a3\u0434\u0430\u0443:", + "ButtonUpload": "\u041a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", + "HeaderUploadNewImage": "\u0416\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0456 \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u0443", + "LabelDropImageHere": "\u0421\u0443\u0440\u0435\u0442\u0442\u0456 \u043c\u04b1\u043d\u0434\u0430 \u0441\u04af\u0439\u0440\u0435\u0442\u0456\u04a3\u0456\u0437", + "ImageUploadAspectRatioHelp": "1:1 \u043f\u0456\u0448\u0456\u043c\u0434\u0456\u043a \u0430\u0440\u0430\u049b\u0430\u0442\u044b\u043d\u0430\u0441\u044b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b. \u0422\u0435\u043a \u049b\u0430\u043d\u0430 JPG\/PNG.", + "MessageNothingHere": "\u041e\u0441\u044b\u043d\u0434\u0430 \u0435\u0448\u0442\u0435\u043c\u0435 \u0436\u043e\u049b.", + "MessagePleaseEnsureInternetMetadata": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u044b\u043d\u0430 \u043a\u04e9\u0437 \u0436\u0435\u0442\u043a\u0456\u0437\u0456\u04a3\u0456\u0437.", + "TabSuggested": "\u04b0\u0441\u044b\u043d\u044b\u043b\u0493\u0430\u043d", + "TabLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", + "TabUpcoming": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d", + "TabShows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", + "TabEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "TabGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", + "TabPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", + "TabNetworks": "\u0416\u0435\u043b\u0456\u043b\u0435\u0440", + "HeaderUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440", + "HeaderFilters": "\u0421\u04af\u0437\u0433\u0456\u043b\u0435\u0440:", + "ButtonFilter": "\u0421\u04af\u0437\u0443", + "OptionFavorite": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "OptionLikes": "\u04b0\u043d\u0430\u0442\u0443\u043b\u0430\u0440", + "OptionDislikes": "\u04b0\u043d\u0430\u0442\u043f\u0430\u0443\u043b\u0430\u0440", + "OptionActors": "\u0410\u043a\u0442\u0435\u0440\u043b\u0435\u0440", + "OptionGuestStars": "\u0428\u0430\u049b\u044b\u0440\u044b\u043b\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440\u043b\u0435\u0440", + "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440", + "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0448\u0456\u043b\u0435\u0440", + "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043b\u0435\u0440", + "HeaderResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", + "NoNextUpItemsMessage": "\u0415\u0448\u0442\u0435\u04a3\u0435 \u0442\u0430\u0431\u044b\u043b\u043c\u0430\u0434\u044b. \u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u049b\u0430\u0440\u0430\u0439 \u0431\u0430\u0441\u0442\u0430\u04a3\u044b\u0437!", + "HeaderLatestEpisodes": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "HeaderPersonTypes": "\u0422\u04b1\u043b\u0493\u0430 \u0442\u04af\u0440\u043b\u0435\u0440\u0456:", + "TabSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", + "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0435\u0440", + "TabArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", + "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "ButtonSort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443", + "HeaderSortBy": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0442\u04d9\u0441\u0456\u043b\u0456:", + "HeaderSortOrder": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443 \u0440\u0435\u0442\u0456:", + "OptionPlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d", + "OptionUnplayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0493\u0430\u043d", + "OptionAscending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "OptionDescending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430", + "OptionRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", + "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", + "OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", + "OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d\u0456", + "OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", + "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u0441\u044b", + "OptionArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", + "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", + "OptionTrackName": "\u0416\u043e\u043b\u0448\u044b\u049b \u0430\u0442\u044b", + "OptionCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionNameSort": "\u0410\u0442\u044b", + "OptionFolderSort": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", + "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", + "OptionRevenue": "\u0422\u0430\u0431\u044b\u0441", + "OptionPoster": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437", + "OptionPosterCard": "\u0416\u0430\u0440\u049b\u0430\u0493\u0430\u0437-\u043a\u0430\u0440\u0442\u0430", + "OptionBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", + "OptionTimeline": "\u0423\u0430\u049b\u044b\u0442 \u0448\u043a\u0430\u043b\u0430\u0441\u044b", + "OptionThumb": "\u041d\u043e\u0431\u0430\u0439", + "OptionThumbCard": "\u041d\u043e\u0431\u0430\u0439-\u043a\u0430\u0440\u0442\u0430", + "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", + "OptionCriticRating": "\u0421\u044b\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionVideoBitrate": "\u0411\u0435\u0439\u043d\u0435 \u049b\u0430\u0440\u049b\u044b\u043d\u044b", + "OptionResumable": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0430\u043b\u0430\u0442\u044b\u043d", + "ScheduledTasksHelp": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u044b\u043d \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0443 \u04af\u0448\u0456\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u043d\u04b1\u049b\u044b\u04a3\u044b\u0437.", + "ScheduledTasksTitle": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b", + "TabMyPlugins": "\u041c\u0435\u043d\u0456\u04a3 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456\u043c", + "TabCatalog": "\u0422\u0456\u0437\u0456\u043c\u0434\u0435\u043c\u0435", + "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440", + "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440", + "HeaderNowPlaying": "\u049a\u0430\u0437\u0456\u0440 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0443\u0434\u0430", + "HeaderLatestAlbums": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "HeaderLatestSongs": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", + "HeaderRecentlyPlayed": "\u0416\u0430\u049b\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", + "HeaderFrequentlyPlayed": "\u0416\u0438\u0456 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", + "DevBuildWarning": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0435\u04a3 \u0430\u043b\u0434\u044b\u04a3\u0493\u044b \u049b\u0430\u0442\u0430\u0440\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. \u0416\u0438\u0456 \u0448\u044b\u0493\u0430\u0440\u043b\u044b\u043f \u043c\u044b\u043d\u0430 \u049b\u04b1\u0440\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u0430\u0440 \u0442\u043e\u043b\u044b\u049b \u0441\u044b\u043d\u0430\u049b\u0442\u0430\u043c\u0430\u043b\u0430\u0443\u0434\u0430\u043d \u04e9\u0442\u043f\u0435\u0433\u0435\u043d. \u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0431\u04b1\u0437\u044b\u043b\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0436\u04d9\u043d\u0435 \u0430\u049b\u044b\u0440 \u0430\u044f\u0493\u044b\u043d\u0434\u0430 \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440 \u0431\u04af\u0442\u0456\u043d\u0434\u0435\u0439 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u043c\u0435\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "LabelVideoType": "\u0411\u0435\u0439\u043d\u0435 \u0442\u04af\u0440\u0456:", + "OptionBluray": "BluRay", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440:", + "LabelService": "\u049a\u044b\u0437\u043c\u0435\u0442:", + "LabelStatus": "\u041a\u04af\u0439:", + "LabelVersion": "\u041d\u04b1\u0441\u049b\u0430:", + "LabelLastResult": "\u0421\u043e\u04a3\u0493\u044b \u043d\u04d9\u0442\u0438\u0436\u0435:", + "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", + "OptionHasTrailer": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440", + "OptionHasThemeSong": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u04d9\u0443\u0435\u043d", + "OptionHasThemeVideo": "\u0422\u0430\u049b\u044b\u0440\u044b\u043f\u0442\u044b\u049b \u0431\u0435\u0439\u043d\u0435", + "TabMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "TabStudios": "\u0421\u0442\u0443\u0434\u0438\u044f\u043b\u0430\u0440", + "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", + "LabelArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440:", + "LabelArtistsHelp": "\u0411\u0456\u0440\u043d\u0435\u0448\u0443\u0456\u043d (;) \u0430\u0440\u049b\u044b\u043b\u044b \u0431\u04e9\u043b\u0456\u04a3\u0456\u0437", + "HeaderLatestMovies": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "HeaderLatestTrailers": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", + "OptionHasSpecialFeatures": "\u0410\u0440\u043d\u0430\u0439\u044b \u0435\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440", + "OptionImdbRating": "IMDb \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "OptionParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442", + "OptionPremiereDate": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440 \u043a\u04af\u043d-\u0430\u0439\u044b", + "TabBasic": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", + "TabAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", + "HeaderStatus": "\u041a\u04af\u0439", + "OptionContinuing": "\u0416\u0430\u043b\u0493\u0430\u0441\u0443\u0434\u0430", + "OptionEnded": "\u0410\u044f\u049b\u0442\u0430\u043b\u0434\u044b", + "HeaderAirDays": "\u042d\u0444\u0438\u0440 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", + "OptionSunday": "\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456", + "OptionMonday": "\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionTuesday": "\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionWednesday": "\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456", + "OptionThursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", + "OptionFriday": "\u0436\u04b1\u043c\u0430", + "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456", + "HeaderManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "LabelManagement": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "OptionMissingImdbId": "IMDb Id \u0436\u043e\u049b", + "OptionMissingTvdbId": "TheTVDB Id \u0436\u043e\u049b", + "OptionMissingOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443 \u0436\u043e\u049b", + "OptionFileMetadataYearMismatch": "\u0424\u0430\u0439\u043b\/\u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0436\u044b\u043b\u044b \u0441\u04d9\u0439\u043a\u0435\u0441 \u0435\u043c\u0435\u0441", + "TabGeneral": "\u0416\u0430\u043b\u043f\u044b", + "TitleSupport": "\u0416\u0430\u049b\u0442\u0430\u0443", + "TabLog": "\u0416\u04b1\u0440\u043d\u0430\u043b", + "TabAbout": "\u0422\u0443\u0440\u0430\u043b\u044b", + "TabSupporterKey": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u0456\u043b\u0442\u0456", + "TabBecomeSupporter": "\u0416\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u0431\u043e\u043b\u0443", + "MediaBrowserHasCommunity": "Media Browser \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u044b \u0431\u0435\u043d \u049b\u043e\u043b\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b\u04a3 \u0434\u0430\u043c\u0443\u0434\u0430\u0493\u044b \u049b\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0493\u044b \u0431\u0430\u0440.", + "CheckoutKnowledgeBase": "Media Browser \u0435\u04a3 \u04af\u043b\u043a\u0435\u043d \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u0430\u043b\u0443 \u0436\u04e9\u043d\u0456\u043d\u0434\u0435 \u043a\u04e9\u043c\u0435\u043a\u0442\u0435\u0441\u0443 \u04af\u0448\u0456\u043d \u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d \u049b\u0430\u0440\u0430\u043f \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", + "SearchKnowledgeBase": "\u0411\u0456\u043b\u0456\u043c \u049b\u043e\u0440\u044b\u043d\u0430\u043d \u0456\u0437\u0434\u0435\u0443", + "VisitTheCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", + "VisitMediaBrowserWebsite": "Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u0443", + "VisitMediaBrowserWebsiteLong": "\u0421\u043e\u04a3\u0493\u044b \u0436\u0430\u04a3\u0430\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0431\u0456\u043b\u0456\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0436\u04d9\u043d\u0435 \u0436\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u0431\u043b\u043e\u0433\u0456\u043c\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d Media Browser \u0441\u0430\u0439\u0442\u044b\u043d\u0430 \u0431\u0430\u0440\u044b\u04a3\u044b\u0437.", + "OptionHideUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b \u043a\u0456\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0434\u0430\u0440\u044b\u043d\u0430\u043d \u0436\u0430\u0441\u044b\u0440\u0443", + "OptionHideUserFromLoginHelp": "\u0416\u0435\u043a\u0435 \u043d\u0435\u043c\u0435\u0441\u0435 \u0436\u0430\u0441\u044b\u0440\u044b\u043d \u04d9\u043a\u0456\u043c\u0448\u0456 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u043b\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b \u043c\u0435\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u0435\u043d\u0433\u0456\u0437\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u049b\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0430\u0434\u044b.", + "OptionDisableUser": "\u0411\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443", + "OptionDisableUserHelp": "\u0415\u0433\u0435\u0440 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u044b\u043d\u0441\u0430, \u0441\u0435\u0440\u0432\u0435\u0440 \u0431\u04b1\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0434\u0430\u043d \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u043f\u0435\u0439\u0434\u0456. \u0411\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440 \u043a\u0435\u043d\u0435\u0442 \u04af\u0437\u0456\u043b\u0435\u0434\u0456.", + "HeaderAdvancedControl": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", + "LabelName": "\u0410\u0442\u044b:", + "ButtonHelp": "\u0410\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", + "OptionAllowUserToManageServer": "\u0411\u0443\u043b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u0493\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "HeaderFeatureAccess": "\u0415\u0440\u0435\u043a\u0448\u0435\u043b\u0456\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0442\u044b\u043d\u0430\u0443", + "OptionAllowMediaPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowBrowsingLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowDeleteLibraryContent": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044e\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowManageLiveTv": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414 \u0436\u0430\u0437\u0443\u044b\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0493\u0430 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteControlOthers": "\u0411\u0430\u0441\u049b\u0430 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteSharedDevices": "\u041e\u0440\u0442\u0430\u049b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u049b\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-\u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0430\u0441\u049b\u0430\u0440\u0493\u0430\u043d\u0448\u0430 \u0434\u0435\u0439\u0456\u043d \u043e\u0440\u0442\u0430\u049b \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0435\u0441\u0435\u043f\u0442\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", + "HeaderRemoteControl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u0431\u0430\u0441\u049b\u0430\u0440\u0443", + "OptionMissingTmdbId": "TMDb Id \u0436\u043e\u049b", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", + "ButtonSelect": "\u0411\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", + "ButtonGroupVersions": "\u041d\u04b1\u0441\u049b\u0430\u043b\u0430\u0440\u0434\u044b \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443", + "ButtonAddToCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443", + "PismoMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Pismo File Mount \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", + "TangibleSoftwareMessage": "\u0421\u044b\u0439\u043b\u0430\u043d\u0493\u0430\u043d \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0430\u0440\u049b\u044b\u043b\u044b Tangible Solutions Java\/C# \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0433\u0456\u0448\u0442\u0435\u0440\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430.", + "HeaderCredits": "\u0428\u044b\u0493\u0430\u0440\u043c\u0430\u0448\u044b\u043b\u044b\u049b\u0442\u044b \u0440\u0430\u0441\u0442\u0430\u0443", + "PleaseSupportOtherProduces": "\u0411\u0456\u0437 \u049b\u043e\u043b\u0434\u0430\u043d\u0430\u0442\u044b\u043d \u0431\u0430\u0441\u049b\u0430 \u0442\u0435\u0433\u0456\u043d \u04e9\u043d\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u049b\u0442\u0430\u04a3\u044b\u0437:", + "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", + "TabPaths": "\u0416\u043e\u043b\u0434\u0430\u0440", + "TabServer": "\u0421\u0435\u0440\u0432\u0435\u0440", + "TabTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443", + "TitleAdvanced": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d", + "LabelAutomaticUpdateLevel": "\u0410\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443 \u0434\u0435\u04a3\u0433\u0435\u0439\u0456", + "OptionRelease": "\u0420\u0435\u0441\u043c\u0438 \u0448\u044b\u0493\u0430\u0440\u044b\u043b\u044b\u043c", + "OptionBeta": "\u0411\u0435\u0442\u0430 \u043d\u04b1\u0441\u049b\u0430", + "OptionDev": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443 (\u0442\u04b1\u0440\u0430\u049b\u0441\u044b\u0437)", + "LabelAllowServerAutoRestart": "\u0416\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0433\u0435 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u044b \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "LabelAllowServerAutoRestartHelp": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0443\u043d\u0448\u044b\u043b\u0430\u0440 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0435\u043c\u0435\u0441, \u04d9\u0440\u0435\u043a\u0435\u0442\u0441\u0456\u0437 \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435\u0440\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b.", + "LabelEnableDebugLogging": "\u041a\u04af\u0439\u043a\u0435\u043b\u0442\u0456\u0440\u0443 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u044b\u043d \u0436\u04b1\u0440\u043d\u0430\u043b\u0434\u0430 \u049b\u043e\u0441\u0443", + "LabelRunServerAtStartup": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443\u0434\u0430\u043d \u0431\u0430\u0441\u0442\u0430\u043f \u043e\u0440\u044b\u043d\u0434\u0430\u0443", + "LabelRunServerAtStartupHelp": "\u0411\u04b1\u043b Windows \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0493\u0430\u043d\u0434\u0430 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0430\u0434\u044b. Windows \u049b\u044b\u0437\u043c\u0435\u0442\u0456\u043d \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u04af\u0448\u0456\u043d, \u049b\u04b1\u0441\u0431\u0435\u043b\u0433\u0456\u043d\u0456 \u0430\u043b\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 Windows \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u0434\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u04a3\u044b\u0437. \u041d\u0430\u0437\u0430\u0440 \u0430\u0443\u0434\u0430\u0440\u044b\u04a3\u044b\u0437! \u0411\u04b1\u043b \u0435\u043a\u0435\u0443\u0456\u043d \u0441\u043e\u043b \u043c\u0435\u0437\u0433\u0456\u043b\u0434\u0435 \u0431\u0456\u0440\u0433\u0435 \u043e\u0440\u044b\u043d\u0434\u0430\u0443 \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441, \u0441\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u044b\u0437\u043c\u0435\u0442\u0442\u0456 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u0430\u043b\u0434\u044b\u043d\u0430\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u0442\u0430\u049b\u0442\u0430\u0434\u0430\u0493\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0434\u0435\u043d \u0448\u044b\u0493\u044b\u04a3\u044b\u0437.", + "ButtonSelectDirectory": "\u049a\u0430\u0442\u0430\u043b\u043e\u0433\u0442\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443", + "LabelCustomPaths": "\u049a\u0430\u043b\u0430\u0443\u044b\u04a3\u044b\u0437 \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u0430\u0440\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437. \u04d8\u0434\u0435\u043f\u043a\u0456\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u04e9\u0440\u0456\u0441\u0442\u0435\u0440\u0434\u0456 \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", + "LabelCachePath": "\u041a\u044d\u0448\u043a\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelCachePathHelp": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043a\u044d\u0448 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelImagesByNamePath": "\u0410\u0442\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelImagesByNamePathHelp": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440, \u0436\u0430\u043d\u0440, \u0436\u04d9\u043d\u0435 \u0441\u0442\u0443\u0434\u0438\u044f \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelMetadataPath": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0433\u0435 \u049b\u0430\u0440\u0430\u0439 \u0436\u043e\u043b:", + "LabelMetadataPathHelp": "\u0415\u0433\u0435\u0440 \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b \u0456\u0448\u0456\u043d\u0434\u0435 \u0441\u0430\u049b\u0442\u0430\u043b\u043c\u0430\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u043c\u0435\u043b\u0435\u0440 \u0431\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u0430\u0439\u0493\u0430\u0441\u044b\u043c\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.", + "LabelTranscodingTempPath": "Transcoding temporary \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u044b\u04a3 \u0436\u043e\u043b\u044b:", + "LabelTranscodingTempPathHelp": "\u0411\u04b1\u043b \u049b\u0430\u043b\u0442\u0430 \u049b\u04b1\u0440\u0430\u043c\u044b\u043d\u0434\u0430 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u04b1\u0440\u0430\u043b\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0430\u0442\u044b\u043d \u0436\u04b1\u043c\u044b\u0441 \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0431\u0430\u0440. \u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u0436\u043e\u043b\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437, \u043d\u0435\u043c\u0435\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u049b\u0430\u043b\u0442\u0430\u0441\u044b \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u04d9\u0434\u0435\u043f\u043a\u0456\u0441\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443 \u04af\u0448\u0456\u043d \u0431\u043e\u0441 \u049b\u0430\u043b\u0434\u044b\u0440\u044b\u04a3\u044b\u0437.", + "TabBasics": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456\u043b\u0435\u0440", + "TabTV": "\u0422\u0414", + "TabGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", + "TabMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", + "TabOthers": "\u0411\u0430\u0441\u049b\u0430\u043b\u0430\u0440", + "HeaderExtractChapterImagesFor": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043c\u0430\u043a\u0441\u0430\u0442\u044b:", + "OptionMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "OptionEpisodes": "\u0422\u0414-\u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "OptionOtherVideos": "\u0411\u0430\u0441\u049b\u0430 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "TitleMetadata": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", + "LabelAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u043b\u0430\u0440\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesTmdb": "TheMovieDB.org \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesTvdb": "TheTVDB.com \u043a\u04e9\u0437\u0456\u043d\u0435\u043d \u0430\u0432\u0442\u043e\u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u0434\u044b \u049b\u043e\u0441\u0443", + "LabelAutomaticUpdatesFanartHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 fanart.tv \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelAutomaticUpdatesTmdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheMovieDB.org \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelAutomaticUpdatesTvdbHelp": "\u049a\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u0430\u04a3\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 TheTVDB.com \u0434\u0435\u0440\u0435\u049b\u043e\u0440\u044b\u043d\u0430 \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u0431\u043e\u0439\u0434\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0430\u0434\u044b. \u0411\u0430\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u0430\u0443\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelFanartApiKey": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442:", + "LabelFanartApiKeyHelp": "\u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u0441\u0456\u0437 Fanart \u04af\u0448\u0456\u043d \u0436\u0456\u0431\u0435\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0430\u0443\u0430\u043b\u0434\u0430\u0440\u0493\u0430 7 \u043a\u04af\u043d\u0456\u043d\u0435\u043d \u0431\u04b1\u0440\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0493\u0430\u043d \u043d\u04d9\u0442\u0438\u0436\u0435\u043b\u0435\u0440 \u049b\u0430\u0439\u0442\u0430\u0440\u044b\u043b\u0430\u0434\u044b. \u04e8\u0437\u0456\u043d\u0434\u0456\u043a API-\u043a\u0456\u043b\u0442\u0456\u043c\u0435\u043d \u0431\u04b1\u043b 48 \u0441\u0430\u0493\u0430\u0442\u049b\u0430 \u0434\u0435\u0439\u0456\u043d \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b, \u0430\u043b,\u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b, Fanart VIP-\u043c\u04af\u0448\u0435\u0441\u0456 \u0431\u043e\u043b\u0441\u0430\u04a3\u044b\u0437, \u0431\u04b1\u043b \u0448\u0430\u043c\u0430\u043c\u0435\u043d 10 \u043c\u0438\u043d\u04e9\u0442\u043a\u0435 \u0434\u0435\u0439\u0456\u043d \u0442\u0430\u0493\u044b \u0434\u0430 \u049b\u044b\u0441\u049b\u0430\u0440\u0442\u044b\u043b\u0430\u0434\u044b.", + "ExtractChapterImagesHelp": "\u0421\u0430\u0445\u043d\u0430 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d \u0448\u044b\u0493\u0430\u0440\u044b\u043f \u0430\u043b\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0433\u0435 \u0441\u0430\u0445\u043d\u0430 \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u0443\u0433\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u0441\u044b\u0437\u0431\u0430\u043b\u044b\u049b \u043c\u04d9\u0437\u0456\u0440\u043b\u0435\u0440\u0434\u0456 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0435\u0434\u0456. \u0411\u04b1\u043b \u043f\u0440\u043e\u0446\u0435\u0441 \u0431\u0430\u044f\u0443, \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0434\u044b \u0442\u043e\u0437\u0434\u044b\u0440\u0430\u0442\u044b\u043d \u0436\u04d9\u043d\u0435 \u0431\u0456\u0440\u0430\u0437 \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043a\u0435\u04a3\u0456\u0441\u0442\u0456\u043a\u0442\u0456 \u049b\u0430\u0436\u0435\u0442 \u0435\u0442\u0435\u0442\u0456\u043d \u0431\u043e\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d. \u041e\u043b \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0442\u0430\u0431\u044b\u043b\u0493\u0430\u043d\u0434\u0430, \u0436\u04d9\u043d\u0435 \u0442\u04af\u043d\u0433\u0456 \u0443\u0430\u049b\u044b\u0442\u044b\u043d\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456. \u041e\u0440\u044b\u043d\u0434\u0430\u0443 \u043a\u0435\u0441\u0442\u0435\u0441\u0456 \u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443\u0448\u044b \u0430\u0439\u043c\u0430\u0493\u044b\u043d\u0434\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0435\u0434\u0456. \u0411\u04b1\u043b \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043d\u044b \u049b\u0430\u0440\u0431\u0430\u043b\u0430\u0441 \u0441\u0430\u0493\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0442\u043a\u0456\u0437\u0443 \u04b1\u0441\u044b\u043d\u044b\u043b\u043c\u0430\u0439\u0434\u044b.", + "LabelMetadataDownloadLanguage": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:", + "ButtonAutoScroll": "\u0410\u0432\u0442\u043e\u0430\u0439\u043d\u0430\u043b\u0434\u044b\u0440\u0443", + "LabelImageSavingConvention": "\u0421\u0443\u0440\u0435\u0442 \u0441\u0430\u049b\u0442\u0430\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456:", + "LabelImageSavingConventionHelp": "Media Browser \u043a\u0435\u04a3 \u0442\u0430\u0440\u0430\u0493\u0430\u043d \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0430\u043d \u0430\u043b\u044b\u043d\u0493\u0430\u043d \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u043d\u0438\u0434\u044b. \u0421\u043e\u043d\u044b\u043c\u0435\u043d \u049b\u0430\u0442\u0430\u0440 \u0431\u0430\u0441\u049b\u0430 \u04e9\u043d\u0456\u043c\u0434\u0435\u0440 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0434\u0430 \u0431\u043e\u043b\u0441\u0430, \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u043a\u0435\u043b\u0456\u0441\u0456\u043c\u0456\u043d \u0442\u0430\u04a3\u0434\u0430\u0443 \u043f\u0430\u0439\u0434\u0430\u043b\u044b.", + "OptionImageSavingCompatible": "\u0421\u044b\u0439\u044b\u0441\u044b\u043c\u0434\u044b - Media Browser\/Kodi\/Plex", + "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0442\u044b - MB2", + "ButtonSignIn": "\u041a\u0456\u0440\u0443", + "TitleSignIn": "\u041a\u0456\u0440\u0443", + "HeaderPleaseSignIn": "\u041a\u0456\u0440\u0456\u04a3\u0456\u0437", + "LabelUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b:", + "LabelPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437:", + "ButtonManualLogin": "\u049a\u043e\u043b\u043c\u0435\u043d \u043a\u0456\u0440\u0443", + "PasswordLocalhostMessage": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 (localhost) \u043e\u0440\u044b\u043d\u0434\u0430\u043d \u043a\u0456\u0440\u0433\u0435\u043d\u0434\u0435 \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0435\u0440 \u049b\u0430\u0436\u0435\u0442 \u0435\u043c\u0435\u0441.", + "TabGuide": "\u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448", + "TabChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", + "TabCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", + "HeaderChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", + "TabRecordings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440", + "TabScheduled": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d", + "TabSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", + "TabFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "TabMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c", + "ButtonCancelRecording": "\u0416\u0430\u0437\u0443\u0434\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443" } \ 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 014f57e2a..095cd8fc1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -1,241 +1,4 @@ { - "LabelExit": "Schweinsteiger", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", "Option3D": "3D", @@ -917,6 +680,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +923,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1136,254 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Schweinsteiger", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray" } \ 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 ab6506611..8f93a420c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -1,313 +1,4 @@ { - "LabelExit": "Tutup", - "LabelVisitCommunity": "Melawat Masyarakat", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Biasa", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Imbas Pengumpulan", - "LabelConfigureMediaBrowser": "Konfigurasi Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Sebelumnya", - "LabelFinish": "Habis", - "LabelNext": "Seterusnya", - "LabelYoureDone": "Kamu Selesai!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Hide this user from login screens", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Disable this user", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "HeaderAdvancedControl": "Advanced Control", - "LabelName": "Name:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Allow this user to manage the server", - "HeaderFeatureAccess": "Feature Access", - "OptionAllowMediaPlayback": "Allow media playback", - "OptionAllowBrowsingLiveTv": "Allow Live TV access", - "OptionAllowDeleteLibraryContent": "Allow media deletion", - "OptionAllowManageLiveTv": "Allow Live TV recording management", - "OptionAllowRemoteControlOthers": "Allow remote control of other users", - "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", - "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", - "HeaderRemoteControl": "Remote Control", - "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", "OptionIsSD": "SD", "OptionMetascore": "Metascore", @@ -917,6 +608,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +851,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1064,326 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Tutup", + "LabelVisitCommunity": "Melawat Masyarakat", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Biasa", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Imbas Pengumpulan", + "LabelConfigureMediaBrowser": "Konfigurasi Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Sebelumnya", + "LabelFinish": "Habis", + "LabelNext": "Seterusnya", + "LabelYoureDone": "Kamu Selesai!", + "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "TabLog": "Log", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", + "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback", + "OptionAllowBrowsingLiveTv": "Allow Live TV access", + "OptionAllowDeleteLibraryContent": "Allow media deletion", + "OptionAllowManageLiveTv": "Allow Live TV recording management", + "OptionAllowRemoteControlOthers": "Allow remote control of other users", + "OptionAllowRemoteSharedDevices": "Allow remote control of shared devices", + "OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.", + "HeaderRemoteControl": "Remote Control", + "OptionMissingTmdbId": "Missing Tmdb Id" } \ 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 87ca293ec..90b3ca5f5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -1,346 +1,4 @@ { - "LabelExit": "Avslutt", - "LabelVisitCommunity": "Bes\u00f8k oss", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "API-dokumentasjon", - "LabelDeveloperResources": "Ressurser for Utviklere", - "LabelBrowseLibrary": "Browse biblioteket", - "LabelConfigureMediaBrowser": "Konfigurer Media Browser", - "LabelOpenLibraryViewer": "\u00c5pne Biblioteket", - "LabelRestartServer": "Restart serveren", - "LabelShowLogWindow": "Se logg-vinduet", - "LabelPrevious": "Forrige", - "LabelFinish": "Ferdig", - "LabelNext": "Neste", - "LabelYoureDone": "Ferdig!", - "WelcomeToMediaBrowser": "Velkommen til Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", - "TellUsAboutYourself": "Fortell om deg selv", - "ButtonQuickStartGuide": "Hurtigstartveiledning", - "LabelYourFirstName": "Ditt fornavn", - "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashbord", - "UserProfilesIntro": "Media Browser inkluderer innebygd st\u00f8tte for bruker profiler som tilbyr brukere innstillinger for visning, avspillerstatus og begrensning p\u00e5 innhold.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Windows Service har blitt installert", - "WindowsServiceIntro1": "Media Browser Server kj\u00f8rer normalt som en desktop-applikasjon med et tray-ikon, men om du foretrekker at det kj\u00f8res som en bakgrunnsprosess, kan du i stedet starte den fra windows service control panel.", - "WindowsServiceIntro2": "Hvis du bruker Windows, v\u00e6r oppmerksom p\u00e5 at det ikke kan kj\u00f8res samtidig som ikonet, slik at du trenger \u00e5 g\u00e5 ut av \"trayen\" for \u00e5 kj\u00f8re tjenesten. Tjenesten m\u00e5 ogs\u00e5 konfigureres med administratorrettigheter via kontrollpanelet. V\u00e6r oppmerksom p\u00e5 at p\u00e5 denne tiden tjenesten ikke er i stand til selv-oppdatering, s\u00e5 nye versjoner vil kreve manuell interaksjon.", - "WizardCompleted": "Det er alt vi trenger n\u00e5. Media Browser har begynt \u00e5 samle inn informasjon om ditt mediabibliotek. Sjekk ut noen av v\u00e5re apps, og klikk s\u00e5 Ferdig<\/b> for \u00e5 vise Server Dashboard<\/b>.", - "LabelConfigureSettings": "Konfigurer innstillinger", - "LabelEnableVideoImageExtraction": "Aktiv\u00e9r uthenting av stillbilder fra video", - "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og som vi ikke klarer \u00e5 finne internettbilder for. Dette gj\u00f8r at det f\u00f8rste biblioteks\u00f8ket tar noe lenger tid, men vil resultere i en mer tiltalende presentasjon.", - "LabelEnableChapterImageExtractionForMovies": "Generer kapittelbilde for Filmer", - "LabelChapterImageExtractionForMoviesHelp": "Uthenting av kapittelbilder gj\u00f8r klientene i stand til \u00e5 vise grafiske menyer for valg av scene. Prosessen kan v\u00e6re treg, CPU-intensiv og kan kreve sv\u00e6rt mange gigabytes lagringsplass. Dette kj\u00f8res som en nattlig oppgave, og kan konfigureres under Planlagte Aktiviteter. Det anbefales ikke \u00e5 kj\u00f8re denne jobben n\u00e5r serveren brukes til annet.", - "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port-mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatisert router-konfigurasjon for enkel ekstern tilgang. Denne funksjonen st\u00f8ttes ikke av alle routere.", - "HeaderTermsOfService": "Media Browser Servicevilk\u00e5r", - "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re servicevilk\u00e5r og personvernpolicy f\u00f8r du fortsetter.", - "OptionIAcceptTermsOfService": "Jeg aksepterer servicevilk\u00e5rene", - "ButtonPrivacyPolicy": "Personvernpolicy", - "ButtonTermsOfService": "Servicevilk\u00e5r", - "HeaderDeveloperOptions": "Utvikler-innstillinger", - "OptionEnableWebClientResponseCache": "Aktiver webklient respons-caching", - "OptionDisableForDevelopmentHelp": "Konfigurer disse i forbindelse med utvikling av web-klienten.", - "OptionEnableWebClientResourceMinification": "Aktiver ressursminimering for webklient", - "LabelDashboardSourcePath": "Webklient kildesti:", - "LabelDashboardSourcePathHelp": "Hvis serveren kj\u00f8rer fra kildekode, angi sti til mappe for dashboard-ui. Alle filer for webklienten kommer fra denne mappen.", - "ButtonConvertMedia": "Konverter media", - "ButtonOrganize": "Organiser", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Avbryt", - "ButtonExit": "Exit", - "ButtonNew": "Ny", - "HeaderTV": "TV", - "HeaderAudio": "Lyd", - "HeaderVideo": "Video", - "HeaderPaths": "Stier", - "CategorySync": "Synk", - "HeaderEasyPinCode": "Enkel PIN-kode", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Registrer med PayPal", - "HeaderSyncRequiresSupporterMembership": "Synkronisering krever st\u00f8ttemedlemskap", - "HeaderEnjoyDayTrial": "Hygg deg med en 14-dagers gratis pr\u00f8veperiode", - "LabelSyncTempPath": "Midlertidig fil-sti:", - "LabelSyncTempPathHelp": "Spesifiser din egen synk-mappe. Konverterte mediefiler opprettet ved synkronisering vil lagres her.", - "LabelCustomCertificatePath": "Sti for eget sertifikat:", - "LabelCustomCertificatePathHelp": "Angi ditt eget SSL-sertifikats .ptx-fil. Hvis feltet er blankt vil serveren opprette et eget selv-signert sertifikat.", - "TitleNotifications": "Beskjeder", - "ButtonDonateWithPayPal": "Don\u00e9r med PayPal", - "OptionDetectArchiveFilesAsMedia": "Behandle arkivfiler som media", - "OptionDetectArchiveFilesAsMediaHelp": "Hvis aktivert blir .rar- og .zipfiler behandlet som mediafiler.", - "LabelEnterConnectUserName": "Brukernavn eller epost:", - "LabelEnterConnectUserNameHelp": "Dette er din Media Browser online brukernavn eller passord.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Synk.jobb", - "FolderTypeMixed": "Forskjellig innhold", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musikk", - "FolderTypeAdultVideos": "Voksen-videoer", - "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Musikk-videoer", - "FolderTypeHomeVideos": "Hjemme-videoer", - "FolderTypeGames": "Spill", - "FolderTypeBooks": "B\u00f8ker", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Arve", - "LabelContentType": "Innholdstype:", - "TitleScheduledTasks": "Planlagt oppgaver", - "HeaderSetupLibrary": "Konfigurer media-biblioteket", - "ButtonAddMediaFolder": "Legg til media-mappe", - "LabelFolderType": "Mappetype", - "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", - "LabelCountry": "Land:", - "LabelLanguage": "Spr\u00e5k:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", - "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", - "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", - "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom mediemapper vil legge dem et sted hvor de lett kan editeres.", - "LabelDownloadInternetMetadata": "Last ned cover og metadata fra internett", - "LabelDownloadInternetMetadataHelp": "Media Browser kan laste ned informasjon om mediet for en mer fullstendig presentasjon", - "TabPreferences": "Preferanser", - "TabPassword": "Passord", - "TabLibraryAccess": "Bibliotektilgang", - "TabAccess": "Tilgang", - "TabImage": "Bilde", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Bilder", - "TabNotifications": "Varslinger", - "TabCollectionTitles": "Titler", - "HeaderDeviceAccess": "Enhetstilgang", - "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", - "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", - "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", - "DeviceAccessHelp": "Dette gjelder bare for enheter som som kan unikt identifiseres og vil ikke forindre tilgang fra nettleser. Filtrering av brukerens enhet vil forhindre dem fra \u00e5 bruke nye enheter inntil de har blitt godkjent her.", - "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", - "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", - "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", - "HeaderPlaybackSettings": "Avspillingsinnstillinger", - "LabelAudioLanguagePreference": "Foretrukket lydspor:", - "LabelSubtitleLanguagePreference": "Foretrukket undertekst:", - "OptionDefaultSubtitles": "Standard", - "OptionOnlyForcedSubtitles": "Kun tvungede undertekster", - "OptionAlwaysPlaySubtitles": "Alltid vis undertekster", - "OptionNoSubtitles": "Ingen undertekster", - "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", - "OptionOnlyForcedSubtitlesHelp": "Kun undertekster markert som tvunget vil bli vist.", - "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist uavhengig lydens spr\u00e5k.", - "OptionNoSubtitlesHelp": "Undertekster vil ikke bli lastet som standard.", - "TabProfiles": "Profiler", - "TabSecurity": "Sikkerhet", - "ButtonAddUser": "Ny bruker", - "ButtonAddLocalUser": "Legg til lokal bruker", - "ButtonInviteUser": "Invit\u00e9r Bruker", - "ButtonSave": "Lagre", - "ButtonResetPassword": "Tilbakestill passord", - "LabelNewPassword": "Nytt passord:", - "LabelNewPasswordConfirm": "Bekreft nytt passord:", - "HeaderCreatePassword": "Lag nytt passord", - "LabelCurrentPassword": "N\u00e5v\u00e6rende passord:", - "LabelMaxParentalRating": "Maks tillatt sensur:", - "MaxParentalRatingHelp": "Innhold med h\u00f8yere aldersgrense vil bli skjult for brukeren", - "LibraryAccessHelp": "Velg media mappe som skal deles med denne brukren. Administrator vil ha mulighet for \u00e5 endre alle mapper ved \u00e5 bruke metadata behandler.", - "ChannelAccessHelp": "Velg kanaler som skal deler med denne brukeren. Administratorer har mulighet til \u00e5 editere p\u00e5 alle kanaler som benytter metadata behandleren.", - "ButtonDeleteImage": "Slett bilde", - "LabelSelectUsers": "Velg brukere:", - "ButtonUpload": "Last opp", - "HeaderUploadNewImage": "Last opp nytt bilde", - "LabelDropImageHere": "Slipp bilde her", - "ImageUploadAspectRatioHelp": "1:1 sideforhold anbefales. Kun JPG\/PNG.", - "MessageNothingHere": "Ingeting her.", - "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", - "TabSuggested": "Forslag", - "TabLatest": "Siste", - "TabUpcoming": "Kommer", - "TabShows": "Show", - "TabEpisodes": "Episoder", - "TabGenres": "Sjangre", - "TabPeople": "Folk", - "TabNetworks": "Nettverk", - "HeaderUsers": "Brukere", - "HeaderFilters": "Filtre", - "ButtonFilter": "Filter", - "OptionFavorite": "Favoritter", - "OptionLikes": "Liker", - "OptionDislikes": "Misliker", - "OptionActors": "Skuespillere", - "OptionGuestStars": "Gjeste-opptredener", - "OptionDirectors": "Regis\u00f8r", - "OptionWriters": "Manus", - "OptionProducers": "Produsent", - "HeaderResume": "Fortsette", - "HeaderNextUp": "Neste", - "NoNextUpItemsMessage": "Ingen funnet. Begyn \u00e5 se det du har", - "HeaderLatestEpisodes": "Siste episoder", - "HeaderPersonTypes": "Persontyper:", - "TabSongs": "Sanger", - "TabAlbums": "Album", - "TabArtists": "Artister", - "TabAlbumArtists": "Album Artister", - "TabMusicVideos": "Musikk-videoer", - "ButtonSort": "Sorter", - "HeaderSortBy": "Sorter etter:", - "HeaderSortOrder": "Sorter Etter:", - "OptionPlayed": "Sett", - "OptionUnplayed": "Ikke sett", - "OptionAscending": "\u00d8kende", - "OptionDescending": "Synkende", - "OptionRuntime": "Spilletid", - "OptionReleaseDate": "Uttgitt dato", - "OptionPlayCount": "Antall avspillinger", - "OptionDatePlayed": "Dato spilt", - "OptionDateAdded": "Dato lagt til", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "L\u00e5tnavn", - "OptionCommunityRating": "Community Rangering", - "OptionNameSort": "Navn", - "OptionFolderSort": "Mapper", - "OptionBudget": "Budsjett", - "OptionRevenue": "Inntjening", - "OptionPoster": "Plakat", - "OptionPosterCard": "Plakatkort", - "OptionBackdrop": "Bakgrunn", - "OptionTimeline": "Tidslinje", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb-kort", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritikervurdering", - "OptionVideoBitrate": "Video bitrate", - "OptionResumable": "Kan fortsettes", - "ScheduledTasksHelp": "Klikk p\u00e5 en oppgave for \u00e5 tilpasse tidsplan", - "ScheduledTasksTitle": "Planlagte Oppgaver", - "TabMyPlugins": "Mine programtillegg", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatiske oppdateringer", - "HeaderNowPlaying": "Spiller n\u00e5", - "HeaderLatestAlbums": "Siste album", - "HeaderLatestSongs": "Siste l\u00e5ter", - "HeaderRecentlyPlayed": "Nylig avspilt", - "HeaderFrequentlyPlayed": "Ofte avspilt", - "DevBuildWarning": "Dev builds er \u00e5 anses som ustabile. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", - "LabelVideoType": "Video-type:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "Funksjoner:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Versjon:", - "LabelLastResult": "Siste resultat:", - "OptionHasSubtitles": "Undertekster", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Temasang", - "OptionHasThemeVideo": "Temavideo", - "TabMovies": "Filmer", - "TabStudios": "Studio", - "TabTrailers": "Trailere", - "LabelArtists": "Artister:", - "LabelArtistsHelp": "Skill flere med semikolon ;", - "HeaderLatestMovies": "Siste Filmer", - "HeaderLatestTrailers": "Siste Trailers", - "OptionHasSpecialFeatures": "Spesialfunksjoner", - "OptionImdbRating": "IMDb Rangering", - "OptionParentalRating": "Foreldresensur", - "OptionPremiereDate": "Premieredato", - "TabBasic": "Enkel", - "TabAdvanced": "Avansert", - "HeaderStatus": "Status", - "OptionContinuing": "Fortsetter", - "OptionEnded": "Avsluttet", - "HeaderAirDays": "Vises dager", - "OptionSunday": "S\u00f8ndag", - "OptionMonday": "Mandag", - "OptionTuesday": "Tirsdag", - "OptionWednesday": "Onsdag", - "OptionThursday": "Torsdag", - "OptionFriday": "Fredag", - "OptionSaturday": "L\u00f8rdag", - "HeaderManagement": "Strying", - "LabelManagement": "Administrasjon", - "OptionMissingImdbId": "Mangler IMDb ID", - "OptionMissingTvdbId": "Mangler TVDB ID", - "OptionMissingOverview": "Mangler oversikt", - "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r mismatch", - "TabGeneral": "Genrelt", - "TitleSupport": "Support", - "TabLog": "Logg", - "TabAbout": "Om", - "TabSupporterKey": "Supporter-n\u00f8kkel", - "TabBecomeSupporter": "Bli en supporter", - "MediaBrowserHasCommunity": "Media Browser har et blomstrende fellesskap av brukere og bidragsytere.", - "CheckoutKnowledgeBase": "Sjekk ut v\u00e5r kunnskapsbase for \u00e5 hjelpe deg med \u00e5 f\u00e5 best utbytte av Media Browser", - "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", - "VisitTheCommunity": "Bes\u00f8k oss", - "VisitMediaBrowserWebsite": "Bes\u00f8k Media Browsers nettside", - "VisitMediaBrowserWebsiteLong": "Bes\u00f8k Media Browsers nettside for \u00e5 f\u00e5 de siste nyhetene og for \u00e5 f\u00f8lge med p\u00e5 utviklerbloggen.", - "OptionHideUser": "Skjul brukere fra logginn-skjermen", - "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", - "OptionDisableUser": "Deaktiver denne brukeren", - "OptionDisableUserHelp": "Hvis avsl\u00e5tt vil ikke serveren godta noen forbindelser fra denne brukeren. Eksisterende forbindelser vil avsluttes umiddelbart.", - "HeaderAdvancedControl": "Avansert Kontroll", - "LabelName": "Navn", - "ButtonHelp": "Hjelp", - "OptionAllowUserToManageServer": "TIllatt denne brukeren \u00e5 administrere serveren", - "HeaderFeatureAccess": "Funksjonstilgang", - "OptionAllowMediaPlayback": "Tillate avspilling av media", - "OptionAllowBrowsingLiveTv": "Tillate Live TV", - "OptionAllowDeleteLibraryContent": "Tillate sletting av media", - "OptionAllowManageLiveTv": "Tillate administrasjon av Live TV", - "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", - "OptionAllowRemoteSharedDevices": "Tillate fjernstyring av delte enheter", - "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner \u00e5 styre dem.", - "HeaderRemoteControl": "Fjernstyring", - "OptionMissingTmdbId": "Mangler Tmdb ID", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Velg", - "ButtonGroupVersions": "Gruppeversjoner", - "ButtonAddToCollection": "Legg til samling", - "PismoMessage": "Utnytte Pismo File Mount gjennom en donert lisens.", - "TangibleSoftwareMessage": "Utnytte konkrete l\u00f8sninger Java \/ C # omformere gjennom en donert lisens.", - "HeaderCredits": "Credits", - "PleaseSupportOtherProduces": "Vennligst gi st\u00f8tte til andre gratisprodukter vi benytter:", - "VersionNumber": "Versjon {0}", - "TabPaths": "Stier", - "TabServer": "Server", - "TabTranscoding": "Transcoding", - "TitleAdvanced": "Avansert", - "LabelAutomaticUpdateLevel": "Automatisk oppdaterings niv\u00e5", - "OptionRelease": "Offisiell utgivelse", - "OptionBeta": "Beta", - "OptionDev": "Dev (Ustabil)", - "LabelAllowServerAutoRestart": "Tillat at serveren restartes automatisk for \u00e5 gjennomf\u00f8re oppdateringer", - "LabelAllowServerAutoRestartHelp": "Serveren vil kun restartes i inaktive perioder, n\u00e5r ingen brukere er aktive.", - "LabelEnableDebugLogging": "Sl\u00e5 p\u00e5 debug logging.", - "LabelRunServerAtStartup": "Start server ved maskin-oppstart", - "LabelRunServerAtStartupHelp": "Dette vil starte ikonet ved oppstart av Windows. For \u00e5 starte Windows-tjeneste, fjerner du denne markering og kj\u00f8rer tjenesten fra kontrollpanelet i Windows. V\u00e6r oppmerksom p\u00e5 at du ikke kan kj\u00f8re begge p\u00e5 samme tid, s\u00e5 du m\u00e5 g\u00e5 ut av ikonet f\u00f8r du starter tjenesten.", - "ButtonSelectDirectory": "Velg Katalog", - "LabelCustomPaths": "Angi egendefinerte stier der du \u00f8nsker. La feltene st\u00e5 tomme for \u00e5 bruke standardinnstillingene.", - "LabelCachePath": "Buffer sti:", - "LabelCachePathHelp": "Definer en tilpasset lokalisering for server cache filer, som bilder.", - "LabelImagesByNamePath": "Bilder etter navn sti:", - "LabelImagesByNamePathHelp": "Angi en egen katalog for nedlastede bilder for skuespiller, sjanger og studio.", - "LabelMetadataPath": "Metadata sti:", - "LabelMetadataPathHelp": "Definer en tilpasset lokalisering for nedlastede artwork og metadata, hvis ikke skjer lagring innen media mappene.", - "LabelTranscodingTempPath": "Sti for midlertidig transcoding:", "LabelTranscodingTempPathHelp": "Denne mappen inneholder fungerende filer som blir brukt av transcoderen. Spesifiser en tilpasset sti eller la det st\u00e5 tomt for \u00e5 benytte serverens standard sti.", "TabBasics": "Basics", "TabTV": "TV", @@ -917,6 +575,7 @@ "LabelChannelDownloadAgeHelp": "Nedlastet innhold eldre enn dette vil bli slettet. Det vil v\u00e6re avspillbart via internett streaming.", "ChannelSettingsFormHelp": "Installer kanaler som eksempel Trailers og Vimeo i programtillegg katalogen.", "ButtonOptions": "Alternativer", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Filmer", "ViewTypeTvShows": "TV", "ViewTypeGames": "Spill", @@ -1159,6 +818,7 @@ "LabelIfYouWishToContinueWithDeletion": "Hvis du \u00f8nsker \u00e5 fortsette, venligst bekreft med verdien av:", "ButtonIdentify": "Identifiser", "LabelAlbumArtist": "Album Artist", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Fellesskap anmeldelse:", "LabelVoteCount": "Stemme tall:", @@ -1371,5 +1031,359 @@ "LabelTagFilterMode": "Modus", "LabelTagFilterAllowModeHelp": "Hvis tillatte tagger brukes som del av mappestrukturen, vil innhold som er tagget kreve at foreldre-mappene ogs\u00e5 er tagget.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "Mer...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Avslutt", + "LabelVisitCommunity": "Bes\u00f8k oss", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "API-dokumentasjon", + "LabelDeveloperResources": "Ressurser for Utviklere", + "LabelBrowseLibrary": "Browse biblioteket", + "LabelConfigureMediaBrowser": "Konfigurer Media Browser", + "LabelOpenLibraryViewer": "\u00c5pne Biblioteket", + "LabelRestartServer": "Restart serveren", + "LabelShowLogWindow": "Se logg-vinduet", + "LabelPrevious": "Forrige", + "LabelFinish": "Ferdig", + "LabelNext": "Neste", + "LabelYoureDone": "Ferdig!", + "WelcomeToMediaBrowser": "Velkommen til Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", + "TellUsAboutYourself": "Fortell om deg selv", + "ButtonQuickStartGuide": "Hurtigstartveiledning", + "LabelYourFirstName": "Ditt fornavn", + "MoreUsersCanBeAddedLater": "Du kan legge til flere brukere senere via Dashbord", + "UserProfilesIntro": "Media Browser inkluderer innebygd st\u00f8tte for bruker profiler som tilbyr brukere innstillinger for visning, avspillerstatus og begrensning p\u00e5 innhold.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Windows Service har blitt installert", + "WindowsServiceIntro1": "Media Browser Server kj\u00f8rer normalt som en desktop-applikasjon med et tray-ikon, men om du foretrekker at det kj\u00f8res som en bakgrunnsprosess, kan du i stedet starte den fra windows service control panel.", + "WindowsServiceIntro2": "Hvis du bruker Windows, v\u00e6r oppmerksom p\u00e5 at det ikke kan kj\u00f8res samtidig som ikonet, slik at du trenger \u00e5 g\u00e5 ut av \"trayen\" for \u00e5 kj\u00f8re tjenesten. Tjenesten m\u00e5 ogs\u00e5 konfigureres med administratorrettigheter via kontrollpanelet. V\u00e6r oppmerksom p\u00e5 at p\u00e5 denne tiden tjenesten ikke er i stand til selv-oppdatering, s\u00e5 nye versjoner vil kreve manuell interaksjon.", + "WizardCompleted": "Det er alt vi trenger n\u00e5. Media Browser har begynt \u00e5 samle inn informasjon om ditt mediabibliotek. Sjekk ut noen av v\u00e5re apps, og klikk s\u00e5 Ferdig<\/b> for \u00e5 vise Server Dashboard<\/b>.", + "LabelConfigureSettings": "Konfigurer innstillinger", + "LabelEnableVideoImageExtraction": "Aktiv\u00e9r uthenting av stillbilder fra video", + "VideoImageExtractionHelp": "For videoer som ikke allerede har bilder, og som vi ikke klarer \u00e5 finne internettbilder for. Dette gj\u00f8r at det f\u00f8rste biblioteks\u00f8ket tar noe lenger tid, men vil resultere i en mer tiltalende presentasjon.", + "LabelEnableChapterImageExtractionForMovies": "Generer kapittelbilde for Filmer", + "LabelChapterImageExtractionForMoviesHelp": "Uthenting av kapittelbilder gj\u00f8r klientene i stand til \u00e5 vise grafiske menyer for valg av scene. Prosessen kan v\u00e6re treg, CPU-intensiv og kan kreve sv\u00e6rt mange gigabytes lagringsplass. Dette kj\u00f8res som en nattlig oppgave, og kan konfigureres under Planlagte Aktiviteter. Det anbefales ikke \u00e5 kj\u00f8re denne jobben n\u00e5r serveren brukes til annet.", + "LabelEnableAutomaticPortMapping": "Sl\u00e5 p\u00e5 automatisk port-mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP tillater automatisert router-konfigurasjon for enkel ekstern tilgang. Denne funksjonen st\u00f8ttes ikke av alle routere.", + "HeaderTermsOfService": "Media Browser Servicevilk\u00e5r", + "MessagePleaseAcceptTermsOfService": "Vennligst aksepter v\u00e5re servicevilk\u00e5r og personvernpolicy f\u00f8r du fortsetter.", + "OptionIAcceptTermsOfService": "Jeg aksepterer servicevilk\u00e5rene", + "ButtonPrivacyPolicy": "Personvernpolicy", + "ButtonTermsOfService": "Servicevilk\u00e5r", + "HeaderDeveloperOptions": "Utvikler-innstillinger", + "OptionEnableWebClientResponseCache": "Aktiver webklient respons-caching", + "OptionDisableForDevelopmentHelp": "Konfigurer disse i forbindelse med utvikling av web-klienten.", + "OptionEnableWebClientResourceMinification": "Aktiver ressursminimering for webklient", + "LabelDashboardSourcePath": "Webklient kildesti:", + "LabelDashboardSourcePathHelp": "Hvis serveren kj\u00f8rer fra kildekode, angi sti til mappe for dashboard-ui. Alle filer for webklienten kommer fra denne mappen.", + "ButtonConvertMedia": "Konverter media", + "ButtonOrganize": "Organiser", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Avbryt", + "ButtonExit": "Exit", + "ButtonNew": "Ny", + "HeaderTV": "TV", + "HeaderAudio": "Lyd", + "HeaderVideo": "Video", + "HeaderPaths": "Stier", + "CategorySync": "Synk", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Enkel PIN-kode", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Registrer med PayPal", + "HeaderSyncRequiresSupporterMembership": "Synkronisering krever st\u00f8ttemedlemskap", + "HeaderEnjoyDayTrial": "Hygg deg med en 14-dagers gratis pr\u00f8veperiode", + "LabelSyncTempPath": "Midlertidig fil-sti:", + "LabelSyncTempPathHelp": "Spesifiser din egen synk-mappe. Konverterte mediefiler opprettet ved synkronisering vil lagres her.", + "LabelCustomCertificatePath": "Sti for eget sertifikat:", + "LabelCustomCertificatePathHelp": "Angi ditt eget SSL-sertifikats .ptx-fil. Hvis feltet er blankt vil serveren opprette et eget selv-signert sertifikat.", + "TitleNotifications": "Beskjeder", + "ButtonDonateWithPayPal": "Don\u00e9r med PayPal", + "OptionDetectArchiveFilesAsMedia": "Behandle arkivfiler som media", + "OptionDetectArchiveFilesAsMediaHelp": "Hvis aktivert blir .rar- og .zipfiler behandlet som mediafiler.", + "LabelEnterConnectUserName": "Brukernavn eller epost:", + "LabelEnterConnectUserNameHelp": "Dette er din Media Browser online brukernavn eller passord.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Synk.jobb", + "FolderTypeMixed": "Forskjellig innhold", + "FolderTypeMovies": "Filmer", + "FolderTypeMusic": "Musikk", + "FolderTypeAdultVideos": "Voksen-videoer", + "FolderTypePhotos": "Foto", + "FolderTypeMusicVideos": "Musikk-videoer", + "FolderTypeHomeVideos": "Hjemme-videoer", + "FolderTypeGames": "Spill", + "FolderTypeBooks": "B\u00f8ker", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Arve", + "LabelContentType": "Innholdstype:", + "TitleScheduledTasks": "Planlagt oppgaver", + "HeaderSetupLibrary": "Konfigurer media-biblioteket", + "ButtonAddMediaFolder": "Legg til media-mappe", + "LabelFolderType": "Mappetype", + "ReferToMediaLibraryWiki": "Se i wik for media-biblioteket.", + "LabelCountry": "Land:", + "LabelLanguage": "Spr\u00e5k:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Bli med i utvikler-teamet", + "HeaderPreferredMetadataLanguage": "Foretrukket spr\u00e5k for metadata", + "LabelSaveLocalMetadata": "Lagre cover og metadata i medie-mappene", + "LabelSaveLocalMetadataHelp": "Lagring av artwork og metadata direkte gjennom mediemapper vil legge dem et sted hvor de lett kan editeres.", + "LabelDownloadInternetMetadata": "Last ned cover og metadata fra internett", + "LabelDownloadInternetMetadataHelp": "Media Browser kan laste ned informasjon om mediet for en mer fullstendig presentasjon", + "TabPreferences": "Preferanser", + "TabPassword": "Passord", + "TabLibraryAccess": "Bibliotektilgang", + "TabAccess": "Tilgang", + "TabImage": "Bilde", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Bilder", + "TabNotifications": "Varslinger", + "TabCollectionTitles": "Titler", + "HeaderDeviceAccess": "Enhetstilgang", + "OptionEnableAccessFromAllDevices": "Gi tilgang fra alle enheter", + "OptionEnableAccessToAllChannels": "Gi tilgang til alle kanaler", + "OptionEnableAccessToAllLibraries": "Gi tilgang til alle bibliotek", + "DeviceAccessHelp": "Dette gjelder bare for enheter som som kan unikt identifiseres og vil ikke forindre tilgang fra nettleser. Filtrering av brukerens enhet vil forhindre dem fra \u00e5 bruke nye enheter inntil de har blitt godkjent her.", + "LabelDisplayMissingEpisodesWithinSeasons": "Vis episoder som mangler fra sesongen", + "LabelUnairedMissingEpisodesWithinSeasons": "Vis episoder som enn\u00e5 ikke har blitt sendt", + "HeaderVideoPlaybackSettings": "Innstillinger for video-avspilling", + "HeaderPlaybackSettings": "Avspillingsinnstillinger", + "LabelAudioLanguagePreference": "Foretrukket lydspor:", + "LabelSubtitleLanguagePreference": "Foretrukket undertekst:", + "OptionDefaultSubtitles": "Standard", + "OptionOnlyForcedSubtitles": "Kun tvungede undertekster", + "OptionAlwaysPlaySubtitles": "Alltid vis undertekster", + "OptionNoSubtitles": "Ingen undertekster", + "OptionDefaultSubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist n\u00e5r lyden er p\u00e5 et fremmed spr\u00e5k.", + "OptionOnlyForcedSubtitlesHelp": "Kun undertekster markert som tvunget vil bli vist.", + "OptionAlwaysPlaySubtitlesHelp": "Undertekster som samsvarer med foretrukket spr\u00e5k vil bli vist uavhengig lydens spr\u00e5k.", + "OptionNoSubtitlesHelp": "Undertekster vil ikke bli lastet som standard.", + "TabProfiles": "Profiler", + "TabSecurity": "Sikkerhet", + "ButtonAddUser": "Ny bruker", + "ButtonAddLocalUser": "Legg til lokal bruker", + "ButtonInviteUser": "Invit\u00e9r Bruker", + "ButtonSave": "Lagre", + "ButtonResetPassword": "Tilbakestill passord", + "LabelNewPassword": "Nytt passord:", + "LabelNewPasswordConfirm": "Bekreft nytt passord:", + "HeaderCreatePassword": "Lag nytt passord", + "LabelCurrentPassword": "N\u00e5v\u00e6rende passord:", + "LabelMaxParentalRating": "Maks tillatt sensur:", + "MaxParentalRatingHelp": "Innhold med h\u00f8yere aldersgrense vil bli skjult for brukeren", + "LibraryAccessHelp": "Velg media mappe som skal deles med denne brukren. Administrator vil ha mulighet for \u00e5 endre alle mapper ved \u00e5 bruke metadata behandler.", + "ChannelAccessHelp": "Velg kanaler som skal deler med denne brukeren. Administratorer har mulighet til \u00e5 editere p\u00e5 alle kanaler som benytter metadata behandleren.", + "ButtonDeleteImage": "Slett bilde", + "LabelSelectUsers": "Velg brukere:", + "ButtonUpload": "Last opp", + "HeaderUploadNewImage": "Last opp nytt bilde", + "LabelDropImageHere": "Slipp bilde her", + "ImageUploadAspectRatioHelp": "1:1 sideforhold anbefales. Kun JPG\/PNG.", + "MessageNothingHere": "Ingeting her.", + "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", + "TabSuggested": "Forslag", + "TabLatest": "Siste", + "TabUpcoming": "Kommer", + "TabShows": "Show", + "TabEpisodes": "Episoder", + "TabGenres": "Sjangre", + "TabPeople": "Folk", + "TabNetworks": "Nettverk", + "HeaderUsers": "Brukere", + "HeaderFilters": "Filtre", + "ButtonFilter": "Filter", + "OptionFavorite": "Favoritter", + "OptionLikes": "Liker", + "OptionDislikes": "Misliker", + "OptionActors": "Skuespillere", + "OptionGuestStars": "Gjeste-opptredener", + "OptionDirectors": "Regis\u00f8r", + "OptionWriters": "Manus", + "OptionProducers": "Produsent", + "HeaderResume": "Fortsette", + "HeaderNextUp": "Neste", + "NoNextUpItemsMessage": "Ingen funnet. Begyn \u00e5 se det du har", + "HeaderLatestEpisodes": "Siste episoder", + "HeaderPersonTypes": "Persontyper:", + "TabSongs": "Sanger", + "TabAlbums": "Album", + "TabArtists": "Artister", + "TabAlbumArtists": "Album Artister", + "TabMusicVideos": "Musikk-videoer", + "ButtonSort": "Sorter", + "HeaderSortBy": "Sorter etter:", + "HeaderSortOrder": "Sorter Etter:", + "OptionPlayed": "Sett", + "OptionUnplayed": "Ikke sett", + "OptionAscending": "\u00d8kende", + "OptionDescending": "Synkende", + "OptionRuntime": "Spilletid", + "OptionReleaseDate": "Uttgitt dato", + "OptionPlayCount": "Antall avspillinger", + "OptionDatePlayed": "Dato spilt", + "OptionDateAdded": "Dato lagt til", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "L\u00e5tnavn", + "OptionCommunityRating": "Community Rangering", + "OptionNameSort": "Navn", + "OptionFolderSort": "Mapper", + "OptionBudget": "Budsjett", + "OptionRevenue": "Inntjening", + "OptionPoster": "Plakat", + "OptionPosterCard": "Plakatkort", + "OptionBackdrop": "Bakgrunn", + "OptionTimeline": "Tidslinje", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb-kort", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritikervurdering", + "OptionVideoBitrate": "Video bitrate", + "OptionResumable": "Kan fortsettes", + "ScheduledTasksHelp": "Klikk p\u00e5 en oppgave for \u00e5 tilpasse tidsplan", + "ScheduledTasksTitle": "Planlagte Oppgaver", + "TabMyPlugins": "Mine programtillegg", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatiske oppdateringer", + "HeaderNowPlaying": "Spiller n\u00e5", + "HeaderLatestAlbums": "Siste album", + "HeaderLatestSongs": "Siste l\u00e5ter", + "HeaderRecentlyPlayed": "Nylig avspilt", + "HeaderFrequentlyPlayed": "Ofte avspilt", + "DevBuildWarning": "Dev builds er \u00e5 anses som ustabile. Disse har ikke blitt testet. Dette vil kunne medf\u00f8re til at applikasjonen kan krasje og komplette funksjoner ikke fungerer.", + "LabelVideoType": "Video-type:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Funksjoner:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Versjon:", + "LabelLastResult": "Siste resultat:", + "OptionHasSubtitles": "Undertekster", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Temasang", + "OptionHasThemeVideo": "Temavideo", + "TabMovies": "Filmer", + "TabStudios": "Studio", + "TabTrailers": "Trailere", + "LabelArtists": "Artister:", + "LabelArtistsHelp": "Skill flere med semikolon ;", + "HeaderLatestMovies": "Siste Filmer", + "HeaderLatestTrailers": "Siste Trailers", + "OptionHasSpecialFeatures": "Spesialfunksjoner", + "OptionImdbRating": "IMDb Rangering", + "OptionParentalRating": "Foreldresensur", + "OptionPremiereDate": "Premieredato", + "TabBasic": "Enkel", + "TabAdvanced": "Avansert", + "HeaderStatus": "Status", + "OptionContinuing": "Fortsetter", + "OptionEnded": "Avsluttet", + "HeaderAirDays": "Vises dager", + "OptionSunday": "S\u00f8ndag", + "OptionMonday": "Mandag", + "OptionTuesday": "Tirsdag", + "OptionWednesday": "Onsdag", + "OptionThursday": "Torsdag", + "OptionFriday": "Fredag", + "OptionSaturday": "L\u00f8rdag", + "HeaderManagement": "Strying", + "LabelManagement": "Administrasjon", + "OptionMissingImdbId": "Mangler IMDb ID", + "OptionMissingTvdbId": "Mangler TVDB ID", + "OptionMissingOverview": "Mangler oversikt", + "OptionFileMetadataYearMismatch": "Fil\/Metadata \u00e5r mismatch", + "TabGeneral": "Genrelt", + "TitleSupport": "Support", + "TabLog": "Logg", + "TabAbout": "Om", + "TabSupporterKey": "Supporter-n\u00f8kkel", + "TabBecomeSupporter": "Bli en supporter", + "MediaBrowserHasCommunity": "Media Browser har et blomstrende fellesskap av brukere og bidragsytere.", + "CheckoutKnowledgeBase": "Sjekk ut v\u00e5r kunnskapsbase for \u00e5 hjelpe deg med \u00e5 f\u00e5 best utbytte av Media Browser", + "SearchKnowledgeBase": "S\u00f8k kunnskapsbasen", + "VisitTheCommunity": "Bes\u00f8k oss", + "VisitMediaBrowserWebsite": "Bes\u00f8k Media Browsers nettside", + "VisitMediaBrowserWebsiteLong": "Bes\u00f8k Media Browsers nettside for \u00e5 f\u00e5 de siste nyhetene og for \u00e5 f\u00f8lge med p\u00e5 utviklerbloggen.", + "OptionHideUser": "Skjul brukere fra logginn-skjermen", + "OptionHideUserFromLoginHelp": "Praktisk for private eller skjulte administratorer. Brukeren vil m\u00e5tte logge inn manuelt ved \u00e5 skrive inn brukernavn og passord.", + "OptionDisableUser": "Deaktiver denne brukeren", + "OptionDisableUserHelp": "Hvis avsl\u00e5tt vil ikke serveren godta noen forbindelser fra denne brukeren. Eksisterende forbindelser vil avsluttes umiddelbart.", + "HeaderAdvancedControl": "Avansert Kontroll", + "LabelName": "Navn", + "ButtonHelp": "Hjelp", + "OptionAllowUserToManageServer": "TIllatt denne brukeren \u00e5 administrere serveren", + "HeaderFeatureAccess": "Funksjonstilgang", + "OptionAllowMediaPlayback": "Tillate avspilling av media", + "OptionAllowBrowsingLiveTv": "Tillate Live TV", + "OptionAllowDeleteLibraryContent": "Tillate sletting av media", + "OptionAllowManageLiveTv": "Tillate administrasjon av Live TV", + "OptionAllowRemoteControlOthers": "Tillat fjernstyring av andre brukere", + "OptionAllowRemoteSharedDevices": "Tillate fjernstyring av delte enheter", + "OptionAllowRemoteSharedDevicesHelp": "DLNA-enheter betraktes som delte inntil en bruker begynner \u00e5 styre dem.", + "HeaderRemoteControl": "Fjernstyring", + "OptionMissingTmdbId": "Mangler Tmdb ID", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Velg", + "ButtonGroupVersions": "Gruppeversjoner", + "ButtonAddToCollection": "Legg til samling", + "PismoMessage": "Utnytte Pismo File Mount gjennom en donert lisens.", + "TangibleSoftwareMessage": "Utnytte konkrete l\u00f8sninger Java \/ C # omformere gjennom en donert lisens.", + "HeaderCredits": "Credits", + "PleaseSupportOtherProduces": "Vennligst gi st\u00f8tte til andre gratisprodukter vi benytter:", + "VersionNumber": "Versjon {0}", + "TabPaths": "Stier", + "TabServer": "Server", + "TabTranscoding": "Transcoding", + "TitleAdvanced": "Avansert", + "LabelAutomaticUpdateLevel": "Automatisk oppdaterings niv\u00e5", + "OptionRelease": "Offisiell utgivelse", + "OptionBeta": "Beta", + "OptionDev": "Dev (Ustabil)", + "LabelAllowServerAutoRestart": "Tillat at serveren restartes automatisk for \u00e5 gjennomf\u00f8re oppdateringer", + "LabelAllowServerAutoRestartHelp": "Serveren vil kun restartes i inaktive perioder, n\u00e5r ingen brukere er aktive.", + "LabelEnableDebugLogging": "Sl\u00e5 p\u00e5 debug logging.", + "LabelRunServerAtStartup": "Start server ved maskin-oppstart", + "LabelRunServerAtStartupHelp": "Dette vil starte ikonet ved oppstart av Windows. For \u00e5 starte Windows-tjeneste, fjerner du denne markering og kj\u00f8rer tjenesten fra kontrollpanelet i Windows. V\u00e6r oppmerksom p\u00e5 at du ikke kan kj\u00f8re begge p\u00e5 samme tid, s\u00e5 du m\u00e5 g\u00e5 ut av ikonet f\u00f8r du starter tjenesten.", + "ButtonSelectDirectory": "Velg Katalog", + "LabelCustomPaths": "Angi egendefinerte stier der du \u00f8nsker. La feltene st\u00e5 tomme for \u00e5 bruke standardinnstillingene.", + "LabelCachePath": "Buffer sti:", + "LabelCachePathHelp": "Definer en tilpasset lokalisering for server cache filer, som bilder.", + "LabelImagesByNamePath": "Bilder etter navn sti:", + "LabelImagesByNamePathHelp": "Angi en egen katalog for nedlastede bilder for skuespiller, sjanger og studio.", + "LabelMetadataPath": "Metadata sti:", + "LabelMetadataPathHelp": "Definer en tilpasset lokalisering for nedlastede artwork og metadata, hvis ikke skjer lagring innen media mappene.", + "LabelTranscodingTempPath": "Sti for midlertidig transcoding:" } \ 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 587a9c8c3..45dce8ea8 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -1,252 +1,4 @@ { - "LabelExit": "Afsluiten", - "LabelVisitCommunity": "Bezoek Gemeenschap", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standaard", - "LabelApiDocumentation": "Api documentatie", - "LabelDeveloperResources": "Ontwikkelaars bronnen", - "LabelBrowseLibrary": "Bekijk bibliotheek", - "LabelConfigureMediaBrowser": "Configureer Media Browser", - "LabelOpenLibraryViewer": "Open bibliotheek verkenner", - "LabelRestartServer": "Server herstarten", - "LabelShowLogWindow": "Toon log venster", - "LabelPrevious": "Vorige", - "LabelFinish": "Voltooien", - "LabelNext": "Volgende", - "LabelYoureDone": "Gereed!", - "WelcomeToMediaBrowser": "Welkom bij Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Deze wizard helpt u door het setup-proces.", - "TellUsAboutYourself": "Vertel ons over uzelf", - "ButtonQuickStartGuide": "Snel start gids", - "LabelYourFirstName": "Uw voornaam:", - "MoreUsersCanBeAddedLater": "Meer gebruikers kunnen later via het dashboard worden toegevoegd.", - "UserProfilesIntro": "Media Browser bevat ingebouwde ondersteuning voor gebruikersprofielen, zodat iedere gebruiker zijn eigen display-instellingen, afspeelstatus en ouderlijk toezicht heeft.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "Er is een Windows service ge\u00efnstalleerd.", - "WindowsServiceIntro1": "Media Browser Server werkt normaal als een desktop applicatie met een pictogram in het systeemvak, maar wanneer u het liever op de achtergrond als service laat draaien, dan kan dit worden ingesteld vanuit het Windows services configuratie scherm.", - "WindowsServiceIntro2": "Wanneer u de Windows-service gebruikt, dan dient u er rekening mee te houden dat het niet op hetzelfde moment als de desktop applicatie kan worden uitgevoerd. Het is daarom vereist de desktop applicatie eerst af te sluiten voordat u de service gebruikt. De service moet worden geconfigureerd met beheerdersrechten via het configuratie scherm. Houd er rekening mee dat op dit moment de service niet automatisch kan worden bijgewerkt, zodat nieuwe versies dus handmatige interactie vereisen.", - "WizardCompleted": "Dat is alles wat we nu nodig hebben. Media Browser is begonnen met verzamelen van informatie over uw media bibliotheek. Probeer eens wat van onze apps en klik dan Voltooien<\/b> om het Server Dashboard<\/b> te bekijken.", - "LabelConfigureSettings": "Configureer instellingen", - "LabelEnableVideoImageExtraction": "Videobeeld uitpakken inschakelen", - "VideoImageExtractionHelp": "Voor video's die nog geen afbeeldingen hebben, en waarvoor geen afbeeldingen op Internet te vinden zijn. Dit voegt extra tijd toe aan de oorspronkelijke bibliotheek scan, maar resulteert in een mooiere weergave.", - "LabelEnableChapterImageExtractionForMovies": "Hoofdstuk afbeeldingen uitpakken voor Films", - "LabelChapterImageExtractionForMoviesHelp": "Uitpakken van hoofdstuk afbeeldingen biedt clients grafische scene selectie menu's. Het proces kan langzaam en processor intensief zijn en kan enkele gigabytes aan vrije ruimte vereisen. Het draait 's nachts als geplande taak, hoewel dit aangepast kan worden bij de geplande taken. Het wordt niet aanbevolen om deze taak tijdens piekuren te draaien.", - "LabelEnableAutomaticPortMapping": "Automatische poorttoewijzing inschakelen", - "LabelEnableAutomaticPortMappingHelp": "UPnP zorgt voor geautomatiseerde configuratie van de router voor gemakkelijke toegang op afstand. Dit werkt mogelijk niet met sommige routers.", - "HeaderTermsOfService": "Media Brower Service Voorwaarden", - "MessagePleaseAcceptTermsOfService": "Accepteer a.u.b. de voorwaarden en Privacybeleid voordat u doorgaat.", - "OptionIAcceptTermsOfService": "Ik accepteer de voorwaarden", - "ButtonPrivacyPolicy": "Privacybeleid", - "ButtonTermsOfService": "Service voorwaarden", - "HeaderDeveloperOptions": "Ontwikkelaar Opties", - "OptionEnableWebClientResponseCache": "Web client reactie caching inschakelen", - "OptionDisableForDevelopmentHelp": "Configureer deze zonodig voor web client ontwikkelingsdoeleinden.", - "OptionEnableWebClientResourceMinification": "Web client bron verkleining inschakelen", - "LabelDashboardSourcePath": "Web client bron pad:", - "LabelDashboardSourcePathHelp": "Wanneer u de server draait vanaf de bron, geeft u het pad naar de map dashboard-ui op. Alle web client bestanden worden geladen vanaf deze locatie.", - "ButtonConvertMedia": "Converteer media", - "ButtonOrganize": "Organiseren", - "LabelPinCode": "Pincode:", - "ButtonOk": "Ok", - "ButtonCancel": "Annuleren", - "ButtonExit": "Afsluiten", - "ButtonNew": "Nieuw", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paden", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Eenvoudige Pincode", - "HeaderGrownupsOnly": "Alleen voor volwassenen!", - "DividerOr": "-- of --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "Voor toegang toets uw pincode", - "KidsModeAdultInstruction": "Klik op het slotje in de rechterbenedenhoek om te configureren of blijf in de kindermodus. Uw pincode nodig zal zijn", - "ButtonConfigurePinCode": "Configureer pincode", - "HeaderAdultsReadHere": "Volwassenen Lees hier!", - "RegisterWithPayPal": "Registreer met PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Vereist een Supporter lidmaatschap", - "HeaderEnjoyDayTrial": "Geniet van een 14-daagse gratis proefversie", - "LabelSyncTempPath": "Pad voor tijdelijke bestanden:", - "LabelSyncTempPathHelp": "Geef een afwijkende sync werk directory op. Tijdens het sync proces aangemaakte geconverteerde media zal hier opgeslagen worden.", - "LabelCustomCertificatePath": "Aangepast certificaat pad:", - "LabelCustomCertificatePathHelp": "Gebruik uw eigen ssl certificaat .pfx bestand. Indien weggelaten zal de server een zelf-gesigneerd certificaat aanmaken.", - "TitleNotifications": "Meldingen", - "ButtonDonateWithPayPal": "Doneer met PayPal", - "OptionDetectArchiveFilesAsMedia": "Herken archief bestanden als media", - "OptionDetectArchiveFilesAsMediaHelp": "Indien ingeschakeld zullen bestanden met .rar en .zip extensies herkend worden als media bestanden.", - "LabelEnterConnectUserName": "Gebruikersnaam of e-mail:", - "LabelEnterConnectUserNameHelp": "Dit is uw Media Browser online account gebruikersnaam of wachtwoord.", - "LabelEnableEnhancedMovies": "Verbeterde film displays inschakelen", - "LabelEnableEnhancedMoviesHelp": "Wanneer ingeschakeld, zullen films worden weergegeven als mappen inclusief trailers, extra's, cast & crew en andere gerelateerde inhoud.", - "HeaderSyncJobInfo": "Sync Opdrachten", - "FolderTypeMixed": "Gemengde inhoud", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Muziek", - "FolderTypeAdultVideos": "Adult video's", - "FolderTypePhotos": "Foto's", - "FolderTypeMusicVideos": "Muziek video's", - "FolderTypeHomeVideos": "Thuis video's", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Boeken", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "overerven", - "LabelContentType": "Inhoud type:", - "TitleScheduledTasks": "Geplande Taken", - "HeaderSetupLibrary": "Stel uw mediabibliotheek in", - "ButtonAddMediaFolder": "Mediamap toevoegen", - "LabelFolderType": "Maptype:", - "ReferToMediaLibraryWiki": "Raadpleeg de mediabibliotheek wiki.", - "LabelCountry": "Land:", - "LabelLanguage": "Taal:", - "LabelTimeLimitHours": "Tijdslimiet (uren):", - "ButtonJoinTheDevelopmentTeam": "Word lid van het Ontwikkel Team", - "HeaderPreferredMetadataLanguage": "Gewenste metadata taal:", - "LabelSaveLocalMetadata": "Sla afbeeldingen en metadata op in de mediamappen", - "LabelSaveLocalMetadataHelp": "Door afbeeldingen en metadata op te slaan in de mediamappen kunnen ze makkelijker worden gevonden en bewerkt.", - "LabelDownloadInternetMetadata": "Download afbeeldingen en metadata van het internet", - "LabelDownloadInternetMetadataHelp": "Media Browser kan informatie en afbeeldingen van uw media downloaden, om zo een mooie en uitgebreide weergave mogelijk te maken.", - "TabPreferences": "Voorkeuren", - "TabPassword": "Wachtwoord", - "TabLibraryAccess": "Bibliotheek toegang", - "TabAccess": "Toegang", - "TabImage": "Afbeelding", - "TabProfile": "Profiel", - "TabMetadata": "Metagegevens", - "TabImages": "Afbeeldingen", - "TabNotifications": "Meldingen", - "TabCollectionTitles": "Titels", - "HeaderDeviceAccess": "Apparaat Toegang", - "OptionEnableAccessFromAllDevices": "Toegang vanaf alle apparaten toestaan", - "OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen", - "OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen", - "DeviceAccessHelp": "Dit geldt alleen voor apparaten die uniek ge\u00efdentificeerd kunnen worden en voorkomen niet toegang via een webbrowser. Filteren van apparaat toegang voor gebruikers voorkomt dat zij nieuwe apparaten gebruiken totdat deze hier zijn goedgekeurd.", - "LabelDisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen", - "LabelUnairedMissingEpisodesWithinSeasons": "Toon komende afleveringen binnen een seizoen", - "HeaderVideoPlaybackSettings": "Video afspeel instellingen", - "HeaderPlaybackSettings": "Afspeel instellingen", - "LabelAudioLanguagePreference": "Voorkeurs taal geluid:", - "LabelSubtitleLanguagePreference": "Voorkeurs taal ondertiteling:", - "OptionDefaultSubtitles": "Standaard", - "OptionOnlyForcedSubtitles": "Alleen 'geforceerde' ondertiteling", - "OptionAlwaysPlaySubtitles": "Ondertiteling altijd weergeven", - "OptionNoSubtitles": "Geen ondertitels", - "OptionDefaultSubtitlesHelp": "Ondertiteling wordt weergegeven in de voorkeurstaal als de audio in een andere taal is.", - "OptionOnlyForcedSubtitlesHelp": "Alleen ondertitels gemarkeerd als \"gedwongen\" zullen worden geladen.", - "OptionAlwaysPlaySubtitlesHelp": "Ondertiteling wordt weergegeveen in de voorkeurstaal ongeacht de taal van de audio.", - "OptionNoSubtitlesHelp": "Ondertiteling wordt standaard niet weergegeven.", - "TabProfiles": "Profielen", - "TabSecurity": "Beveiliging", - "ButtonAddUser": "Gebruiker toevoegen", - "ButtonAddLocalUser": "Voeg lokale gebruiker toe", - "ButtonInviteUser": "Nodig gebruiker uit", - "ButtonSave": "Opslaan", - "ButtonResetPassword": "Wachtwoord resetten", - "LabelNewPassword": "Nieuw wachtwoord:", - "LabelNewPasswordConfirm": "Bevestig nieuw wachtwoord:", - "HeaderCreatePassword": "Maak wachtwoord", - "LabelCurrentPassword": "Huidig wachtwoord:", - "LabelMaxParentalRating": "Maximaal toegestane kijkwijzer classificatie:", - "MaxParentalRatingHelp": "Media met een hogere classificatie wordt niet weergegeven", - "LibraryAccessHelp": "Selecteer de mediamappen om met deze gebruiker te delen. Beheerders kunnen alle mappen bewerken via de metadata manager.", - "ChannelAccessHelp": "Selecteer de kanalen om te delen met deze gebruiker. Beheerders kunnen alle kanalen bewerken met de metadata manager.", - "ButtonDeleteImage": "Verwijder afbeelding", - "LabelSelectUsers": "Selecteer gebruikers:", - "ButtonUpload": "Uploaden", - "HeaderUploadNewImage": "Nieuwe afbeelding uploaden", - "LabelDropImageHere": "Afbeelding hier neerzetten", - "ImageUploadAspectRatioHelp": "1:1 beeldverhouding geadviseerd. Alleen JPG\/PNG.", - "MessageNothingHere": "Lijst is leeg.", - "MessagePleaseEnsureInternetMetadata": "Zorg ervoor dat het downloaden van metadata van het internet is ingeschakeld.", - "TabSuggested": "Aanbevolen", - "TabLatest": "Nieuw", - "TabUpcoming": "Binnenkort op TV", - "TabShows": "Series", - "TabEpisodes": "Afleveringen", - "TabGenres": "Genres", - "TabPeople": "Personen", - "TabNetworks": "TV-Studio's", - "HeaderUsers": "Gebruikers", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorieten", - "OptionLikes": "Leuk", - "OptionDislikes": "Niet leuk", - "OptionActors": "Acteurs", - "OptionGuestStars": "Gast Sterren", - "OptionDirectors": "Regiseurs", - "OptionWriters": "Schrijvers", - "OptionProducers": "Producenten", - "HeaderResume": "Hervatten", - "HeaderNextUp": "Volgend", - "NoNextUpItemsMessage": "Niets gevonden. Start met kijken!", - "HeaderLatestEpisodes": "Nieuwste Afleveringen", - "HeaderPersonTypes": "Persoon Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artiesten", - "TabAlbumArtists": "Albumartiesten", - "TabMusicVideos": "Muziek Videos", - "ButtonSort": "Sorteren", - "HeaderSortBy": "Sorteren op:", - "HeaderSortOrder": "Sorteer volgorde:", - "OptionPlayed": "Afgespeeld", - "OptionUnplayed": "Onafgespeeld", - "OptionAscending": "Oplopend", - "OptionDescending": "Aflopend", - "OptionRuntime": "Speelduur", - "OptionReleaseDate": "Uitgave datum", - "OptionPlayCount": "Afspeel telling", - "OptionDatePlayed": "Datum afgespeeld", - "OptionDateAdded": "Datum toegevoegd", - "OptionAlbumArtist": "Albumartiest", - "OptionArtist": "Artiest", - "OptionAlbum": "Album", - "OptionTrackName": "Naam van Nummer", - "OptionCommunityRating": "Gemeenschaps Waardering", - "OptionNameSort": "Naam", - "OptionFolderSort": "Mappen", - "OptionBudget": "Budget", - "OptionRevenue": "Inkomsten", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster kaart", - "OptionBackdrop": "Achtergrond", - "OptionTimeline": "Tijdlijn", - "OptionThumb": "Miniatuur", - "OptionThumbCard": "Miniaturen kaart", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritieken", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Hervatbaar", - "ScheduledTasksHelp": "Klik op een taak om het schema aan te passen.", - "ScheduledTasksTitle": "Geplande taken", - "TabMyPlugins": "Mijn Plug-ins", - "TabCatalog": "Catalogus", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatische updates", - "HeaderNowPlaying": "Wordt nu afgespeeld", - "HeaderLatestAlbums": "Nieuwste Albums", - "HeaderLatestSongs": "Nieuwste Songs", - "HeaderRecentlyPlayed": "Recent afgespeeld", - "HeaderFrequentlyPlayed": "Vaak afgespeeld", - "DevBuildWarning": "Development versies zijn geheel voor eigen risico. Deze versies worden vaak vrijgegeven en zijn niet getest! De Applicatie kan crashen en sommige functies kunnen mogelijk niet meer werken.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Blu-ray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Kenmerken:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Versie:", - "LabelLastResult": "Laatste resultaat:", - "OptionHasSubtitles": "Ondertitels", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Thema Song", "OptionHasThemeVideo": "Thema Video", "TabMovies": "Films", "TabStudios": "Studio's", @@ -917,6 +669,7 @@ "LabelChannelDownloadAgeHelp": "Gedownloade inhoud die ouder is zal worden verwijderd. Afspelen via internet streaming blijft mogelijk.", "ChannelSettingsFormHelp": "Installeer kanalen zoals Trailers en Vimeo in de Plug-in catalogus.", "ButtonOptions": "Opties", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Films", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +912,7 @@ "LabelIfYouWishToContinueWithDeletion": "Geef om door te gaan het resultaat in:", "ButtonIdentify": "Identificeer", "LabelAlbumArtist": "Album artiest:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Beoordeling gemeenschap:", "LabelVoteCount": "Aantal stemmen:", @@ -1371,5 +1125,265 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "Als toegestane tags worden gebruikt in een diep geneste mappenstructuur, zal getagde inhoud vereisen dat de bovenliggende mappen ook getagd zijn.", "HeaderThisUserIsCurrentlyDisabled": "Deze gebruiker is momenteel uitgesloten", - "MessageReenableUser": "Zie hieronder hoe opnieuw in te schakelen" + "MessageReenableUser": "Zie hieronder hoe opnieuw in te schakelen", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "Meer...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Afsluiten", + "LabelVisitCommunity": "Bezoek Gemeenschap", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standaard", + "LabelApiDocumentation": "Api documentatie", + "LabelDeveloperResources": "Ontwikkelaars bronnen", + "LabelBrowseLibrary": "Bekijk bibliotheek", + "LabelConfigureMediaBrowser": "Configureer Media Browser", + "LabelOpenLibraryViewer": "Open bibliotheek verkenner", + "LabelRestartServer": "Server herstarten", + "LabelShowLogWindow": "Toon log venster", + "LabelPrevious": "Vorige", + "LabelFinish": "Voltooien", + "LabelNext": "Volgende", + "LabelYoureDone": "Gereed!", + "WelcomeToMediaBrowser": "Welkom bij Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Deze wizard helpt u door het setup-proces.", + "TellUsAboutYourself": "Vertel ons over uzelf", + "ButtonQuickStartGuide": "Snel start gids", + "LabelYourFirstName": "Uw voornaam:", + "MoreUsersCanBeAddedLater": "Meer gebruikers kunnen later via het dashboard worden toegevoegd.", + "UserProfilesIntro": "Media Browser bevat ingebouwde ondersteuning voor gebruikersprofielen, zodat iedere gebruiker zijn eigen display-instellingen, afspeelstatus en ouderlijk toezicht heeft.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "Er is een Windows service ge\u00efnstalleerd.", + "WindowsServiceIntro1": "Media Browser Server werkt normaal als een desktop applicatie met een pictogram in het systeemvak, maar wanneer u het liever op de achtergrond als service laat draaien, dan kan dit worden ingesteld vanuit het Windows services configuratie scherm.", + "WindowsServiceIntro2": "Wanneer u de Windows-service gebruikt, dan dient u er rekening mee te houden dat het niet op hetzelfde moment als de desktop applicatie kan worden uitgevoerd. Het is daarom vereist de desktop applicatie eerst af te sluiten voordat u de service gebruikt. De service moet worden geconfigureerd met beheerdersrechten via het configuratie scherm. Houd er rekening mee dat op dit moment de service niet automatisch kan worden bijgewerkt, zodat nieuwe versies dus handmatige interactie vereisen.", + "WizardCompleted": "Dat is alles wat we nu nodig hebben. Media Browser is begonnen met verzamelen van informatie over uw media bibliotheek. Probeer eens wat van onze apps en klik dan Voltooien<\/b> om het Server Dashboard<\/b> te bekijken.", + "LabelConfigureSettings": "Configureer instellingen", + "LabelEnableVideoImageExtraction": "Videobeeld uitpakken inschakelen", + "VideoImageExtractionHelp": "Voor video's die nog geen afbeeldingen hebben, en waarvoor geen afbeeldingen op Internet te vinden zijn. Dit voegt extra tijd toe aan de oorspronkelijke bibliotheek scan, maar resulteert in een mooiere weergave.", + "LabelEnableChapterImageExtractionForMovies": "Hoofdstuk afbeeldingen uitpakken voor Films", + "LabelChapterImageExtractionForMoviesHelp": "Uitpakken van hoofdstuk afbeeldingen biedt clients grafische scene selectie menu's. Het proces kan langzaam en processor intensief zijn en kan enkele gigabytes aan vrije ruimte vereisen. Het draait 's nachts als geplande taak, hoewel dit aangepast kan worden bij de geplande taken. Het wordt niet aanbevolen om deze taak tijdens piekuren te draaien.", + "LabelEnableAutomaticPortMapping": "Automatische poorttoewijzing inschakelen", + "LabelEnableAutomaticPortMappingHelp": "UPnP zorgt voor geautomatiseerde configuratie van de router voor gemakkelijke toegang op afstand. Dit werkt mogelijk niet met sommige routers.", + "HeaderTermsOfService": "Media Brower Service Voorwaarden", + "MessagePleaseAcceptTermsOfService": "Accepteer a.u.b. de voorwaarden en Privacybeleid voordat u doorgaat.", + "OptionIAcceptTermsOfService": "Ik accepteer de voorwaarden", + "ButtonPrivacyPolicy": "Privacybeleid", + "ButtonTermsOfService": "Service voorwaarden", + "HeaderDeveloperOptions": "Ontwikkelaar Opties", + "OptionEnableWebClientResponseCache": "Web client reactie caching inschakelen", + "OptionDisableForDevelopmentHelp": "Configureer deze zonodig voor web client ontwikkelingsdoeleinden.", + "OptionEnableWebClientResourceMinification": "Web client bron verkleining inschakelen", + "LabelDashboardSourcePath": "Web client bron pad:", + "LabelDashboardSourcePathHelp": "Wanneer u de server draait vanaf de bron, geeft u het pad naar de map dashboard-ui op. Alle web client bestanden worden geladen vanaf deze locatie.", + "ButtonConvertMedia": "Converteer media", + "ButtonOrganize": "Organiseren", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pincode:", + "ButtonOk": "Ok", + "ButtonCancel": "Annuleren", + "ButtonExit": "Afsluiten", + "ButtonNew": "Nieuw", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paden", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Eenvoudige Pincode", + "HeaderGrownupsOnly": "Alleen voor volwassenen!", + "DividerOr": "-- of --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "Voor toegang toets uw pincode", + "KidsModeAdultInstruction": "Klik op het slotje in de rechterbenedenhoek om te configureren of blijf in de kindermodus. Uw pincode nodig zal zijn", + "ButtonConfigurePinCode": "Configureer pincode", + "HeaderAdultsReadHere": "Volwassenen Lees hier!", + "RegisterWithPayPal": "Registreer met PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Vereist een Supporter lidmaatschap", + "HeaderEnjoyDayTrial": "Geniet van een 14-daagse gratis proefversie", + "LabelSyncTempPath": "Pad voor tijdelijke bestanden:", + "LabelSyncTempPathHelp": "Geef een afwijkende sync werk directory op. Tijdens het sync proces aangemaakte geconverteerde media zal hier opgeslagen worden.", + "LabelCustomCertificatePath": "Aangepast certificaat pad:", + "LabelCustomCertificatePathHelp": "Gebruik uw eigen ssl certificaat .pfx bestand. Indien weggelaten zal de server een zelf-gesigneerd certificaat aanmaken.", + "TitleNotifications": "Meldingen", + "ButtonDonateWithPayPal": "Doneer met PayPal", + "OptionDetectArchiveFilesAsMedia": "Herken archief bestanden als media", + "OptionDetectArchiveFilesAsMediaHelp": "Indien ingeschakeld zullen bestanden met .rar en .zip extensies herkend worden als media bestanden.", + "LabelEnterConnectUserName": "Gebruikersnaam of e-mail:", + "LabelEnterConnectUserNameHelp": "Dit is uw Media Browser online account gebruikersnaam of wachtwoord.", + "LabelEnableEnhancedMovies": "Verbeterde film displays inschakelen", + "LabelEnableEnhancedMoviesHelp": "Wanneer ingeschakeld, zullen films worden weergegeven als mappen inclusief trailers, extra's, cast & crew en andere gerelateerde inhoud.", + "HeaderSyncJobInfo": "Sync Opdrachten", + "FolderTypeMixed": "Gemengde inhoud", + "FolderTypeMovies": "Films", + "FolderTypeMusic": "Muziek", + "FolderTypeAdultVideos": "Adult video's", + "FolderTypePhotos": "Foto's", + "FolderTypeMusicVideos": "Muziek video's", + "FolderTypeHomeVideos": "Thuis video's", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Boeken", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "overerven", + "LabelContentType": "Inhoud type:", + "TitleScheduledTasks": "Geplande Taken", + "HeaderSetupLibrary": "Stel uw mediabibliotheek in", + "ButtonAddMediaFolder": "Mediamap toevoegen", + "LabelFolderType": "Maptype:", + "ReferToMediaLibraryWiki": "Raadpleeg de mediabibliotheek wiki.", + "LabelCountry": "Land:", + "LabelLanguage": "Taal:", + "LabelTimeLimitHours": "Tijdslimiet (uren):", + "ButtonJoinTheDevelopmentTeam": "Word lid van het Ontwikkel Team", + "HeaderPreferredMetadataLanguage": "Gewenste metadata taal:", + "LabelSaveLocalMetadata": "Sla afbeeldingen en metadata op in de mediamappen", + "LabelSaveLocalMetadataHelp": "Door afbeeldingen en metadata op te slaan in de mediamappen kunnen ze makkelijker worden gevonden en bewerkt.", + "LabelDownloadInternetMetadata": "Download afbeeldingen en metadata van het internet", + "LabelDownloadInternetMetadataHelp": "Media Browser kan informatie en afbeeldingen van uw media downloaden, om zo een mooie en uitgebreide weergave mogelijk te maken.", + "TabPreferences": "Voorkeuren", + "TabPassword": "Wachtwoord", + "TabLibraryAccess": "Bibliotheek toegang", + "TabAccess": "Toegang", + "TabImage": "Afbeelding", + "TabProfile": "Profiel", + "TabMetadata": "Metagegevens", + "TabImages": "Afbeeldingen", + "TabNotifications": "Meldingen", + "TabCollectionTitles": "Titels", + "HeaderDeviceAccess": "Apparaat Toegang", + "OptionEnableAccessFromAllDevices": "Toegang vanaf alle apparaten toestaan", + "OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen", + "OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen", + "DeviceAccessHelp": "Dit geldt alleen voor apparaten die uniek ge\u00efdentificeerd kunnen worden en voorkomen niet toegang via een webbrowser. Filteren van apparaat toegang voor gebruikers voorkomt dat zij nieuwe apparaten gebruiken totdat deze hier zijn goedgekeurd.", + "LabelDisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen", + "LabelUnairedMissingEpisodesWithinSeasons": "Toon komende afleveringen binnen een seizoen", + "HeaderVideoPlaybackSettings": "Video afspeel instellingen", + "HeaderPlaybackSettings": "Afspeel instellingen", + "LabelAudioLanguagePreference": "Voorkeurs taal geluid:", + "LabelSubtitleLanguagePreference": "Voorkeurs taal ondertiteling:", + "OptionDefaultSubtitles": "Standaard", + "OptionOnlyForcedSubtitles": "Alleen 'geforceerde' ondertiteling", + "OptionAlwaysPlaySubtitles": "Ondertiteling altijd weergeven", + "OptionNoSubtitles": "Geen ondertitels", + "OptionDefaultSubtitlesHelp": "Ondertiteling wordt weergegeven in de voorkeurstaal als de audio in een andere taal is.", + "OptionOnlyForcedSubtitlesHelp": "Alleen ondertitels gemarkeerd als \"gedwongen\" zullen worden geladen.", + "OptionAlwaysPlaySubtitlesHelp": "Ondertiteling wordt weergegeveen in de voorkeurstaal ongeacht de taal van de audio.", + "OptionNoSubtitlesHelp": "Ondertiteling wordt standaard niet weergegeven.", + "TabProfiles": "Profielen", + "TabSecurity": "Beveiliging", + "ButtonAddUser": "Gebruiker toevoegen", + "ButtonAddLocalUser": "Voeg lokale gebruiker toe", + "ButtonInviteUser": "Nodig gebruiker uit", + "ButtonSave": "Opslaan", + "ButtonResetPassword": "Wachtwoord resetten", + "LabelNewPassword": "Nieuw wachtwoord:", + "LabelNewPasswordConfirm": "Bevestig nieuw wachtwoord:", + "HeaderCreatePassword": "Maak wachtwoord", + "LabelCurrentPassword": "Huidig wachtwoord:", + "LabelMaxParentalRating": "Maximaal toegestane kijkwijzer classificatie:", + "MaxParentalRatingHelp": "Media met een hogere classificatie wordt niet weergegeven", + "LibraryAccessHelp": "Selecteer de mediamappen om met deze gebruiker te delen. Beheerders kunnen alle mappen bewerken via de metadata manager.", + "ChannelAccessHelp": "Selecteer de kanalen om te delen met deze gebruiker. Beheerders kunnen alle kanalen bewerken met de metadata manager.", + "ButtonDeleteImage": "Verwijder afbeelding", + "LabelSelectUsers": "Selecteer gebruikers:", + "ButtonUpload": "Uploaden", + "HeaderUploadNewImage": "Nieuwe afbeelding uploaden", + "LabelDropImageHere": "Afbeelding hier neerzetten", + "ImageUploadAspectRatioHelp": "1:1 beeldverhouding geadviseerd. Alleen JPG\/PNG.", + "MessageNothingHere": "Lijst is leeg.", + "MessagePleaseEnsureInternetMetadata": "Zorg ervoor dat het downloaden van metadata van het internet is ingeschakeld.", + "TabSuggested": "Aanbevolen", + "TabLatest": "Nieuw", + "TabUpcoming": "Binnenkort op TV", + "TabShows": "Series", + "TabEpisodes": "Afleveringen", + "TabGenres": "Genres", + "TabPeople": "Personen", + "TabNetworks": "TV-Studio's", + "HeaderUsers": "Gebruikers", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorieten", + "OptionLikes": "Leuk", + "OptionDislikes": "Niet leuk", + "OptionActors": "Acteurs", + "OptionGuestStars": "Gast Sterren", + "OptionDirectors": "Regiseurs", + "OptionWriters": "Schrijvers", + "OptionProducers": "Producenten", + "HeaderResume": "Hervatten", + "HeaderNextUp": "Volgend", + "NoNextUpItemsMessage": "Niets gevonden. Start met kijken!", + "HeaderLatestEpisodes": "Nieuwste Afleveringen", + "HeaderPersonTypes": "Persoon Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artiesten", + "TabAlbumArtists": "Albumartiesten", + "TabMusicVideos": "Muziek Videos", + "ButtonSort": "Sorteren", + "HeaderSortBy": "Sorteren op:", + "HeaderSortOrder": "Sorteer volgorde:", + "OptionPlayed": "Afgespeeld", + "OptionUnplayed": "Onafgespeeld", + "OptionAscending": "Oplopend", + "OptionDescending": "Aflopend", + "OptionRuntime": "Speelduur", + "OptionReleaseDate": "Uitgave datum", + "OptionPlayCount": "Afspeel telling", + "OptionDatePlayed": "Datum afgespeeld", + "OptionDateAdded": "Datum toegevoegd", + "OptionAlbumArtist": "Albumartiest", + "OptionArtist": "Artiest", + "OptionAlbum": "Album", + "OptionTrackName": "Naam van Nummer", + "OptionCommunityRating": "Gemeenschaps Waardering", + "OptionNameSort": "Naam", + "OptionFolderSort": "Mappen", + "OptionBudget": "Budget", + "OptionRevenue": "Inkomsten", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster kaart", + "OptionBackdrop": "Achtergrond", + "OptionTimeline": "Tijdlijn", + "OptionThumb": "Miniatuur", + "OptionThumbCard": "Miniaturen kaart", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritieken", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Hervatbaar", + "ScheduledTasksHelp": "Klik op een taak om het schema aan te passen.", + "ScheduledTasksTitle": "Geplande taken", + "TabMyPlugins": "Mijn Plug-ins", + "TabCatalog": "Catalogus", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatische updates", + "HeaderNowPlaying": "Wordt nu afgespeeld", + "HeaderLatestAlbums": "Nieuwste Albums", + "HeaderLatestSongs": "Nieuwste Songs", + "HeaderRecentlyPlayed": "Recent afgespeeld", + "HeaderFrequentlyPlayed": "Vaak afgespeeld", + "DevBuildWarning": "Development versies zijn geheel voor eigen risico. Deze versies worden vaak vrijgegeven en zijn niet getest! De Applicatie kan crashen en sommige functies kunnen mogelijk niet meer werken.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Blu-ray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Kenmerken:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Versie:", + "LabelLastResult": "Laatste resultaat:", + "OptionHasSubtitles": "Ondertitels", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Thema Song" } \ 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 1a69722ba..00c4fd0f4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -1,262 +1,4 @@ { - "LabelExit": "Wyj\u015b\u0107", - "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standardowy", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Przejrzyj bibliotek\u0119", - "LabelConfigureMediaBrowser": "Skonfiguruj Media Browser", - "LabelOpenLibraryViewer": "Otw\u00f3rz przegl\u0105dark\u0119 biblioteki", - "LabelRestartServer": "Uruchom serwer ponownie", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Wstecz", - "LabelFinish": "Koniec", - "LabelNext": "Dalej", - "LabelYoureDone": "Sko\u0144czy\u0142e\u015b!", - "WelcomeToMediaBrowser": "Witaj w Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Asystent pomo\u017ce Ci podczas instalacji. Na pocz\u0105tku, wybierz tw\u00f3j preferowany j\u0119zyk.", - "TellUsAboutYourself": "Opowiedz nam o sobie", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Twoje imi\u0119:", - "MoreUsersCanBeAddedLater": "Mo\u017cesz doda\u0107 wi\u0119cej u\u017cytkownik\u00f3w p\u00f3\u017aniej przez tablic\u0119 rozdzielcz\u0105.", - "UserProfilesIntro": "Media Browser posiada wbudowane wsparcie dla profili u\u017cytkownik\u00f3w, pozwalaj\u0105c ka\u017cdemu na zapisanie opcji wy\u015bwietlania, stanu odtwarzania oraz kontroli rodzicielskiej.", - "LabelWindowsService": "Serwis Windows", - "AWindowsServiceHasBeenInstalled": "Serwis Windows zosta\u0142 zainstalowany.", - "WindowsServiceIntro1": "Serwer Media Browser w\u0142\u0105cza si\u0119 normalnie jako biurowa aplikacja z ikon\u0105 na pasku ale je\u015bli wolicie go uruchomi\u0107 w tle, mo\u017cecie to zrobi\u0107 u\u017cywaj\u0105c panelu sterowania serwis\u00f3w windows.", - "WindowsServiceIntro2": "Je\u015bli u\u017cywacie serwisu windows, to nie mo\u017ce on by\u0107 w\u0142\u0105czony r\u00f3wnocze\u015bnie z ikon\u0105 na pasku wi\u0119c b\u0119dziecie musieli j\u0105 wy\u0142\u0105czy\u0107 \u017ceby serwis dzia\u0142a\u0142. Nale\u017cy r\u00f3wnie\u017c ten serwis skonfigurowa\u0107 z uprawnieniami administracyjnymi poprzez panel sterowania. Prosz\u0119 wzi\u0105\u0107 pod uwag\u0119, \u017ce w tym momencie nie ma samo aktualizacji, nowe wersje b\u0119d\u0105 wi\u0119c potrzebowa\u0142y manualnej interwencji.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Skonfiguruj ustawienia", - "LabelEnableVideoImageExtraction": "W\u0142\u0105cz ekstrakcj\u0119 obrazu wideo", - "VideoImageExtractionHelp": "Dla filmik\u00f3w kt\u00f3re nie maj\u0105 jeszcze obraz\u00f3w i dla kt\u00f3rych nie mo\u017cemy \u017cadnych znale\u017a\u0107 na internecie. Zwi\u0119kszy to czas wst\u0119pnego skanowania biblioteki ale wynikiem b\u0119dzie \u0142adniejsza prezentacja.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "W\u0142\u0105cz automatyczne mapowanie port\u00f3w", - "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017cliwia automatyczne ustawienie routera dla \u0142atwego zdalnego dost\u0119pu. Ta opcja mo\u017ce nie dzia\u0142a\u0107 na niekt\u00f3rych modelach router\u00f3w.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Anuluj", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Ustaw swoj\u0105 bibliotek\u0119", - "ButtonAddMediaFolder": "Dodaj folder", - "LabelFolderType": "Typ folderu:", - "ReferToMediaLibraryWiki": "Odnie\u015b si\u0119 do wiki biblioteki.", - "LabelCountry": "Kraj:", - "LabelLanguage": "J\u0119zyk:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferowany j\u0119zyk metadanych:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferencje", - "TabPassword": "Has\u0142o", - "TabLibraryAccess": "Dost\u0119p do biblioteki", - "TabAccess": "Access", - "TabImage": "Obraz", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Wy\u015bwietl brakuj\u0105ce odcinki w sezonach", - "LabelUnairedMissingEpisodesWithinSeasons": "Wy\u015bwietl nie wydanie odcinki w sezonach", - "HeaderVideoPlaybackSettings": "Ustawienia odtwarzania wideo", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Preferencje j\u0119zyka audio:", - "LabelSubtitleLanguagePreference": "Preferencje j\u0119zyka napis\u00f3w:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profile", - "TabSecurity": "Zabezpieczenie", - "ButtonAddUser": "Dodaj u\u017cytkownika", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Zapisz", - "ButtonResetPassword": "Zresetuj has\u0142o", - "LabelNewPassword": "Nowe has\u0142o:", - "LabelNewPasswordConfirm": "Potwierd\u017a nowe has\u0142o:", - "HeaderCreatePassword": "Stw\u00f3rz has\u0142o:", - "LabelCurrentPassword": "Bie\u017c\u0105ce has\u0142o:", - "LabelMaxParentalRating": "Maksymalna dozwolona ocena rodzicielska:", - "MaxParentalRatingHelp": "Zawarto\u015b\u0107 z wy\u017csz\u0105 ocen\u0105 b\u0119dzie schowana dla tego u\u017cytkownika.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Usu\u0144 obrazek", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Wy\u015blij", - "HeaderUploadNewImage": "Wy\u015blij nowy obrazek", - "LabelDropImageHere": "Wstaw obraz tutaj", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nic tutaj nie ma.", - "MessagePleaseEnsureInternetMetadata": "Upewnij si\u0119 \u017ce pobieranie metadanych z internetu jest w\u0142\u0105czone.", - "TabSuggested": "Sugerowane", - "TabLatest": "Ostatnie", - "TabUpcoming": "Upcoming", - "TabShows": "Seriale", - "TabEpisodes": "Odcinki", - "TabGenres": "Rodzaje", - "TabPeople": "Osoby", - "TabNetworks": "Sieci", - "HeaderUsers": "U\u017cytkownicy", - "HeaderFilters": "Filtry:", - "ButtonFilter": "Filtr", - "OptionFavorite": "Ulubione", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Aktorzy", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Dyrektorzy", - "OptionWriters": "Pisarze", - "OptionProducers": "Producenci", - "HeaderResume": "Wzn\u00f3w", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "Nie znaleziono \u017cadnego. Zacznij ogl\u0105da\u0107 twoje seriale!", - "HeaderLatestEpisodes": "Ostanie odcinki", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Utwory", - "TabAlbums": "Albumy", - "TabArtists": "Arty\u015bci", - "TabAlbumArtists": "Arty\u015bci albumu", - "TabMusicVideos": "Teledyski", - "ButtonSort": "Sortuj", - "HeaderSortBy": "Sortuj wed\u0142ug:", - "HeaderSortOrder": "Kolejno\u015b\u0107 sortowania:", - "OptionPlayed": "Odtworzony", - "OptionUnplayed": "Nie odtworzony", - "OptionAscending": "Rosn\u0105co", - "OptionDescending": "Malej\u0105co", - "OptionRuntime": "D\u0142ugo\u015b\u0107 filmu", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Ilo\u015b\u0107 odtworze\u0144", - "OptionDatePlayed": "Data odtworzenia", - "OptionDateAdded": "Data dodania", - "OptionAlbumArtist": "Artysta albumu", - "OptionArtist": "Artysta", - "OptionAlbum": "Album", - "OptionTrackName": "Nazwa utworu", - "OptionCommunityRating": "Ocena spo\u0142eczno\u015bci", - "OptionNameSort": "Nazwa", - "OptionFolderSort": "Folders", - "OptionBudget": "Bud\u017cet", - "OptionRevenue": "Doch\u00f3d", - "OptionPoster": "Plakat", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Ocena krytyk\u00f3w", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Zaplanowane zadania", - "TabMyPlugins": "Moje wtyczki", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatyczne aktualizacje", - "HeaderNowPlaying": "Teraz odtwarzany", - "HeaderLatestAlbums": "Ostatnie albumy", - "HeaderLatestSongs": "Ostatnie utwory", - "HeaderRecentlyPlayed": "Ostatnio grane", - "HeaderFrequentlyPlayed": "Cz\u0119sto grane", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Type widea", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "W\u0142a\u015bciwo\u015bci", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Napisy", - "OptionHasTrailer": "Zwiastun", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Filmy", - "TabStudios": "Studia", - "TabTrailers": "Zwiastuny", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Ostatnie filmy", - "HeaderLatestTrailers": "Ostatnie zwiastuny", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "Ocena IMDb", "OptionParentalRating": "Ocena rodzicielska", "OptionPremiereDate": "Data premiery", "TabBasic": "Podstawowe", @@ -917,6 +659,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +902,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1115,275 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Wyj\u015b\u0107", + "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standardowy", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Przejrzyj bibliotek\u0119", + "LabelConfigureMediaBrowser": "Skonfiguruj Media Browser", + "LabelOpenLibraryViewer": "Otw\u00f3rz przegl\u0105dark\u0119 biblioteki", + "LabelRestartServer": "Uruchom serwer ponownie", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Wstecz", + "LabelFinish": "Koniec", + "LabelNext": "Dalej", + "LabelYoureDone": "Sko\u0144czy\u0142e\u015b!", + "WelcomeToMediaBrowser": "Witaj w Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Asystent pomo\u017ce Ci podczas instalacji. Na pocz\u0105tku, wybierz tw\u00f3j preferowany j\u0119zyk.", + "TellUsAboutYourself": "Opowiedz nam o sobie", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Twoje imi\u0119:", + "MoreUsersCanBeAddedLater": "Mo\u017cesz doda\u0107 wi\u0119cej u\u017cytkownik\u00f3w p\u00f3\u017aniej przez tablic\u0119 rozdzielcz\u0105.", + "UserProfilesIntro": "Media Browser posiada wbudowane wsparcie dla profili u\u017cytkownik\u00f3w, pozwalaj\u0105c ka\u017cdemu na zapisanie opcji wy\u015bwietlania, stanu odtwarzania oraz kontroli rodzicielskiej.", + "LabelWindowsService": "Serwis Windows", + "AWindowsServiceHasBeenInstalled": "Serwis Windows zosta\u0142 zainstalowany.", + "WindowsServiceIntro1": "Serwer Media Browser w\u0142\u0105cza si\u0119 normalnie jako biurowa aplikacja z ikon\u0105 na pasku ale je\u015bli wolicie go uruchomi\u0107 w tle, mo\u017cecie to zrobi\u0107 u\u017cywaj\u0105c panelu sterowania serwis\u00f3w windows.", + "WindowsServiceIntro2": "Je\u015bli u\u017cywacie serwisu windows, to nie mo\u017ce on by\u0107 w\u0142\u0105czony r\u00f3wnocze\u015bnie z ikon\u0105 na pasku wi\u0119c b\u0119dziecie musieli j\u0105 wy\u0142\u0105czy\u0107 \u017ceby serwis dzia\u0142a\u0142. Nale\u017cy r\u00f3wnie\u017c ten serwis skonfigurowa\u0107 z uprawnieniami administracyjnymi poprzez panel sterowania. Prosz\u0119 wzi\u0105\u0107 pod uwag\u0119, \u017ce w tym momencie nie ma samo aktualizacji, nowe wersje b\u0119d\u0105 wi\u0119c potrzebowa\u0142y manualnej interwencji.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Skonfiguruj ustawienia", + "LabelEnableVideoImageExtraction": "W\u0142\u0105cz ekstrakcj\u0119 obrazu wideo", + "VideoImageExtractionHelp": "Dla filmik\u00f3w kt\u00f3re nie maj\u0105 jeszcze obraz\u00f3w i dla kt\u00f3rych nie mo\u017cemy \u017cadnych znale\u017a\u0107 na internecie. Zwi\u0119kszy to czas wst\u0119pnego skanowania biblioteki ale wynikiem b\u0119dzie \u0142adniejsza prezentacja.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "W\u0142\u0105cz automatyczne mapowanie port\u00f3w", + "LabelEnableAutomaticPortMappingHelp": "UPnP umo\u017cliwia automatyczne ustawienie routera dla \u0142atwego zdalnego dost\u0119pu. Ta opcja mo\u017ce nie dzia\u0142a\u0107 na niekt\u00f3rych modelach router\u00f3w.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Anuluj", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Ustaw swoj\u0105 bibliotek\u0119", + "ButtonAddMediaFolder": "Dodaj folder", + "LabelFolderType": "Typ folderu:", + "ReferToMediaLibraryWiki": "Odnie\u015b si\u0119 do wiki biblioteki.", + "LabelCountry": "Kraj:", + "LabelLanguage": "J\u0119zyk:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferowany j\u0119zyk metadanych:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferencje", + "TabPassword": "Has\u0142o", + "TabLibraryAccess": "Dost\u0119p do biblioteki", + "TabAccess": "Access", + "TabImage": "Obraz", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Wy\u015bwietl brakuj\u0105ce odcinki w sezonach", + "LabelUnairedMissingEpisodesWithinSeasons": "Wy\u015bwietl nie wydanie odcinki w sezonach", + "HeaderVideoPlaybackSettings": "Ustawienia odtwarzania wideo", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Preferencje j\u0119zyka audio:", + "LabelSubtitleLanguagePreference": "Preferencje j\u0119zyka napis\u00f3w:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profile", + "TabSecurity": "Zabezpieczenie", + "ButtonAddUser": "Dodaj u\u017cytkownika", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Zapisz", + "ButtonResetPassword": "Zresetuj has\u0142o", + "LabelNewPassword": "Nowe has\u0142o:", + "LabelNewPasswordConfirm": "Potwierd\u017a nowe has\u0142o:", + "HeaderCreatePassword": "Stw\u00f3rz has\u0142o:", + "LabelCurrentPassword": "Bie\u017c\u0105ce has\u0142o:", + "LabelMaxParentalRating": "Maksymalna dozwolona ocena rodzicielska:", + "MaxParentalRatingHelp": "Zawarto\u015b\u0107 z wy\u017csz\u0105 ocen\u0105 b\u0119dzie schowana dla tego u\u017cytkownika.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Usu\u0144 obrazek", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Wy\u015blij", + "HeaderUploadNewImage": "Wy\u015blij nowy obrazek", + "LabelDropImageHere": "Wstaw obraz tutaj", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nic tutaj nie ma.", + "MessagePleaseEnsureInternetMetadata": "Upewnij si\u0119 \u017ce pobieranie metadanych z internetu jest w\u0142\u0105czone.", + "TabSuggested": "Sugerowane", + "TabLatest": "Ostatnie", + "TabUpcoming": "Upcoming", + "TabShows": "Seriale", + "TabEpisodes": "Odcinki", + "TabGenres": "Rodzaje", + "TabPeople": "Osoby", + "TabNetworks": "Sieci", + "HeaderUsers": "U\u017cytkownicy", + "HeaderFilters": "Filtry:", + "ButtonFilter": "Filtr", + "OptionFavorite": "Ulubione", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Aktorzy", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Dyrektorzy", + "OptionWriters": "Pisarze", + "OptionProducers": "Producenci", + "HeaderResume": "Wzn\u00f3w", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "Nie znaleziono \u017cadnego. Zacznij ogl\u0105da\u0107 twoje seriale!", + "HeaderLatestEpisodes": "Ostanie odcinki", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Utwory", + "TabAlbums": "Albumy", + "TabArtists": "Arty\u015bci", + "TabAlbumArtists": "Arty\u015bci albumu", + "TabMusicVideos": "Teledyski", + "ButtonSort": "Sortuj", + "HeaderSortBy": "Sortuj wed\u0142ug:", + "HeaderSortOrder": "Kolejno\u015b\u0107 sortowania:", + "OptionPlayed": "Odtworzony", + "OptionUnplayed": "Nie odtworzony", + "OptionAscending": "Rosn\u0105co", + "OptionDescending": "Malej\u0105co", + "OptionRuntime": "D\u0142ugo\u015b\u0107 filmu", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Ilo\u015b\u0107 odtworze\u0144", + "OptionDatePlayed": "Data odtworzenia", + "OptionDateAdded": "Data dodania", + "OptionAlbumArtist": "Artysta albumu", + "OptionArtist": "Artysta", + "OptionAlbum": "Album", + "OptionTrackName": "Nazwa utworu", + "OptionCommunityRating": "Ocena spo\u0142eczno\u015bci", + "OptionNameSort": "Nazwa", + "OptionFolderSort": "Folders", + "OptionBudget": "Bud\u017cet", + "OptionRevenue": "Doch\u00f3d", + "OptionPoster": "Plakat", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Ocena krytyk\u00f3w", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Zaplanowane zadania", + "TabMyPlugins": "Moje wtyczki", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatyczne aktualizacje", + "HeaderNowPlaying": "Teraz odtwarzany", + "HeaderLatestAlbums": "Ostatnie albumy", + "HeaderLatestSongs": "Ostatnie utwory", + "HeaderRecentlyPlayed": "Ostatnio grane", + "HeaderFrequentlyPlayed": "Cz\u0119sto grane", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Type widea", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "W\u0142a\u015bciwo\u015bci", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Napisy", + "OptionHasTrailer": "Zwiastun", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Filmy", + "TabStudios": "Studia", + "TabTrailers": "Zwiastuny", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Ostatnie filmy", + "HeaderLatestTrailers": "Ostatnie zwiastuny", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "Ocena IMDb" } \ 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 dba12cfa5..a8442c8fe 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -1,340 +1,4 @@ { - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Padr\u00e3o", - "LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", - "LabelDeveloperResources": "Recursos do Desenvolvedor", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureMediaBrowser": "Configurar Media Browser", - "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", - "LabelRestartServer": "Reiniciar Servidor", - "LabelShowLogWindow": "Exibir Janela de Log", - "LabelPrevious": "Anterior", - "LabelFinish": "Finalizar", - "LabelNext": "Pr\u00f3ximo", - "LabelYoureDone": "Pronto!", - "WelcomeToMediaBrowser": "Bem Vindo ao Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o. Para come\u00e7ar, por favor selecione seu idioma preferido.", - "TellUsAboutYourself": "Conte-nos sobre voc\u00ea", - "ButtonQuickStartGuide": "Guia r\u00e1pido", - "LabelYourFirstName": "Seu primeiro nome:", - "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios poder\u00e3o ser adicionados depois dentro do Painel.", - "UserProfilesIntro": "Media Browser inclui suporte a perfis de usu\u00e1rios, permitindo que cada usu\u00e1rio tenha suas prefer\u00eancias de visualiza\u00e7\u00e3o, status das reprodu\u00e7\u00f5es e controle parental.", - "LabelWindowsService": "Servi\u00e7o do Windows", - "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", - "WindowsServiceIntro1": "O Servidor Media Browser normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como servi\u00e7o pode inici\u00e1-lo no painel de controle de servi\u00e7os do Windows", - "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se estiver ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.", - "WizardCompleted": "Isso \u00e9 tudo o que \u00e9 necess\u00e1rio no momento. O Media Browser come\u00e7ou a coletar as informa\u00e7\u00f5es de sua biblioteca de m\u00eddias. Verifique algumas de nossas apps e ent\u00e3o clique Terminar<\/b> para ver o Painel do Servidor<\/b>.", - "LabelConfigureSettings": "Configurar ajustes", - "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo", - "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.", - "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes", - "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes exibir menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, ocasionar uso intensivo de cpu e pode exigir bastante espa\u00e7o em disco. Ele ser\u00e1 executado como uma tarefa noturna, embora isto possa ser configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar esta tarefa durante as horas de pico de uso.", - "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.", - "HeaderTermsOfService": "Termos de Servi\u00e7o do Media Browser", - "MessagePleaseAcceptTermsOfService": "Por favor, aceite os termos de servi\u00e7o e pol\u00edtica de privacidade antes de continuar.", - "OptionIAcceptTermsOfService": "Aceito os termos de servi\u00e7o", - "ButtonPrivacyPolicy": "Pol\u00edtica de privacidade", - "ButtonTermsOfService": "Termos de Servi\u00e7o", - "HeaderDeveloperOptions": "Op\u00e7\u00f5es de Desenvolvedor", - "OptionEnableWebClientResponseCache": "Ativar o cache de resposta do client web", - "OptionDisableForDevelopmentHelp": "Configure esta op\u00e7\u00e3o de acordo ao prop\u00f3sito de desenvolvimento do cliente web", - "OptionEnableWebClientResourceMinification": "Ativar a minimiza\u00e7\u00e3o de recursos do cliente web", - "LabelDashboardSourcePath": "Caminho fonte do cliente web:", - "LabelDashboardSourcePathHelp": "Se executar o servidor a partir do c\u00f3digo, especifique o caminho para a pasta da interface do painel. Todos os arquivos do cliente web ser\u00e3o usados nesta localiza\u00e7\u00e3o.", - "ButtonConvertMedia": "Converter m\u00eddia", - "ButtonOrganize": "Organizar", - "LabelPinCode": "C\u00f3digo Pin:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "ButtonExit": "Sair", - "ButtonNew": "Novo", - "HeaderTV": "TV", - "HeaderAudio": "\u00c1udio", - "HeaderVideo": "V\u00eddeo", - "HeaderPaths": "Caminhos", - "CategorySync": "Sincroniza\u00e7\u00e3o", - "HeaderEasyPinCode": "C\u00f3digo de Pin Facil", - "HeaderGrownupsOnly": "Adultos Apenas!", - "DividerOr": "-- ou --", - "HeaderInstalledServices": "Servi\u00e7os Instalados", - "HeaderAvailableServices": "Servi\u00e7os Dispon\u00edveis", - "MessageNoServicesInstalled": "N\u00e3o existem servi\u00e7os instalados atualmente.", - "HeaderToAccessPleaseEnterEasyPinCode": "Para acessar, por favor digite seu c\u00f3digo pin f\u00e1cil", - "KidsModeAdultInstruction": "Clique no \u00edcone de bloqueio no canto inferior direito para configurar ou deixar o modo infantil. Seu c\u00f3digo pin ser\u00e1 necess\u00e1rio.", - "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", - "HeaderAdultsReadHere": "Adultos Leiam Aqui!", - "RegisterWithPayPal": "Registrar com PayPal", - "HeaderSyncRequiresSupporterMembership": "Sincroniza\u00e7\u00e3o Necessita de uma Filia\u00e7\u00e3o de Colaborador", - "HeaderEnjoyDayTrial": "Aproveite um per\u00edodo de 14 dias gr\u00e1tis para testes", - "LabelSyncTempPath": "Caminho de arquivo tempor\u00e1rio:", - "LabelSyncTempPathHelp": "Especifique uma pasta de trabalho para a sincroniza\u00e7\u00e3o personalizada. M\u00eddias convertidas criadas durante o processo de sincroniza\u00e7\u00e3o ser\u00e3o aqui armazenadas.", - "LabelCustomCertificatePath": "Caminho do certificado personalizado:", - "LabelCustomCertificatePathHelp": "Forne\u00e7a seu pr\u00f3prio arquivo .pfx do certificado ssl. Se omitido, o servidor criar\u00e1 um certificado auto-assinado.", - "TitleNotifications": "Notifica\u00e7\u00f5es", - "ButtonDonateWithPayPal": "Doe atrav\u00e9s do PayPal", - "OptionDetectArchiveFilesAsMedia": "Detectar arquivos compactados como m\u00eddia", - "OptionDetectArchiveFilesAsMediaHelp": "Se ativado, arquivos com extens\u00f5es .rar e .zip ser\u00e3o detectados como arquivos de m\u00eddia.", - "LabelEnterConnectUserName": "Nome de usu\u00e1rio ou email:", - "LabelEnterConnectUserNameHelp": "Este \u00e9 o nome de usu\u00e1rio ou senha de sua conta online do Media Browser.", - "LabelEnableEnhancedMovies": "Ativar exibi\u00e7\u00f5es de filme avan\u00e7adas", - "LabelEnableEnhancedMoviesHelp": "Quando ativado, os filmes ser\u00e3o exibidos como pastas para incluir trailers, extras, elenco & equipe e outros conte\u00fados relacionados.", - "HeaderSyncJobInfo": "Tarefa de Sincroniza\u00e7\u00e3o", - "FolderTypeMixed": "Conte\u00fado misto", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "V\u00eddeos adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "V\u00eddeos musicais", - "FolderTypeHomeVideos": "V\u00eddeos caseiros", - "FolderTypeGames": "Jogos", - "FolderTypeBooks": "Livros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Herdar", - "LabelContentType": "Tipo de conte\u00fado:", - "TitleScheduledTasks": "Tarefas Agendadas", - "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias", - "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias", - "LabelFolderType": "Tipo de pasta:", - "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "Limite de tempo (horas):", - "ButtonJoinTheDevelopmentTeam": "Junte-se ao Time de Desenvolvimento", - "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:", - "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia", - "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.", - "LabelDownloadInternetMetadata": "Fazer download das imagens e metadados da internet", - "LabelDownloadInternetMetadataHelp": "O Media Browser pode fazer download das informa\u00e7\u00f5es de sua m\u00eddia para melhorar a apresenta\u00e7\u00e3o.", - "TabPreferences": "Prefer\u00eancias", - "TabPassword": "Senha", - "TabLibraryAccess": "Acesso \u00e0 Biblioteca", - "TabAccess": "Acesso", - "TabImage": "Imagem", - "TabProfile": "Perfil", - "TabMetadata": "Metadados", - "TabImages": "Imagens", - "TabNotifications": "Notifica\u00e7\u00f5es", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Acesso ao Dispositivo", - "OptionEnableAccessFromAllDevices": "Ativar o acesso de todos os dispositivos", - "OptionEnableAccessToAllChannels": "Ativar o acesso a todos os canais", - "OptionEnableAccessToAllLibraries": "Ativar o acesso a todas as bibliotecas", - "DeviceAccessHelp": "Isto apenas aplica para dispositivos que podem ser identificados como \u00fanicos e n\u00e3o evitar\u00e3o o acesso do navegador. Filtrar o acesso ao dispositivo do usu\u00e1rio evitar\u00e1 que sejam usados novos dispositivos at\u00e9 que sejam aprovados aqui.", - "LabelDisplayMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios que faltam dentro das temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios por estrear dentro das temporadas", - "HeaderVideoPlaybackSettings": "Ajustes da Reprodu\u00e7\u00e3o de V\u00eddeo", - "HeaderPlaybackSettings": "Ajustes de Reprodu\u00e7\u00e3o", - "LabelAudioLanguagePreference": "Prefer\u00eancia do idioma do \u00e1udio:", - "LabelSubtitleLanguagePreference": "Prefer\u00eancia do idioma da legenda:", - "OptionDefaultSubtitles": "Padr\u00e3o", - "OptionOnlyForcedSubtitles": "Apenas legendas for\u00e7adas", - "OptionAlwaysPlaySubtitles": "Sempre reproduzir legendas", - "OptionNoSubtitles": "Nenhuma legenda", - "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver em um idioma estrangeiro.", - "OptionOnlyForcedSubtitlesHelp": "Apenas legendas marcadas como for\u00e7adas ser\u00e3o carregadas.", - "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", - "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", - "TabProfiles": "Perfis", - "TabSecurity": "Seguran\u00e7a", - "ButtonAddUser": "Adicionar Usu\u00e1rio", - "ButtonAddLocalUser": "Adicionar Usu\u00e1rio Local", - "ButtonInviteUser": "Convidar Usu\u00e1rio", - "ButtonSave": "Salvar", - "ButtonResetPassword": "Redefinir Senha", - "LabelNewPassword": "Nova senha:", - "LabelNewPasswordConfirm": "Confirmar nova senha:", - "HeaderCreatePassword": "Criar Senha", - "LabelCurrentPassword": "Senha atual:", - "LabelMaxParentalRating": "Classifica\u00e7\u00e3o parental m\u00e1xima permitida:", - "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o maior ser\u00e1 ocultado do usu\u00e1rio.", - "LibraryAccessHelp": "Selecione as pastas de m\u00eddia para compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todas as pastas usando o gerenciador de metadados.", - "ChannelAccessHelp": "Selecione os canais a compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todos os canais usando o gerenciador de metadados.", - "ButtonDeleteImage": "Excluir Imagem", - "LabelSelectUsers": "Selecionar usu\u00e1rios:", - "ButtonUpload": "Carregar", - "HeaderUploadNewImage": "Carregar Nova Imagem", - "LabelDropImageHere": "Soltar imagem aqui", - "ImageUploadAspectRatioHelp": "Propor\u00e7\u00e3o de Imagem 1:1 Recomendada. Apenas JPG\/PNG", - "MessageNothingHere": "Nada aqui.", - "MessagePleaseEnsureInternetMetadata": "Por favor, certifique-se que o download de metadados da internet est\u00e1 habilitado.", - "TabSuggested": "Sugeridos", - "TabLatest": "Recentes", - "TabUpcoming": "Por Estrear", - "TabShows": "S\u00e9ries", - "TabEpisodes": "Epis\u00f3dios", - "TabGenres": "G\u00eaneros", - "TabPeople": "Pessoas", - "TabNetworks": "Redes", - "HeaderUsers": "Usu\u00e1rios", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Gostei", - "OptionDislikes": "N\u00e3o Gostei", - "OptionActors": "Atores", - "OptionGuestStars": "Convidados Especiais", - "OptionDirectors": "Diretores", - "OptionWriters": "Escritores", - "OptionProducers": "Produtores", - "HeaderResume": "Retomar", - "HeaderNextUp": "Pr\u00f3ximo", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece assistindo suas s\u00e9ries!", - "HeaderLatestEpisodes": "Epis\u00f3dios Recentes", - "HeaderPersonTypes": "Tipos de Pessoa:", - "TabSongs": "M\u00fasicas", - "TabAlbums": "\u00c1lbuns", - "TabArtists": "Artistas", - "TabAlbumArtists": "Artistas do \u00c1lbum", - "TabMusicVideos": "V\u00eddeos Musicais", - "ButtonSort": "Ordenar", - "HeaderSortBy": "Ordenar Por:", - "HeaderSortOrder": "Forma para Ordenar:", - "OptionPlayed": "Reproduzido", - "OptionUnplayed": "N\u00e3o-reproduzido", - "OptionAscending": "Crescente", - "OptionDescending": "Decrescente", - "OptionRuntime": "Dura\u00e7\u00e3o", - "OptionReleaseDate": "Data de Lan\u00e7amento", - "OptionPlayCount": "N\u00famero Reprodu\u00e7\u00f5es", - "OptionDatePlayed": "Data da Reprodu\u00e7\u00e3o", - "OptionDateAdded": "Data da Adi\u00e7\u00e3o", - "OptionAlbumArtist": "Artista do \u00c1lbum", - "OptionArtist": "Artista", - "OptionAlbum": "\u00c1lbum", - "OptionTrackName": "Nome da Faixa", - "OptionCommunityRating": "Avalia\u00e7\u00e3o da Comunidade", - "OptionNameSort": "Nome", - "OptionFolderSort": "Pastas", - "OptionBudget": "Or\u00e7amento", - "OptionRevenue": "Faturamento", - "OptionPoster": "Capa", - "OptionPosterCard": "Cart\u00e3o da capa", - "OptionBackdrop": "Imagem de Fundo", - "OptionTimeline": "Linha do tempo", - "OptionThumb": "\u00cdcone", - "OptionThumbCard": "Cart\u00e3o do \u00edcone", - "OptionBanner": "Banner", - "OptionCriticRating": "Avalia\u00e7\u00e3o da Cr\u00edtica", - "OptionVideoBitrate": "Taxa do V\u00eddeo", - "OptionResumable": "Por retomar", - "ScheduledTasksHelp": "Clique em uma tarefa para ajustar quando ser\u00e1 executada.", - "ScheduledTasksTitle": "Tarefas Agendadas", - "TabMyPlugins": "Meus Plugins", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es Autom\u00e1ticas", - "HeaderNowPlaying": "Reproduzindo Agora", - "HeaderLatestAlbums": "\u00c1lbuns Recentes", - "HeaderLatestSongs": "M\u00fasicas Recentes", - "HeaderRecentlyPlayed": "Reprodu\u00e7\u00f5es Recentes", - "HeaderFrequentlyPlayed": "Reprodu\u00e7\u00f5es Frequentes", - "DevBuildWarning": "Vers\u00f5es Dev s\u00e3o as mais atuais. Lan\u00e7adas frequentemente, estas vers\u00f5es n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode falhar e v\u00e1rios recursos podem n\u00e3o funcionar.", - "LabelVideoType": "Tipo de V\u00eddeo:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Recursos:", - "LabelService": "Servi\u00e7o:", - "LabelStatus": "Status:", - "LabelVersion": "Vers\u00e3o:", - "LabelLastResult": "\u00daltimo resultado:", - "OptionHasSubtitles": "Legendas", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "M\u00fasica-Tema", - "OptionHasThemeVideo": "V\u00eddeo-Tema", - "TabMovies": "Filmes", - "TabStudios": "Est\u00fadios", - "TabTrailers": "Trailers", - "LabelArtists": "Artistas:", - "LabelArtistsHelp": "Separar m\u00faltiplos usando ;", - "HeaderLatestMovies": "Filmes Recentes", - "HeaderLatestTrailers": "Trailers Recentes", - "OptionHasSpecialFeatures": "Recursos Especiais", - "OptionImdbRating": "Avalia\u00e7\u00e3o IMDb", - "OptionParentalRating": "Classifica\u00e7\u00e3o Parental", - "OptionPremiereDate": "Data da Estr\u00e9ia", - "TabBasic": "B\u00e1sico", - "TabAdvanced": "Avan\u00e7ado", - "HeaderStatus": "Status", - "OptionContinuing": "Em Exibi\u00e7\u00e3o", - "OptionEnded": "Finalizada", - "HeaderAirDays": "Dias da Exibi\u00e7\u00e3o", - "OptionSunday": "Domingo", - "OptionMonday": "Segunda-feira", - "OptionTuesday": "Ter\u00e7a-feira", - "OptionWednesday": "Quarta-feira", - "OptionThursday": "Quinta-feira", - "OptionFriday": "Sexta-feira", - "OptionSaturday": "S\u00e1bado", - "HeaderManagement": "Gerenciamento", - "LabelManagement": "Administra\u00e7\u00e3o:", - "OptionMissingImdbId": "Faltando Id IMDb", - "OptionMissingTvdbId": "Faltando Id TheTVDB", - "OptionMissingOverview": "Faltando Sinopse", - "OptionFileMetadataYearMismatch": "Anos do Arquivo e Metadados n\u00e3o conferem", - "TabGeneral": "Geral", - "TitleSupport": "Suporte", - "TabLog": "Log", - "TabAbout": "Sobre", - "TabSupporterKey": "Chave de Colaborador", - "TabBecomeSupporter": "Torne-se um Colaborador", - "MediaBrowserHasCommunity": "Media Browser tem uma comunidade que cresce em usu\u00e1rios e colaboradores.", - "CheckoutKnowledgeBase": "Verifique nossa base de conhecimento para ajud\u00e1-lo a obter o m\u00e1ximo do Media Browser.", - "SearchKnowledgeBase": "Pesquisar na Base de Conhecimento", - "VisitTheCommunity": "Visitar a Comunidade", - "VisitMediaBrowserWebsite": "Visitar o Web Site do Media Browser", - "VisitMediaBrowserWebsiteLong": "Visite o Web Site do Media Browser para obter as \u00faltimas novidades e atualizar-se com o blog de desenvolvedores.", - "OptionHideUser": "Ocultar este usu\u00e1rio das telas de login", - "OptionHideUserFromLoginHelp": "\u00datil para contas de administrador privadas ou ocultas. O usu\u00e1rio necessitar\u00e1 entrar manualmente, digitando seu nome de usu\u00e1rio e senha.", - "OptionDisableUser": "Desativar este usu\u00e1rio", - "OptionDisableUserHelp": "Se estiver desativado o servidor n\u00e3o permitir\u00e1 nenhuma conex\u00e3o deste usu\u00e1rio. Conex\u00f5es existentes ser\u00e3o abruptamente terminadas.", - "HeaderAdvancedControl": "Controle Avan\u00e7ado", - "LabelName": "Nome:", - "ButtonHelp": "Ajuda", - "OptionAllowUserToManageServer": "Permitir a este usu\u00e1rio administrar o servidor", - "HeaderFeatureAccess": "Acesso aos Recursos", - "OptionAllowMediaPlayback": "Permitir reprodu\u00e7\u00e3o de m\u00eddia", - "OptionAllowBrowsingLiveTv": "Permitir acesso \u00e0 TV ao Vivo", - "OptionAllowDeleteLibraryContent": "Permitir exclus\u00e3o de m\u00eddia", - "OptionAllowManageLiveTv": "Permitir gerenciamento de grava\u00e7\u00f5es da TV ao Vivo", - "OptionAllowRemoteControlOthers": "Permitir controle remoto de outros usu\u00e1rios", - "OptionAllowRemoteSharedDevices": "Permitir controle remoto de dispositivos compartilhados", - "OptionAllowRemoteSharedDevicesHelp": "Dispositivos dlna s\u00e3o considerados compartilhados at\u00e9 que um usu\u00e1rio comece a control\u00e1-lo.", - "HeaderRemoteControl": "Controle Remoto", - "OptionMissingTmdbId": "Faltando Id Tmdb", - "OptionIsHD": "HD", - "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Selecionar", - "ButtonGroupVersions": "Agrupar Vers\u00f5es", - "ButtonAddToCollection": "Adicionar \u00e0 Cole\u00e7\u00e3o", - "PismoMessage": "Utilizando Pismo File Mount atrav\u00e9s de uma licen\u00e7a de doa\u00e7\u00e3o", - "TangibleSoftwareMessage": "Utilizando conversores Java\/C# da Tangible Solutions atrav\u00e9s de uma licen\u00e7a de doa\u00e7\u00e3o.", - "HeaderCredits": "Cr\u00e9ditos", - "PleaseSupportOtherProduces": "Por favor, apoie outros produtos gr\u00e1tis que utilizamos:", - "VersionNumber": "Vers\u00e3o {0}", - "TabPaths": "Caminhos", - "TabServer": "Servidor", - "TabTranscoding": "Transcodifica\u00e7\u00e3o", - "TitleAdvanced": "Avan\u00e7ado", - "LabelAutomaticUpdateLevel": "N\u00edvel de atualiza\u00e7\u00e3o autom\u00e1tica", - "OptionRelease": "Lan\u00e7amento Oficial", - "OptionBeta": "Beta", - "OptionDev": "Dev (Inst\u00e1vel)", - "LabelAllowServerAutoRestart": "Permitir ao servidor reiniciar automaticamente para aplicar as atualiza\u00e7\u00f5es", - "LabelAllowServerAutoRestartHelp": "O servidor s\u00f3 reiniciar\u00e1 durante os per\u00edodos ociosos, quando nenhum usu\u00e1rio estiver ativo.", - "LabelEnableDebugLogging": "Ativar log de depura\u00e7\u00e3o", - "LabelRunServerAtStartup": "Executar servidor na inicializa\u00e7\u00e3o", - "LabelRunServerAtStartupHelp": "Esta op\u00e7\u00e3o abrir\u00e1 o \u00edcone da bandeja de sistema na inicializa\u00e7\u00e3o do windows. Para iniciar o servi\u00e7o do windows, desmarque esta op\u00e7\u00e3o e inicie o servi\u00e7o no painel de controle do windows. Por favor, saiba que voc\u00ea n\u00e3o pode executar os dois ao mesmo tempo, ent\u00e3o ser\u00e1 necess\u00e1rio sair do \u00edcone na bandeja antes de iniciar o servi\u00e7o.", - "ButtonSelectDirectory": "Selecionar Diret\u00f3rio", - "LabelCustomPaths": "Defina caminhos personalizados. Deixe os campos em branco para usar o padr\u00e3o.", - "LabelCachePath": "Caminho do cache:", "LabelCachePathHelp": "Defina uma localiza\u00e7\u00e3o para os arquivos de cache como, por exemplo, imagens.", "LabelImagesByNamePath": "Caminho do Images by name:", "LabelImagesByNamePathHelp": "Defina uma localiza\u00e7\u00e3o para imagens baixadas para ator, g\u00eanero e est\u00fadio.", @@ -917,6 +581,7 @@ "LabelChannelDownloadAgeHelp": "O conte\u00fado transferido que for mais velho que este valor ser\u00e1 exclu\u00eddo. Poder\u00e1 seguir reproduzindo-o atrav\u00e9s de streaming da internet.", "ChannelSettingsFormHelp": "Instalar canais como, por exemplo, Trailers e Vimeo no cat\u00e1logo de plugins.", "ButtonOptions": "Op\u00e7\u00f5es", + "ViewTypePlaylists": "Listas de Reprodu\u00e7\u00e3o", "ViewTypeMovies": "Filmes", "ViewTypeTvShows": "TV", "ViewTypeGames": "Jogos", @@ -1159,6 +824,7 @@ "LabelIfYouWishToContinueWithDeletion": "Se desejar continuar, por favor confirme digitando o valor de:", "ButtonIdentify": "Identificar", "LabelAlbumArtist": "Artista do \u00e1lbum:", + "LabelAlbumArtists": "Artistas do \u00c1lbum:", "LabelAlbum": "\u00c1lbum:", "LabelCommunityRating": "Avalia\u00e7\u00e3o da comunidade:", "LabelVoteCount": "Contagem de votos:", @@ -1371,5 +1037,353 @@ "LabelTagFilterMode": "Modo:", "LabelTagFilterAllowModeHelp": "Se permitidas, as tags ser\u00e3o usadas como parte de uma estrutura de pastas agrupadas. Conte\u00fado com tags necessitar\u00e1 que as pastas superiores tamb\u00e9m tenham tags.", "HeaderThisUserIsCurrentlyDisabled": "Este usu\u00e1rio est\u00e1 desativado atualmente", - "MessageReenableUser": "Veja abaixo para reativar" + "MessageReenableUser": "Veja abaixo para reativar", + "LabelEnableInternetMetadataForTvPrograms": "Fazer download dos metadados da internet para:", + "OptionTVMovies": "Filmes da TV", + "HeaderUpcomingMovies": "Filmes Por Estrear", + "HeaderUpcomingPrograms": "Programas Por Estrear", + "ButtonMoreItems": "Mais...", + "LabelShowLibraryTileNames": "Mostrar os nomes das tiles da biblioteca", + "LabelShowLibraryTileNamesHelp": "Determina se os t\u00edtulos ser\u00e3o exibidos embaixo das tiles da biblioteca na p\u00e1gina in\u00edcio", + "LabelExit": "Sair", + "LabelVisitCommunity": "Visitar a Comunidade", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Padr\u00e3o", + "LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", + "LabelDeveloperResources": "Recursos do Desenvolvedor", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureMediaBrowser": "Configurar Media Browser", + "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", + "LabelRestartServer": "Reiniciar Servidor", + "LabelShowLogWindow": "Exibir Janela de Log", + "LabelPrevious": "Anterior", + "LabelFinish": "Finalizar", + "LabelNext": "Pr\u00f3ximo", + "LabelYoureDone": "Pronto!", + "WelcomeToMediaBrowser": "Bem Vindo ao Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Este assistente ir\u00e1 gui\u00e1-lo pelo processo de instala\u00e7\u00e3o. Para come\u00e7ar, por favor selecione seu idioma preferido.", + "TellUsAboutYourself": "Conte-nos sobre voc\u00ea", + "ButtonQuickStartGuide": "Guia r\u00e1pido", + "LabelYourFirstName": "Seu primeiro nome:", + "MoreUsersCanBeAddedLater": "Mais usu\u00e1rios poder\u00e3o ser adicionados depois dentro do Painel.", + "UserProfilesIntro": "Media Browser inclui suporte a perfis de usu\u00e1rios, permitindo que cada usu\u00e1rio tenha suas prefer\u00eancias de visualiza\u00e7\u00e3o, status das reprodu\u00e7\u00f5es e controle parental.", + "LabelWindowsService": "Servi\u00e7o do Windows", + "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", + "WindowsServiceIntro1": "O Servidor Media Browser normalmente \u00e9 executado como uma aplica\u00e7\u00e3o de desktop com um \u00edcone na bandeja do sistema, mas se preferir executar como servi\u00e7o pode inici\u00e1-lo no painel de controle de servi\u00e7os do Windows", + "WindowsServiceIntro2": "Se usar o servi\u00e7o do Windows, por favor certifique-se que n\u00e3o esteja sendo executado ao mesmo tempo que o \u00edcone na bandeja, se estiver ter\u00e1 que sair da app antes de executar o servi\u00e7o. O servi\u00e7o necessita ser configurado com privil\u00e9gios de administrador no painel de controle. Neste momento o servi\u00e7o n\u00e3o pode se auto-atualizar, por isso novas vers\u00f5es exigir\u00e3o intera\u00e7\u00e3o manual.", + "WizardCompleted": "Isso \u00e9 tudo o que \u00e9 necess\u00e1rio no momento. O Media Browser come\u00e7ou a coletar as informa\u00e7\u00f5es de sua biblioteca de m\u00eddias. Verifique algumas de nossas apps e ent\u00e3o clique Terminar<\/b> para ver o Painel do Servidor<\/b>.", + "LabelConfigureSettings": "Configurar ajustes", + "LabelEnableVideoImageExtraction": "Ativar extra\u00e7\u00e3o de imagens de v\u00eddeo", + "VideoImageExtractionHelp": "Para v\u00eddeos que n\u00e3o tenham imagens e que n\u00e3o possamos encontrar imagens na internet. Isto aumentar\u00e1 o tempo do rastreamento inicial da biblioteca mas resultar\u00e1 em uma apresenta\u00e7\u00e3o mais bonita.", + "LabelEnableChapterImageExtractionForMovies": "Extrair imagens de cap\u00edtulos dos Filmes", + "LabelChapterImageExtractionForMoviesHelp": "Extrair imagens de cap\u00edtulos permitir\u00e1 aos clientes exibir menus gr\u00e1ficos de sele\u00e7\u00e3o de cenas. O processo pode ser lento, ocasionar uso intensivo de cpu e pode exigir bastante espa\u00e7o em disco. Ele ser\u00e1 executado como uma tarefa noturna, embora isto possa ser configur\u00e1vel na \u00e1rea de tarefas agendadas. N\u00e3o \u00e9 recomendado executar esta tarefa durante as horas de pico de uso.", + "LabelEnableAutomaticPortMapping": "Ativar mapeamento de porta autom\u00e1tico", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite uma configura\u00e7\u00e3o automatizada do roteador para acesso remoto f\u00e1cil. Isto pode n\u00e3o funcionar em alguns modelos de roteadores.", + "HeaderTermsOfService": "Termos de Servi\u00e7o do Media Browser", + "MessagePleaseAcceptTermsOfService": "Por favor, aceite os termos de servi\u00e7o e pol\u00edtica de privacidade antes de continuar.", + "OptionIAcceptTermsOfService": "Aceito os termos de servi\u00e7o", + "ButtonPrivacyPolicy": "Pol\u00edtica de privacidade", + "ButtonTermsOfService": "Termos de Servi\u00e7o", + "HeaderDeveloperOptions": "Op\u00e7\u00f5es de Desenvolvedor", + "OptionEnableWebClientResponseCache": "Ativar o cache de resposta do client web", + "OptionDisableForDevelopmentHelp": "Configure esta op\u00e7\u00e3o de acordo ao prop\u00f3sito de desenvolvimento do cliente web", + "OptionEnableWebClientResourceMinification": "Ativar a minimiza\u00e7\u00e3o de recursos do cliente web", + "LabelDashboardSourcePath": "Caminho fonte do cliente web:", + "LabelDashboardSourcePathHelp": "Se executar o servidor a partir do c\u00f3digo, especifique o caminho para a pasta da interface do painel. Todos os arquivos do cliente web ser\u00e3o usados nesta localiza\u00e7\u00e3o.", + "ButtonConvertMedia": "Converter m\u00eddia", + "ButtonOrganize": "Organizar", + "LinkedToMediaBrowserConnect": "Conectado ao Media Browser Connect", + "HeaderSupporterBenefits": "Benef\u00edcios do Colaborador", + "HeaderAddUser": "Adicionar Usu\u00e1rio", + "LabelAddConnectSupporterHelp": "Para adicionar um usu\u00e1rio que n\u00e3o esteja listado, voc\u00ea precisar\u00e1 primeiro conectar sua conta ao Media Browser Connect a partir de sua p\u00e1gina de perfil de usu\u00e1rio.", + "LabelPinCode": "C\u00f3digo Pin:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancelar", + "ButtonExit": "Sair", + "ButtonNew": "Novo", + "HeaderTV": "TV", + "HeaderAudio": "\u00c1udio", + "HeaderVideo": "V\u00eddeo", + "HeaderPaths": "Caminhos", + "CategorySync": "Sincroniza\u00e7\u00e3o", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "C\u00f3digo de Pin Facil", + "HeaderGrownupsOnly": "Adultos Apenas!", + "DividerOr": "-- ou --", + "HeaderInstalledServices": "Servi\u00e7os Instalados", + "HeaderAvailableServices": "Servi\u00e7os Dispon\u00edveis", + "MessageNoServicesInstalled": "N\u00e3o existem servi\u00e7os instalados atualmente.", + "HeaderToAccessPleaseEnterEasyPinCode": "Para acessar, por favor digite seu c\u00f3digo pin f\u00e1cil", + "KidsModeAdultInstruction": "Clique no \u00edcone de bloqueio no canto inferior direito para configurar ou deixar o modo infantil. Seu c\u00f3digo pin ser\u00e1 necess\u00e1rio.", + "ButtonConfigurePinCode": "Configurar c\u00f3digo pin", + "HeaderAdultsReadHere": "Adultos Leiam Aqui!", + "RegisterWithPayPal": "Registrar com PayPal", + "HeaderSyncRequiresSupporterMembership": "Sincroniza\u00e7\u00e3o Necessita de uma Filia\u00e7\u00e3o de Colaborador", + "HeaderEnjoyDayTrial": "Aproveite um per\u00edodo de 14 dias gr\u00e1tis para testes", + "LabelSyncTempPath": "Caminho de arquivo tempor\u00e1rio:", + "LabelSyncTempPathHelp": "Especifique uma pasta de trabalho para a sincroniza\u00e7\u00e3o personalizada. M\u00eddias convertidas criadas durante o processo de sincroniza\u00e7\u00e3o ser\u00e3o aqui armazenadas.", + "LabelCustomCertificatePath": "Caminho do certificado personalizado:", + "LabelCustomCertificatePathHelp": "Forne\u00e7a seu pr\u00f3prio arquivo .pfx do certificado ssl. Se omitido, o servidor criar\u00e1 um certificado auto-assinado.", + "TitleNotifications": "Notifica\u00e7\u00f5es", + "ButtonDonateWithPayPal": "Doe atrav\u00e9s do PayPal", + "OptionDetectArchiveFilesAsMedia": "Detectar arquivos compactados como m\u00eddia", + "OptionDetectArchiveFilesAsMediaHelp": "Se ativado, arquivos com extens\u00f5es .rar e .zip ser\u00e3o detectados como arquivos de m\u00eddia.", + "LabelEnterConnectUserName": "Nome de usu\u00e1rio ou email:", + "LabelEnterConnectUserNameHelp": "Este \u00e9 o nome de usu\u00e1rio ou senha de sua conta online do Media Browser.", + "LabelEnableEnhancedMovies": "Ativar exibi\u00e7\u00f5es de filme avan\u00e7adas", + "LabelEnableEnhancedMoviesHelp": "Quando ativado, os filmes ser\u00e3o exibidos como pastas para incluir trailers, extras, elenco & equipe e outros conte\u00fados relacionados.", + "HeaderSyncJobInfo": "Tarefa de Sincroniza\u00e7\u00e3o", + "FolderTypeMixed": "Conte\u00fado misto", + "FolderTypeMovies": "Filmes", + "FolderTypeMusic": "M\u00fasica", + "FolderTypeAdultVideos": "V\u00eddeos adultos", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "V\u00eddeos musicais", + "FolderTypeHomeVideos": "V\u00eddeos caseiros", + "FolderTypeGames": "Jogos", + "FolderTypeBooks": "Livros", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Herdar", + "LabelContentType": "Tipo de conte\u00fado:", + "TitleScheduledTasks": "Tarefas Agendadas", + "HeaderSetupLibrary": "Configurar sua biblioteca de m\u00eddias", + "ButtonAddMediaFolder": "Adicionar pasta de m\u00eddias", + "LabelFolderType": "Tipo de pasta:", + "ReferToMediaLibraryWiki": "Consultar wiki da biblioteca de m\u00eddias", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "Limite de tempo (horas):", + "ButtonJoinTheDevelopmentTeam": "Junte-se ao Time de Desenvolvimento", + "HeaderPreferredMetadataLanguage": "Idioma preferido dos metadados:", + "LabelSaveLocalMetadata": "Salvar artwork e metadados dentro das pastas da m\u00eddia", + "LabelSaveLocalMetadataHelp": "Salvar artwork e metadados diretamente nas pastas da m\u00eddia as deixar\u00e1 em um local f\u00e1cil para edit\u00e1-las.", + "LabelDownloadInternetMetadata": "Fazer download das imagens e metadados da internet", + "LabelDownloadInternetMetadataHelp": "O Media Browser pode fazer download das informa\u00e7\u00f5es de sua m\u00eddia para melhorar a apresenta\u00e7\u00e3o.", + "TabPreferences": "Prefer\u00eancias", + "TabPassword": "Senha", + "TabLibraryAccess": "Acesso \u00e0 Biblioteca", + "TabAccess": "Acesso", + "TabImage": "Imagem", + "TabProfile": "Perfil", + "TabMetadata": "Metadados", + "TabImages": "Imagens", + "TabNotifications": "Notifica\u00e7\u00f5es", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Acesso ao Dispositivo", + "OptionEnableAccessFromAllDevices": "Ativar o acesso de todos os dispositivos", + "OptionEnableAccessToAllChannels": "Ativar o acesso a todos os canais", + "OptionEnableAccessToAllLibraries": "Ativar o acesso a todas as bibliotecas", + "DeviceAccessHelp": "Isto apenas aplica para dispositivos que podem ser identificados como \u00fanicos e n\u00e3o evitar\u00e3o o acesso do navegador. Filtrar o acesso ao dispositivo do usu\u00e1rio evitar\u00e1 que sejam usados novos dispositivos at\u00e9 que sejam aprovados aqui.", + "LabelDisplayMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios que faltam dentro das temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Exibir epis\u00f3dios por estrear dentro das temporadas", + "HeaderVideoPlaybackSettings": "Ajustes da Reprodu\u00e7\u00e3o de V\u00eddeo", + "HeaderPlaybackSettings": "Ajustes de Reprodu\u00e7\u00e3o", + "LabelAudioLanguagePreference": "Prefer\u00eancia do idioma do \u00e1udio:", + "LabelSubtitleLanguagePreference": "Prefer\u00eancia do idioma da legenda:", + "OptionDefaultSubtitles": "Padr\u00e3o", + "OptionOnlyForcedSubtitles": "Apenas legendas for\u00e7adas", + "OptionAlwaysPlaySubtitles": "Sempre reproduzir legendas", + "OptionNoSubtitles": "Nenhuma legenda", + "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver em um idioma estrangeiro.", + "OptionOnlyForcedSubtitlesHelp": "Apenas legendas marcadas como for\u00e7adas ser\u00e3o carregadas.", + "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", + "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", + "TabProfiles": "Perfis", + "TabSecurity": "Seguran\u00e7a", + "ButtonAddUser": "Adicionar Usu\u00e1rio", + "ButtonAddLocalUser": "Adicionar Usu\u00e1rio Local", + "ButtonInviteUser": "Convidar Usu\u00e1rio", + "ButtonSave": "Salvar", + "ButtonResetPassword": "Redefinir Senha", + "LabelNewPassword": "Nova senha:", + "LabelNewPasswordConfirm": "Confirmar nova senha:", + "HeaderCreatePassword": "Criar Senha", + "LabelCurrentPassword": "Senha atual:", + "LabelMaxParentalRating": "Classifica\u00e7\u00e3o parental m\u00e1xima permitida:", + "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o maior ser\u00e1 ocultado do usu\u00e1rio.", + "LibraryAccessHelp": "Selecione as pastas de m\u00eddia para compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todas as pastas usando o gerenciador de metadados.", + "ChannelAccessHelp": "Selecione os canais a compartilhar com este usu\u00e1rio. Administradores poder\u00e3o editar todos os canais usando o gerenciador de metadados.", + "ButtonDeleteImage": "Excluir Imagem", + "LabelSelectUsers": "Selecionar usu\u00e1rios:", + "ButtonUpload": "Carregar", + "HeaderUploadNewImage": "Carregar Nova Imagem", + "LabelDropImageHere": "Soltar imagem aqui", + "ImageUploadAspectRatioHelp": "Propor\u00e7\u00e3o de Imagem 1:1 Recomendada. Apenas JPG\/PNG", + "MessageNothingHere": "Nada aqui.", + "MessagePleaseEnsureInternetMetadata": "Por favor, certifique-se que o download de metadados da internet est\u00e1 habilitado.", + "TabSuggested": "Sugeridos", + "TabLatest": "Recentes", + "TabUpcoming": "Por Estrear", + "TabShows": "S\u00e9ries", + "TabEpisodes": "Epis\u00f3dios", + "TabGenres": "G\u00eaneros", + "TabPeople": "Pessoas", + "TabNetworks": "Redes", + "HeaderUsers": "Usu\u00e1rios", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Gostei", + "OptionDislikes": "N\u00e3o Gostei", + "OptionActors": "Atores", + "OptionGuestStars": "Convidados Especiais", + "OptionDirectors": "Diretores", + "OptionWriters": "Escritores", + "OptionProducers": "Produtores", + "HeaderResume": "Retomar", + "HeaderNextUp": "Pr\u00f3ximo", + "NoNextUpItemsMessage": "Nenhum encontrado. Comece assistindo suas s\u00e9ries!", + "HeaderLatestEpisodes": "Epis\u00f3dios Recentes", + "HeaderPersonTypes": "Tipos de Pessoa:", + "TabSongs": "M\u00fasicas", + "TabAlbums": "\u00c1lbuns", + "TabArtists": "Artistas", + "TabAlbumArtists": "Artistas do \u00c1lbum", + "TabMusicVideos": "V\u00eddeos Musicais", + "ButtonSort": "Ordenar", + "HeaderSortBy": "Ordenar Por:", + "HeaderSortOrder": "Forma para Ordenar:", + "OptionPlayed": "Reproduzido", + "OptionUnplayed": "N\u00e3o-reproduzido", + "OptionAscending": "Crescente", + "OptionDescending": "Decrescente", + "OptionRuntime": "Dura\u00e7\u00e3o", + "OptionReleaseDate": "Data de Lan\u00e7amento", + "OptionPlayCount": "N\u00famero Reprodu\u00e7\u00f5es", + "OptionDatePlayed": "Data da Reprodu\u00e7\u00e3o", + "OptionDateAdded": "Data da Adi\u00e7\u00e3o", + "OptionAlbumArtist": "Artista do \u00c1lbum", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nome da Faixa", + "OptionCommunityRating": "Avalia\u00e7\u00e3o da Comunidade", + "OptionNameSort": "Nome", + "OptionFolderSort": "Pastas", + "OptionBudget": "Or\u00e7amento", + "OptionRevenue": "Faturamento", + "OptionPoster": "Capa", + "OptionPosterCard": "Cart\u00e3o da capa", + "OptionBackdrop": "Imagem de Fundo", + "OptionTimeline": "Linha do tempo", + "OptionThumb": "\u00cdcone", + "OptionThumbCard": "Cart\u00e3o do \u00edcone", + "OptionBanner": "Banner", + "OptionCriticRating": "Avalia\u00e7\u00e3o da Cr\u00edtica", + "OptionVideoBitrate": "Taxa do V\u00eddeo", + "OptionResumable": "Por retomar", + "ScheduledTasksHelp": "Clique em uma tarefa para ajustar quando ser\u00e1 executada.", + "ScheduledTasksTitle": "Tarefas Agendadas", + "TabMyPlugins": "Meus Plugins", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es Autom\u00e1ticas", + "HeaderNowPlaying": "Reproduzindo Agora", + "HeaderLatestAlbums": "\u00c1lbuns Recentes", + "HeaderLatestSongs": "M\u00fasicas Recentes", + "HeaderRecentlyPlayed": "Reprodu\u00e7\u00f5es Recentes", + "HeaderFrequentlyPlayed": "Reprodu\u00e7\u00f5es Frequentes", + "DevBuildWarning": "Vers\u00f5es Dev s\u00e3o as mais atuais. Lan\u00e7adas frequentemente, estas vers\u00f5es n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode falhar e v\u00e1rios recursos podem n\u00e3o funcionar.", + "LabelVideoType": "Tipo de V\u00eddeo:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Recursos:", + "LabelService": "Servi\u00e7o:", + "LabelStatus": "Status:", + "LabelVersion": "Vers\u00e3o:", + "LabelLastResult": "\u00daltimo resultado:", + "OptionHasSubtitles": "Legendas", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "M\u00fasica-Tema", + "OptionHasThemeVideo": "V\u00eddeo-Tema", + "TabMovies": "Filmes", + "TabStudios": "Est\u00fadios", + "TabTrailers": "Trailers", + "LabelArtists": "Artistas:", + "LabelArtistsHelp": "Separar m\u00faltiplos usando ;", + "HeaderLatestMovies": "Filmes Recentes", + "HeaderLatestTrailers": "Trailers Recentes", + "OptionHasSpecialFeatures": "Recursos Especiais", + "OptionImdbRating": "Avalia\u00e7\u00e3o IMDb", + "OptionParentalRating": "Classifica\u00e7\u00e3o Parental", + "OptionPremiereDate": "Data da Estr\u00e9ia", + "TabBasic": "B\u00e1sico", + "TabAdvanced": "Avan\u00e7ado", + "HeaderStatus": "Status", + "OptionContinuing": "Em Exibi\u00e7\u00e3o", + "OptionEnded": "Finalizada", + "HeaderAirDays": "Dias da Exibi\u00e7\u00e3o", + "OptionSunday": "Domingo", + "OptionMonday": "Segunda-feira", + "OptionTuesday": "Ter\u00e7a-feira", + "OptionWednesday": "Quarta-feira", + "OptionThursday": "Quinta-feira", + "OptionFriday": "Sexta-feira", + "OptionSaturday": "S\u00e1bado", + "HeaderManagement": "Gerenciamento", + "LabelManagement": "Administra\u00e7\u00e3o:", + "OptionMissingImdbId": "Faltando Id IMDb", + "OptionMissingTvdbId": "Faltando Id TheTVDB", + "OptionMissingOverview": "Faltando Sinopse", + "OptionFileMetadataYearMismatch": "Anos do Arquivo e Metadados n\u00e3o conferem", + "TabGeneral": "Geral", + "TitleSupport": "Suporte", + "TabLog": "Log", + "TabAbout": "Sobre", + "TabSupporterKey": "Chave de Colaborador", + "TabBecomeSupporter": "Torne-se um Colaborador", + "MediaBrowserHasCommunity": "Media Browser tem uma comunidade que cresce em usu\u00e1rios e colaboradores.", + "CheckoutKnowledgeBase": "Verifique nossa base de conhecimento para ajud\u00e1-lo a obter o m\u00e1ximo do Media Browser.", + "SearchKnowledgeBase": "Pesquisar na Base de Conhecimento", + "VisitTheCommunity": "Visitar a Comunidade", + "VisitMediaBrowserWebsite": "Visitar o Web Site do Media Browser", + "VisitMediaBrowserWebsiteLong": "Visite o Web Site do Media Browser para obter as \u00faltimas novidades e atualizar-se com o blog de desenvolvedores.", + "OptionHideUser": "Ocultar este usu\u00e1rio das telas de login", + "OptionHideUserFromLoginHelp": "\u00datil para contas de administrador privadas ou ocultas. O usu\u00e1rio necessitar\u00e1 entrar manualmente, digitando seu nome de usu\u00e1rio e senha.", + "OptionDisableUser": "Desativar este usu\u00e1rio", + "OptionDisableUserHelp": "Se estiver desativado o servidor n\u00e3o permitir\u00e1 nenhuma conex\u00e3o deste usu\u00e1rio. Conex\u00f5es existentes ser\u00e3o abruptamente terminadas.", + "HeaderAdvancedControl": "Controle Avan\u00e7ado", + "LabelName": "Nome:", + "ButtonHelp": "Ajuda", + "OptionAllowUserToManageServer": "Permitir a este usu\u00e1rio administrar o servidor", + "HeaderFeatureAccess": "Acesso aos Recursos", + "OptionAllowMediaPlayback": "Permitir reprodu\u00e7\u00e3o de m\u00eddia", + "OptionAllowBrowsingLiveTv": "Permitir acesso \u00e0 TV ao Vivo", + "OptionAllowDeleteLibraryContent": "Permitir exclus\u00e3o de m\u00eddia", + "OptionAllowManageLiveTv": "Permitir gerenciamento de grava\u00e7\u00f5es da TV ao Vivo", + "OptionAllowRemoteControlOthers": "Permitir controle remoto de outros usu\u00e1rios", + "OptionAllowRemoteSharedDevices": "Permitir controle remoto de dispositivos compartilhados", + "OptionAllowRemoteSharedDevicesHelp": "Dispositivos dlna s\u00e3o considerados compartilhados at\u00e9 que um usu\u00e1rio comece a control\u00e1-lo.", + "HeaderRemoteControl": "Controle Remoto", + "OptionMissingTmdbId": "Faltando Id Tmdb", + "OptionIsHD": "HD", + "OptionIsSD": "SD", + "OptionMetascore": "Metascore", + "ButtonSelect": "Selecionar", + "ButtonGroupVersions": "Agrupar Vers\u00f5es", + "ButtonAddToCollection": "Adicionar \u00e0 Cole\u00e7\u00e3o", + "PismoMessage": "Utilizando Pismo File Mount atrav\u00e9s de uma licen\u00e7a de doa\u00e7\u00e3o", + "TangibleSoftwareMessage": "Utilizando conversores Java\/C# da Tangible Solutions atrav\u00e9s de uma licen\u00e7a de doa\u00e7\u00e3o.", + "HeaderCredits": "Cr\u00e9ditos", + "PleaseSupportOtherProduces": "Por favor, apoie outros produtos gr\u00e1tis que utilizamos:", + "VersionNumber": "Vers\u00e3o {0}", + "TabPaths": "Caminhos", + "TabServer": "Servidor", + "TabTranscoding": "Transcodifica\u00e7\u00e3o", + "TitleAdvanced": "Avan\u00e7ado", + "LabelAutomaticUpdateLevel": "N\u00edvel de atualiza\u00e7\u00e3o autom\u00e1tica", + "OptionRelease": "Lan\u00e7amento Oficial", + "OptionBeta": "Beta", + "OptionDev": "Dev (Inst\u00e1vel)", + "LabelAllowServerAutoRestart": "Permitir ao servidor reiniciar automaticamente para aplicar as atualiza\u00e7\u00f5es", + "LabelAllowServerAutoRestartHelp": "O servidor s\u00f3 reiniciar\u00e1 durante os per\u00edodos ociosos, quando nenhum usu\u00e1rio estiver ativo.", + "LabelEnableDebugLogging": "Ativar log de depura\u00e7\u00e3o", + "LabelRunServerAtStartup": "Executar servidor na inicializa\u00e7\u00e3o", + "LabelRunServerAtStartupHelp": "Esta op\u00e7\u00e3o abrir\u00e1 o \u00edcone da bandeja de sistema na inicializa\u00e7\u00e3o do windows. Para iniciar o servi\u00e7o do windows, desmarque esta op\u00e7\u00e3o e inicie o servi\u00e7o no painel de controle do windows. Por favor, saiba que voc\u00ea n\u00e3o pode executar os dois ao mesmo tempo, ent\u00e3o ser\u00e1 necess\u00e1rio sair do \u00edcone na bandeja antes de iniciar o servi\u00e7o.", + "ButtonSelectDirectory": "Selecionar Diret\u00f3rio", + "LabelCustomPaths": "Defina caminhos personalizados. Deixe os campos em branco para usar o padr\u00e3o.", + "LabelCachePath": "Caminho do cache:" } \ 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 e455ddd05..1d1053cb1 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json @@ -1,239 +1,4 @@ { - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Padr\u00e3o", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Navegar pela Biblioteca", - "LabelConfigureMediaBrowser": "Configurar o Media Browser", - "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", - "LabelRestartServer": "Reiniciar Servidor", - "LabelShowLogWindow": "Mostrar Janela de Log", - "LabelPrevious": "Anterior", - "LabelFinish": "Terminar", - "LabelNext": "Seguinte", - "LabelYoureDone": "Concluiu!", - "WelcomeToMediaBrowser": "Bem-vindo ao Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Este assistente ir\u00e1 ajud\u00e1-lo durante o processo de configura\u00e7\u00e3o. Para come\u00e7ar, selecione o idioma.", - "TellUsAboutYourself": "Fale-nos sobre si", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "O seu primeiro nome:", - "MoreUsersCanBeAddedLater": "\u00c9 poss\u00edvel adicionar utilizadores mais tarde no Painel Principal", - "UserProfilesIntro": "O Media Browser inclui suporte a perfis de utilizadores, permitindo a cada utilizador ter as suas pr\u00f3prias configura\u00e7\u00f5es da visualiza\u00e7\u00e3o, estado das reprodu\u00e7\u00f5es e controlo parental.", - "LabelWindowsService": "Servi\u00e7o do Windows", - "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", - "WindowsServiceIntro1": "O Media Browser Server corre, normalmente, como uma aplica\u00e7\u00e3o de Ambiente de trabalho com um \u00edcone na bandeja, mas se preferir corr\u00ea-lo como um servi\u00e7o em segundo plano, pode ser iniciado atrav\u00e9s do Painel de Controlo dos Servi\u00e7os do Windows.", - "WindowsServiceIntro2": "Por favor tome aten\u00e7\u00e3o que se estiver a usar o servi\u00e7o, este n\u00e3o pode estar a correr ao mesmo tempo que o \u00edcone na bandeja. Por isso, ter\u00e1 de sair da aplca\u00e7\u00e3o da bandeja para poder correr o servi\u00e7o. Note, ainda, que o servi\u00e7o necessita de privil\u00e9gios administrativos via Painel de Controlo. De momento, n\u00e3o \u00e9 poss\u00edvel utilizar a fun\u00e7\u00e3o de auto-actualiza\u00e7\u00e3o ao mesmo tempo que est\u00e1 em utiliza\u00e7\u00e3o o servi\u00e7o, por isso, novas vers\u00f5es necessitam de interac\u00e7\u00e3o manual.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configura\u00e7\u00f5es", - "LabelEnableVideoImageExtraction": "Activar extrac\u00e7\u00e3o de imagens dos v\u00eddeos.", - "VideoImageExtractionHelp": "Para os v\u00eddeos ainda sem imagens e que n\u00e3o se encontram imagens na internet. Esta funcionalidade vai acrescentar mais algum tempo na leitura inicial da biblioteca, mas resultar\u00e1 numa apresenta\u00e7\u00e3o melhorada,", - "LabelEnableChapterImageExtractionForMovies": "Extrair imagens dos cap\u00edtulos dos Filmes", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Activar mapeamento autom\u00e1tico de portas", - "LabelEnableAutomaticPortMappingHelp": "UPnP permite configurar automaticamente o router, para um acesso remoto mais facilitado. Pode n\u00e3o suportar todos os modelos de routers.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Caminho da fonte do cliente web:", - "LabelDashboardSourcePathHelp": "Se correr o servidor a partir do c\u00f3digo fonte, especifique o caminho da pasta dashboard-ui. Todos os ficheiros do cliente web ser\u00e3o usados a partir desta localiza\u00e7\u00e3o.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancelar", - "ButtonExit": "Exit", - "ButtonNew": "Novo", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Configurar biblioteca", - "ButtonAddMediaFolder": "Adicionar pasta de media", - "LabelFolderType": "Tipo de pasta", - "ReferToMediaLibraryWiki": "Consulte a wiki", - "LabelCountry": "Pa\u00eds:", - "LabelLanguage": "Idioma:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Idioma preferido para metadados", - "LabelSaveLocalMetadata": "Guardar imagens e metadados nas pastas multim\u00e9dia", - "LabelSaveLocalMetadataHelp": "Guardar imagens e metadados diretamente nas pastas multim\u00e9dia, vai coloc\u00e1-los num local de f\u00e1cil acesso para poderem ser editados facilmente.", - "LabelDownloadInternetMetadata": "Transferir imagens e metadados da Internet", - "LabelDownloadInternetMetadataHelp": "O Media Browser pode transferir informa\u00e7\u00f5es sobre os seus conte\u00fados multim\u00e9dia para possibilitar apresenta\u00e7\u00f5es mais ricas.", - "TabPreferences": "Prefer\u00eancias", - "TabPassword": "Senha", - "TabLibraryAccess": "Aceder \u00e0 Biblioteca", - "TabAccess": "Access", - "TabImage": "Imagem", - "TabProfile": "Perfil", - "TabMetadata": "Metadados", - "TabImages": "Imagens", - "TabNotifications": "Notifica\u00e7\u00f5es", - "TabCollectionTitles": "T\u00edtulos", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar epis\u00f3dios em falta dentro das temporadas", - "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar epis\u00f3dios por estrear dentro das temporadas", - "HeaderVideoPlaybackSettings": "Configura\u00e7\u00f5es de Reprodu\u00e7\u00e3o de V\u00eddeo", - "HeaderPlaybackSettings": "Op\u00e7\u00f5es de Reprodu\u00e7\u00e3o", - "LabelAudioLanguagePreference": "Prefer\u00eancias de Idioma de Audio:", - "LabelSubtitleLanguagePreference": "Prefer\u00eancia de Idioma de Legenda:", - "OptionDefaultSubtitles": "Padr\u00e3o", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Reproduzir sempre legendas", - "OptionNoSubtitles": "Sem legendas", - "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver num idioma estrangeiro.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", - "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", - "TabProfiles": "Perfis", - "TabSecurity": "Seguran\u00e7a", - "ButtonAddUser": "Adicionar Utilizador", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Guardar", - "ButtonResetPassword": "Redefinir Senha", - "LabelNewPassword": "Nova senha:", - "LabelNewPasswordConfirm": "Confirmar nova senha:", - "HeaderCreatePassword": "Criar Senha", - "LabelCurrentPassword": "Senha actual:", - "LabelMaxParentalRating": "Controlo Parental m\u00e1ximo permitido:", - "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o mais elevada ser\u00e1 escondida deste utilizador.", - "LibraryAccessHelp": "Escolha as pastas de media a partilha com este utilizador. Os Administradores poder\u00e3o editar todas as pastas, usando o Gestor de Metadados.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Apagar imagem", - "LabelSelectUsers": "Selecionar utilizadores:", - "ButtonUpload": "Carregar", - "HeaderUploadNewImage": "Carregar Nova Imagem", - "LabelDropImageHere": "Largar a imagem aqui", - "ImageUploadAspectRatioHelp": "1:1 R\u00e1cio de aspecto recomendado. JPG\/ PNG apenas.", - "MessageNothingHere": "Nada aqui.", - "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transfer\u00eancia de metadados da internet est\u00e1 activa.", - "TabSuggested": "Sugest\u00f5es", - "TabLatest": "Mais recente", - "TabUpcoming": "Pr\u00f3ximos", - "TabShows": "S\u00e9ries", - "TabEpisodes": "Epis\u00f3dios", - "TabGenres": "G\u00e9neros Art\u00edsticos", - "TabPeople": "Pessoas", - "TabNetworks": "Redes", - "HeaderUsers": "Utilizadores", - "HeaderFilters": "Filtros:", - "ButtonFilter": "Filtro", - "OptionFavorite": "Favoritos", - "OptionLikes": "Gostos", - "OptionDislikes": "N\u00e3o gostos", - "OptionActors": "Actores", - "OptionGuestStars": "Actores convidados", - "OptionDirectors": "Realizadores", - "OptionWriters": "Argumentistas", - "OptionProducers": "Produtores", - "HeaderResume": "Resumir", - "HeaderNextUp": "A Seguir", - "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", - "HeaderLatestEpisodes": "\u00daltimos Epis\u00f3dios", - "HeaderPersonTypes": "Tipos de Pessoa:", - "TabSongs": "M\u00fasicas", - "TabAlbums": "\u00c1lbuns", - "TabArtists": "Artistas", - "TabAlbumArtists": "Artistas do \u00c1lbum", - "TabMusicVideos": "Videos Musicais", - "ButtonSort": "Organizar", - "HeaderSortBy": "Organizar por:", - "HeaderSortOrder": "Ordem de organiza\u00e7\u00e3o:", - "OptionPlayed": "Reproduzido", - "OptionUnplayed": "Por reproduzir", - "OptionAscending": "Ascendente", - "OptionDescending": "Descendente", - "OptionRuntime": "Dura\u00e7\u00e3o", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "N.\u00ba Visualiza\u00e7\u00f5es", - "OptionDatePlayed": "Data de reprodu\u00e7\u00e3o", - "OptionDateAdded": "Data de adi\u00e7\u00e3o", - "OptionAlbumArtist": "Artista do \u00c1lbum", - "OptionArtist": "Artista", - "OptionAlbum": "\u00c1lbum", - "OptionTrackName": "Nome da pista", - "OptionCommunityRating": "Classifica\u00e7\u00e3o da Comunidade", - "OptionNameSort": "Nome", - "OptionFolderSort": "Pastas", - "OptionBudget": "Or\u00e7amento", - "OptionRevenue": "Receita", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Imagem de fundo", - "OptionTimeline": "Linha de tempo", - "OptionThumb": "Miniatura", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Classifica\u00e7\u00e3o dos cr\u00edticos", - "OptionVideoBitrate": "Qualidade do v\u00eddeo", - "OptionResumable": "Retom\u00e1vel", - "ScheduledTasksHelp": "Clique numa tarefa para configurar o seu agendamento.", - "ScheduledTasksTitle": "Tarefas Agendadas", - "TabMyPlugins": "As minhas extens\u00f5es", - "TabCatalog": "Cat\u00e1logo", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es autom\u00e1ticas", - "HeaderNowPlaying": "A reproduzir", - "HeaderLatestAlbums": "\u00daltimos \u00c1lbuns", - "HeaderLatestSongs": "\u00daltimas m\u00fasicas", - "HeaderRecentlyPlayed": "Reproduzido recentemente", - "HeaderFrequentlyPlayed": "Reproduzido frequentemente", - "DevBuildWarning": "As vers\u00f5es Dev s\u00e3o a tecnologia de ponta. S\u00e3o lan\u00e7adas frequentemente e n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode bloquear e n\u00e3o funcionar de todo.", "LabelVideoType": "Tipo de V\u00eddeo:", "OptionBluray": "Bluray", "OptionDvd": "DVD", @@ -917,6 +682,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +925,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1138,252 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Sair", + "LabelVisitCommunity": "Visitar a Comunidade", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Padr\u00e3o", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Navegar pela Biblioteca", + "LabelConfigureMediaBrowser": "Configurar o Media Browser", + "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", + "LabelRestartServer": "Reiniciar Servidor", + "LabelShowLogWindow": "Mostrar Janela de Log", + "LabelPrevious": "Anterior", + "LabelFinish": "Terminar", + "LabelNext": "Seguinte", + "LabelYoureDone": "Concluiu!", + "WelcomeToMediaBrowser": "Bem-vindo ao Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Este assistente ir\u00e1 ajud\u00e1-lo durante o processo de configura\u00e7\u00e3o. Para come\u00e7ar, selecione o idioma.", + "TellUsAboutYourself": "Fale-nos sobre si", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "O seu primeiro nome:", + "MoreUsersCanBeAddedLater": "\u00c9 poss\u00edvel adicionar utilizadores mais tarde no Painel Principal", + "UserProfilesIntro": "O Media Browser inclui suporte a perfis de utilizadores, permitindo a cada utilizador ter as suas pr\u00f3prias configura\u00e7\u00f5es da visualiza\u00e7\u00e3o, estado das reprodu\u00e7\u00f5es e controlo parental.", + "LabelWindowsService": "Servi\u00e7o do Windows", + "AWindowsServiceHasBeenInstalled": "Foi instalado um Servi\u00e7o do Windows.", + "WindowsServiceIntro1": "O Media Browser Server corre, normalmente, como uma aplica\u00e7\u00e3o de Ambiente de trabalho com um \u00edcone na bandeja, mas se preferir corr\u00ea-lo como um servi\u00e7o em segundo plano, pode ser iniciado atrav\u00e9s do Painel de Controlo dos Servi\u00e7os do Windows.", + "WindowsServiceIntro2": "Por favor tome aten\u00e7\u00e3o que se estiver a usar o servi\u00e7o, este n\u00e3o pode estar a correr ao mesmo tempo que o \u00edcone na bandeja. Por isso, ter\u00e1 de sair da aplca\u00e7\u00e3o da bandeja para poder correr o servi\u00e7o. Note, ainda, que o servi\u00e7o necessita de privil\u00e9gios administrativos via Painel de Controlo. De momento, n\u00e3o \u00e9 poss\u00edvel utilizar a fun\u00e7\u00e3o de auto-actualiza\u00e7\u00e3o ao mesmo tempo que est\u00e1 em utiliza\u00e7\u00e3o o servi\u00e7o, por isso, novas vers\u00f5es necessitam de interac\u00e7\u00e3o manual.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configura\u00e7\u00f5es", + "LabelEnableVideoImageExtraction": "Activar extrac\u00e7\u00e3o de imagens dos v\u00eddeos.", + "VideoImageExtractionHelp": "Para os v\u00eddeos ainda sem imagens e que n\u00e3o se encontram imagens na internet. Esta funcionalidade vai acrescentar mais algum tempo na leitura inicial da biblioteca, mas resultar\u00e1 numa apresenta\u00e7\u00e3o melhorada,", + "LabelEnableChapterImageExtractionForMovies": "Extrair imagens dos cap\u00edtulos dos Filmes", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Activar mapeamento autom\u00e1tico de portas", + "LabelEnableAutomaticPortMappingHelp": "UPnP permite configurar automaticamente o router, para um acesso remoto mais facilitado. Pode n\u00e3o suportar todos os modelos de routers.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Caminho da fonte do cliente web:", + "LabelDashboardSourcePathHelp": "Se correr o servidor a partir do c\u00f3digo fonte, especifique o caminho da pasta dashboard-ui. Todos os ficheiros do cliente web ser\u00e3o usados a partir desta localiza\u00e7\u00e3o.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancelar", + "ButtonExit": "Exit", + "ButtonNew": "Novo", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Configurar biblioteca", + "ButtonAddMediaFolder": "Adicionar pasta de media", + "LabelFolderType": "Tipo de pasta", + "ReferToMediaLibraryWiki": "Consulte a wiki", + "LabelCountry": "Pa\u00eds:", + "LabelLanguage": "Idioma:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Idioma preferido para metadados", + "LabelSaveLocalMetadata": "Guardar imagens e metadados nas pastas multim\u00e9dia", + "LabelSaveLocalMetadataHelp": "Guardar imagens e metadados diretamente nas pastas multim\u00e9dia, vai coloc\u00e1-los num local de f\u00e1cil acesso para poderem ser editados facilmente.", + "LabelDownloadInternetMetadata": "Transferir imagens e metadados da Internet", + "LabelDownloadInternetMetadataHelp": "O Media Browser pode transferir informa\u00e7\u00f5es sobre os seus conte\u00fados multim\u00e9dia para possibilitar apresenta\u00e7\u00f5es mais ricas.", + "TabPreferences": "Prefer\u00eancias", + "TabPassword": "Senha", + "TabLibraryAccess": "Aceder \u00e0 Biblioteca", + "TabAccess": "Access", + "TabImage": "Imagem", + "TabProfile": "Perfil", + "TabMetadata": "Metadados", + "TabImages": "Imagens", + "TabNotifications": "Notifica\u00e7\u00f5es", + "TabCollectionTitles": "T\u00edtulos", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Mostrar epis\u00f3dios em falta dentro das temporadas", + "LabelUnairedMissingEpisodesWithinSeasons": "Mostrar epis\u00f3dios por estrear dentro das temporadas", + "HeaderVideoPlaybackSettings": "Configura\u00e7\u00f5es de Reprodu\u00e7\u00e3o de V\u00eddeo", + "HeaderPlaybackSettings": "Op\u00e7\u00f5es de Reprodu\u00e7\u00e3o", + "LabelAudioLanguagePreference": "Prefer\u00eancias de Idioma de Audio:", + "LabelSubtitleLanguagePreference": "Prefer\u00eancia de Idioma de Legenda:", + "OptionDefaultSubtitles": "Padr\u00e3o", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Reproduzir sempre legendas", + "OptionNoSubtitles": "Sem legendas", + "OptionDefaultSubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas quando o \u00e1udio estiver num idioma estrangeiro.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "As legendas que forem iguais ao idioma preferido ser\u00e3o carregadas independente do idioma do \u00e1udio.", + "OptionNoSubtitlesHelp": "As legendas n\u00e3o ser\u00e3o carregadas por padr\u00e3o.", + "TabProfiles": "Perfis", + "TabSecurity": "Seguran\u00e7a", + "ButtonAddUser": "Adicionar Utilizador", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Guardar", + "ButtonResetPassword": "Redefinir Senha", + "LabelNewPassword": "Nova senha:", + "LabelNewPasswordConfirm": "Confirmar nova senha:", + "HeaderCreatePassword": "Criar Senha", + "LabelCurrentPassword": "Senha actual:", + "LabelMaxParentalRating": "Controlo Parental m\u00e1ximo permitido:", + "MaxParentalRatingHelp": "Conte\u00fado com classifica\u00e7\u00e3o mais elevada ser\u00e1 escondida deste utilizador.", + "LibraryAccessHelp": "Escolha as pastas de media a partilha com este utilizador. Os Administradores poder\u00e3o editar todas as pastas, usando o Gestor de Metadados.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Apagar imagem", + "LabelSelectUsers": "Selecionar utilizadores:", + "ButtonUpload": "Carregar", + "HeaderUploadNewImage": "Carregar Nova Imagem", + "LabelDropImageHere": "Largar a imagem aqui", + "ImageUploadAspectRatioHelp": "1:1 R\u00e1cio de aspecto recomendado. JPG\/ PNG apenas.", + "MessageNothingHere": "Nada aqui.", + "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transfer\u00eancia de metadados da internet est\u00e1 activa.", + "TabSuggested": "Sugest\u00f5es", + "TabLatest": "Mais recente", + "TabUpcoming": "Pr\u00f3ximos", + "TabShows": "S\u00e9ries", + "TabEpisodes": "Epis\u00f3dios", + "TabGenres": "G\u00e9neros Art\u00edsticos", + "TabPeople": "Pessoas", + "TabNetworks": "Redes", + "HeaderUsers": "Utilizadores", + "HeaderFilters": "Filtros:", + "ButtonFilter": "Filtro", + "OptionFavorite": "Favoritos", + "OptionLikes": "Gostos", + "OptionDislikes": "N\u00e3o gostos", + "OptionActors": "Actores", + "OptionGuestStars": "Actores convidados", + "OptionDirectors": "Realizadores", + "OptionWriters": "Argumentistas", + "OptionProducers": "Produtores", + "HeaderResume": "Resumir", + "HeaderNextUp": "A Seguir", + "NoNextUpItemsMessage": "Nenhum encontrado. Comece a ver os seus programas!", + "HeaderLatestEpisodes": "\u00daltimos Epis\u00f3dios", + "HeaderPersonTypes": "Tipos de Pessoa:", + "TabSongs": "M\u00fasicas", + "TabAlbums": "\u00c1lbuns", + "TabArtists": "Artistas", + "TabAlbumArtists": "Artistas do \u00c1lbum", + "TabMusicVideos": "Videos Musicais", + "ButtonSort": "Organizar", + "HeaderSortBy": "Organizar por:", + "HeaderSortOrder": "Ordem de organiza\u00e7\u00e3o:", + "OptionPlayed": "Reproduzido", + "OptionUnplayed": "Por reproduzir", + "OptionAscending": "Ascendente", + "OptionDescending": "Descendente", + "OptionRuntime": "Dura\u00e7\u00e3o", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "N.\u00ba Visualiza\u00e7\u00f5es", + "OptionDatePlayed": "Data de reprodu\u00e7\u00e3o", + "OptionDateAdded": "Data de adi\u00e7\u00e3o", + "OptionAlbumArtist": "Artista do \u00c1lbum", + "OptionArtist": "Artista", + "OptionAlbum": "\u00c1lbum", + "OptionTrackName": "Nome da pista", + "OptionCommunityRating": "Classifica\u00e7\u00e3o da Comunidade", + "OptionNameSort": "Nome", + "OptionFolderSort": "Pastas", + "OptionBudget": "Or\u00e7amento", + "OptionRevenue": "Receita", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Imagem de fundo", + "OptionTimeline": "Linha de tempo", + "OptionThumb": "Miniatura", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Classifica\u00e7\u00e3o dos cr\u00edticos", + "OptionVideoBitrate": "Qualidade do v\u00eddeo", + "OptionResumable": "Retom\u00e1vel", + "ScheduledTasksHelp": "Clique numa tarefa para configurar o seu agendamento.", + "ScheduledTasksTitle": "Tarefas Agendadas", + "TabMyPlugins": "As minhas extens\u00f5es", + "TabCatalog": "Cat\u00e1logo", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Atualiza\u00e7\u00f5es autom\u00e1ticas", + "HeaderNowPlaying": "A reproduzir", + "HeaderLatestAlbums": "\u00daltimos \u00c1lbuns", + "HeaderLatestSongs": "\u00daltimas m\u00fasicas", + "HeaderRecentlyPlayed": "Reproduzido recentemente", + "HeaderFrequentlyPlayed": "Reproduzido frequentemente", + "DevBuildWarning": "As vers\u00f5es Dev s\u00e3o a tecnologia de ponta. S\u00e3o lan\u00e7adas frequentemente e n\u00e3o foram testadas. A aplica\u00e7\u00e3o pode bloquear e n\u00e3o funcionar de todo." } \ 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 758733e77..9ca23e256 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -1,247 +1,4 @@ { - "LabelExit": "\u0412\u044b\u0445\u043e\u0434", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", - "LabelGithub": "GitHub", - "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger", - "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442", - "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "LabelBrowseLibrary": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "LabelConfigureMediaBrowser": "\u041d\u0430\u0441\u0442\u0440o\u0439\u043a\u0430 Media Browser", - "LabelOpenLibraryViewer": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", - "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u043e\u043a\u043d\u0435", - "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", - "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", - "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", - "LabelYoureDone": "\u0412\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438!", - "WelcomeToMediaBrowser": "\u0412\u0430\u0441 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0444\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a.", - "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e \u0441\u0435\u0431\u0435", - "ButtonQuickStartGuide": "\u041a \u043a\u0440\u0430\u0442\u043a\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443", - "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f:", - "MoreUsersCanBeAddedLater": "\u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u00ab\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c\u00bb.", - "UserProfilesIntro": "\u0412 Media Browser \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c.", - "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows", - "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", - "WindowsServiceIntro1": "\u041e\u0431\u044b\u0447\u043d\u043e Media Browser Server \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 Windows.", - "WindowsServiceIntro2": "\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b Windows, \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0432 \u043b\u043e\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.", - "WizardCompleted": "\u042d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441. Media Browser \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0430\u0448\u0435\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>.", - "LabelConfigureSettings": "\u041d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", - "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e", - "VideoImageExtractionHelp": "\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u0435\u0449\u0451 \u200b\u200b\u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0435\u0449\u0451 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438.", - "LabelEnableChapterImageExtractionForMovies": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", - "LabelChapterImageExtractionForMoviesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", - "LabelEnableAutomaticPortMapping": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", - "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.", - "HeaderTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 Media Browser", - "MessagePleaseAcceptTermsOfService": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 \u0438 \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.", - "OptionIAcceptTermsOfService": "\u042f \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u044e\u0441\u044c \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", - "ButtonPrivacyPolicy": "\u041a \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438", - "ButtonTermsOfService": "\u041a \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", - "HeaderDeveloperOptions": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "OptionEnableWebClientResponseCache": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "OptionDisableForDevelopmentHelp": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0435, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432 \u0446\u0435\u043b\u044f\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430.", - "OptionEnableWebClientResourceMinification": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", - "LabelDashboardSourcePath": "\u041f\u0443\u0442\u044c \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430:", - "LabelDashboardSourcePathHelp": "\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 dashboard-ui. \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f.", - "ButtonConvertMedia": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", - "ButtonOrganize": "\u0420\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c", - "LabelPinCode": "PIN-\u043a\u043e\u0434:", - "ButtonOk": "\u041e\u041a", - "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", - "ButtonExit": "\u0412\u044b\u0439\u0442\u0438", - "ButtonNew": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", - "HeaderTV": "\u0422\u0412", - "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderPaths": "\u041f\u0443\u0442\u0438", - "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "HeaderEasyPinCode": "\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", - "HeaderGrownupsOnly": "\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0435!", - "DividerOr": "-- \u0438\u043b\u0438 --", - "HeaderInstalledServices": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b", - "HeaderAvailableServices": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b", - "MessageNoServicesInstalled": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0436\u0431 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", - "HeaderToAccessPleaseEnterEasyPinCode": "\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", - "KidsModeAdultInstruction": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u043a\u0443 \u0437\u0430\u043c\u043a\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u0432\u043d\u0438\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0434\u0435\u0442\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448 PIN-\u043a\u043e\u0434.", - "ButtonConfigurePinCode": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c PIN-\u043a\u043e\u0434", - "HeaderAdultsReadHere": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0437\u0434\u0435\u0441\u044c!", - "RegisterWithPayPal": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", - "HeaderSyncRequiresSupporterMembership": "\u0414\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", - "HeaderEnjoyDayTrial": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c 14-\u0434\u043d\u0435\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c", - "LabelSyncTempPath": "\u041f\u0443\u0442\u044c \u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443:", - "LabelSyncTempPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c.", - "LabelCustomCertificatePath": "\u041f\u0443\u0442\u044c \u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443:", - "LabelCustomCertificatePathHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b .pfx SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d \u043e\u043f\u0443\u0449\u0435\u043d, \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", - "TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", - "ButtonDonateWithPayPal": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", - "OptionDetectArchiveFilesAsMedia": "\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", - "OptionDetectArchiveFilesAsMediaHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 .RAR \u0438 .ZIP \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b.", - "LabelEnterConnectUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u042d-\u043f\u043e\u0447\u0442\u0430", - "LabelEnterConnectUserNameHelp": "\u042d\u0442\u043e - \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Media Browser.", - "LabelEnableEnhancedMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", - "LabelEnableEnhancedMoviesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0438\u043b\u044c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0441\u044a\u0451\u043c\u043e\u043a \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0435\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435.", - "HeaderSyncJobInfo": "\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", - "FolderTypeMixed": "\u0420\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", - "FolderTypeMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", - "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", - "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", - "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", - "FolderTypeGames": "\u0418\u0433\u0440\u044b", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "\u0422\u0412", - "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435", - "LabelContentType": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:", - "TitleScheduledTasks": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", - "HeaderSetupLibrary": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", - "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443", - "LabelFolderType": "\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:", - "ReferToMediaLibraryWiki": "\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.", - "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", - "LabelLanguage": "\u042f\u0437\u044b\u043a:", - "LabelTimeLimitHours": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0447\u0430\u0441\u044b):", - "ButtonJoinTheDevelopmentTeam": "\u0412\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445:", - "LabelSaveLocalMetadata": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", - "LabelSaveLocalMetadataHelp": "\u041f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c.", - "LabelDownloadInternetMetadata": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430", - "LabelDownloadInternetMetadataHelp": "\u0412 Media Browser \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.", - "TabPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", - "TabLibraryAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", - "TabAccess": "\u0414\u043e\u0441\u0442\u0443\u043f", - "TabImage": "\u0420\u0438\u0441\u0443\u043d\u043e\u043a", - "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c", - "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", - "TabImages": "\u0420\u0438\u0441\u0443\u043d\u043a\u0438", - "TabNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", - "TabCollectionTitles": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", - "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", - "OptionEnableAccessFromAllDevices": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432", - "OptionEnableAccessToAllChannels": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c", - "OptionEnableAccessToAllLibraries": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430\u043c", - "DeviceAccessHelp": "\u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b \u0438 \u043d\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u044b \u0442\u0443\u0442.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", - "LabelUnairedMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", - "HeaderVideoPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e", - "HeaderPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", - "LabelAudioLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e:", - "LabelSubtitleLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:", - "OptionDefaultSubtitles": "\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435", - "OptionOnlyForcedSubtitles": "\u0422\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u0441-\u044b\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", - "OptionAlwaysPlaySubtitles": "\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0441\u043f\u0440-\u0442\u044c \u0441\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c\u0438", - "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", - "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0430\u0443\u0434\u0438\u043e \u043d\u0430 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.", - "OptionOnlyForcedSubtitlesHelp": "\u0411\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435.", - "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e.", - "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", - "TabSecurity": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c", - "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "ButtonInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "ButtonSave": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", - "ButtonResetPassword": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelNewPassword": "\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelNewPasswordConfirm": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f", - "HeaderCreatePassword": "\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f", - "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441. \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:", - "MaxParentalRatingHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "LibraryAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", - "ChannelAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", - "ButtonDeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043e\u043a", - "LabelSelectUsers": "\u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", - "ButtonUpload": "\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c", - "HeaderUploadNewImage": "\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0438\u0441\u0443\u043d\u043a\u0430", - "LabelDropImageHere": "\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0441\u044e\u0434\u0430", - "ImageUploadAspectRatioHelp": "\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d - 1:1. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e JPG\/PNG.", - "MessageNothingHere": "\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e.", - "MessagePleaseEnsureInternetMetadata": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.", - "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435", - "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", - "TabUpcoming": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435", - "TabShows": "\u0422\u0412-\u0446\u0438\u043a\u043b\u044b", - "TabEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", - "TabGenres": "\u0416\u0430\u043d\u0440\u044b", - "TabPeople": "\u041b\u044e\u0434\u0438", - "TabNetworks": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u0438", - "HeaderUsers": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", - "HeaderFilters": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b:", - "ButtonFilter": "\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c", - "OptionFavorite": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435", - "OptionLikes": "\u041d\u0440\u0430\u0432\u044f\u0449\u0438\u0435\u0441\u044f", - "OptionDislikes": "\u041d\u0435 \u043d\u0440\u0430\u0432\u044f\u0449\u0438\u0435\u0441\u044f", - "OptionActors": "\u0410\u043a\u0442\u0451\u0440\u044b", - "OptionGuestStars": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u044b\u0435 \u0430\u043a\u0442\u0451\u0440\u044b", - "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440\u044b", - "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0441\u0442\u044b", - "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u044b", - "HeaderResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", - "HeaderNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0435", - "NoNextUpItemsMessage": "\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0422\u0412-\u0446\u0438\u043a\u043b\u044b!", - "HeaderLatestEpisodes": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "HeaderPersonTypes": "\u0422\u0438\u043f\u044b \u043f\u0435\u0440\u0441\u043e\u043d:", - "TabSongs": "\u041c\u0435\u043b\u043e\u0434\u0438\u0438", - "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", - "TabArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", - "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", - "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", - "ButtonSort": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c", - "HeaderSortBy": "\u0423\u0441\u043b\u043e\u0432\u0438\u0435:", - "HeaderSortOrder": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:", - "OptionPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435", - "OptionUnplayed": "\u041d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435", - "OptionAscending": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u0439", - "OptionDescending": "\u0423\u0431\u044b\u0432\u0430\u044e\u0449\u0438\u0439", - "OptionRuntime": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c", - "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430", - "OptionPlayCount": "\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", - "OptionDatePlayed": "\u0414\u0430\u0442\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", - "OptionDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f", - "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c. \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", - "OptionArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", - "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", - "OptionTrackName": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438", - "OptionCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430", - "OptionNameSort": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", - "OptionFolderSort": "\u041f\u0430\u043f\u043a\u0438", - "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", - "OptionRevenue": "\u0412\u044b\u0440\u0443\u0447\u043a\u0430", - "OptionPoster": "\u041f\u043e\u0441\u0442\u0435\u0440", - "OptionPosterCard": "\u041f\u043e\u0441\u0442\u0435\u0440-\u043a\u0430\u0440\u0442\u0430", - "OptionBackdrop": "\u0417\u0430\u0434\u043d\u0438\u043a", - "OptionTimeline": "\u0425\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u044f", - "OptionThumb": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a", - "OptionThumbCard": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a-\u043a\u0430\u0440\u0442\u0430", - "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", - "OptionCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432", - "OptionVideoBitrate": "\u041f\u043e\u0442\u043e\u043a. \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e", - "OptionResumable": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", - "ScheduledTasksHelp": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0451 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435.", - "ScheduledTasksTitle": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a", - "TabMyPlugins": "\u041c\u043e\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b", - "TabCatalog": "\u041a\u0430\u0442\u0430\u043b\u043e\u0433", - "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u044b", - "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", - "HeaderNowPlaying": " \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0435", - "HeaderLatestAlbums": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", - "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438", - "HeaderRecentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e", - "HeaderFrequentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e", - "DevBuildWarning": "\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u043c\u0438. \u0412\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u043e, \u044d\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f, \u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c.", - "LabelVideoType": "\u0422\u0438\u043f \u0432\u0438\u0434\u0435\u043e:", - "OptionBluray": "BluRay", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b:", - "LabelService": "\u0421\u043b\u0443\u0436\u0431\u0430:", - "LabelStatus": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", "LabelVersion": "\u0412\u0435\u0440\u0441\u0438\u044f:", "LabelLastResult": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:", "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b", @@ -604,7 +361,7 @@ "LabelDeleteLeftOverFiles": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438:", "LabelDeleteLeftOverFilesHelp": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u0439\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab;\u00bb. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: .nfo;.txt", "OptionOverwriteExistingEpisodes": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "LabelTransferMethod": "\u041c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430", + "LabelTransferMethod": "\u041c\u0435\u0442\u043e\u0434 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430", "OptionCopy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", "OptionMove": "\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435", "LabelTransferMethodHelp": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f", @@ -626,11 +383,11 @@ "MessagePleaseRestartServerToFinishUpdating": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0441\u0435\u0440\u0432\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439.", "LabelDownMixAudioScale": "\u041a\u043e\u043c\u043f\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u043f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438:", "LabelDownMixAudioScaleHelp": "\u041a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0437\u0432\u0443\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0430\u044e\u0449\u0435\u043c \u043c\u0438\u043a\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0412\u0432\u0435\u0434\u0438\u0442\u0435 1, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f.", - "ButtonLinkKeys": "\u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043a\u043b\u044e\u0447", + "ButtonLinkKeys": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u043b\u044e\u0447\u0430", "LabelOldSupporterKey": "\u0421\u0442\u0430\u0440\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", "LabelNewSupporterKey": "\u041d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", - "HeaderMultipleKeyLinking": "\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443", - "MultipleKeyLinkingHelp": "\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043a \u043d\u043e\u0432\u043e\u043c\u0443.", + "HeaderMultipleKeyLinking": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443", + "MultipleKeyLinkingHelp": "\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u043a\u043b\u044e\u0447\u0435 \u043a \u043d\u043e\u0432\u043e\u043c\u0443.", "LabelCurrentEmailAddress": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b", "LabelCurrentEmailAddressHelp": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u042d-\u043f\u043e\u0447\u0442\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u043d\u043e\u0432\u044b\u0439 \u043a\u043b\u044e\u0447.", "HeaderForgotKey": "\u0417\u0430\u0431\u044b\u043b\u0438 \u043a\u043b\u044e\u0447?", @@ -691,7 +448,7 @@ "CategorySystem": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430", "CategoryApplication": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435", "CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\u043d", - "LabelMessageTitle": "\u0422\u0435\u043a\u0441\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:", + "LabelMessageTitle": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:", "LabelAvailableTokens": "\u0418\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u043c\u0430\u0440\u043a\u0435\u0440\u044b:", "AdditionalNotificationServices": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439.", "OptionAllUsers": "\u0412\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", @@ -917,6 +674,7 @@ "LabelChannelDownloadAgeHelp": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0448\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u043e. \u041e\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u043c \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438.", "ChannelSettingsFormHelp": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: Trailers \u0438\u043b\u0438 Vimeo) \u0438\u0437 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432.", "ButtonOptions": "\u041a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c", + "ViewTypePlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "ViewTypeMovies": "\u041a\u0438\u043d\u043e", "ViewTypeTvShows": "\u0422\u0412", "ViewTypeGames": "\u0418\u0433\u0440\u044b", @@ -1159,6 +917,7 @@ "LabelIfYouWishToContinueWithDeletion": "\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u044d\u0442\u043e, \u0432\u0432\u0435\u0434\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:", "ButtonIdentify": "\u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c", "LabelAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c:", + "LabelAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438:", "LabelAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", "LabelCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430:", "LabelVoteCount": "\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0433\u043e\u043b\u043e\u0441\u043e\u0432:", @@ -1322,7 +1081,7 @@ "OptionWeekdays": "\u0412 \u0431\u0443\u0434\u043d\u0438", "OptionWeekends": "\u0412 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435", "MessageProfileInfoSynced": "\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 Media Browser Connect.", - "HeaderOptionalLinkMediaBrowserAccount": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0421\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Media Browser", + "HeaderOptionalLinkMediaBrowserAccount": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0421\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Media Browser", "ButtonTrailerReel": "\u0421\u043a\u043b\u0435\u0438\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b", "HeaderTrailerReel": "\u0421\u043a\u043b\u0435\u0439\u043a\u0430 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u043e\u0432", "OptionPlayUnwatchedTrailersOnly": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b", @@ -1371,5 +1130,260 @@ "LabelTagFilterMode": "\u0420\u0435\u0436\u0438\u043c:", "LabelTagFilterAllowModeHelp": "\u0415\u0441\u043b\u0438 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0442\u0435\u0433\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0433\u043b\u0443\u0431\u043e\u043a\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u043f\u043e\u043a, \u0442\u043e \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0433\u0430\u043c\u0438, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0442\u0430\u043a\u0436\u0435.", "HeaderThisUserIsCurrentlyDisabled": "\u042d\u0442\u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d", - "MessageReenableUser": "\u0421\u043c. \u043d\u0438\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438" + "MessageReenableUser": "\u0421\u043c. \u043d\u0438\u0436\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438", + "LabelEnableInternetMetadataForTvPrograms": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f:", + "OptionTVMovies": "\u0422\u0412 \u0444\u0438\u043b\u044c\u043c\u044b", + "HeaderUpcomingMovies": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b", + "HeaderUpcomingPrograms": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", + "ButtonMoreItems": "\u0415\u0449\u0451...", + "LabelShowLibraryTileNames": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0438\u0442\u043e\u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelShowLibraryTileNamesHelp": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u0431\u0443\u0434\u0443\u0442 \u043b\u0438 \u043d\u0430\u0434\u043f\u0438\u0441\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u043e\u0434 \u043f\u043b\u0438\u0442\u043a\u0430\u043c\u0438 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435.", + "LabelExit": "\u0412\u044b\u0445\u043e\u0434", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", + "LabelGithub": "GitHub", + "LabelSwagger": "\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Swagger", + "LabelStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442", + "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", + "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", + "LabelBrowseLibrary": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelConfigureMediaBrowser": "\u041d\u0430\u0441\u0442\u0440o\u0439\u043a\u0430 Media Browser", + "LabelOpenLibraryViewer": "\u0421\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", + "LabelShowLogWindow": "\u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u0432 \u043e\u043a\u043d\u0435", + "LabelPrevious": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435", + "LabelFinish": "\u0413\u043e\u0442\u043e\u0432\u043e", + "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", + "LabelYoureDone": "\u0412\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438!", + "WelcomeToMediaBrowser": "\u0412\u0430\u0441 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u042d\u0442\u043e\u0442 \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u0442 \u0432\u0430\u0441 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0435 \u0444\u0430\u0437\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c, \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a.", + "TellUsAboutYourself": "\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u043e \u0441\u0435\u0431\u0435", + "ButtonQuickStartGuide": "\u041a \u043a\u0440\u0430\u0442\u043a\u043e\u043c\u0443 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u0443 \u043f\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0443", + "LabelYourFirstName": "\u0412\u0430\u0448\u0435 \u0438\u043c\u044f:", + "MoreUsersCanBeAddedLater": "\u041f\u043e\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u00ab\u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c\u00bb.", + "UserProfilesIntro": "\u0412 Media Browser \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445 \u0438\u043c\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c.", + "LabelWindowsService": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows", + "AWindowsServiceHasBeenInstalled": "\u0421\u043b\u0443\u0436\u0431\u0430 Windows \u0431\u044b\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430.", + "WindowsServiceIntro1": "\u041e\u0431\u044b\u0447\u043d\u043e Media Browser Server \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0436\u0431\u0430\u043c\u0438 Windows.", + "WindowsServiceIntro2": "\u041f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u043b\u0443\u0436\u0431\u044b Windows, \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043b\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0437\u043d\u0430\u0447\u043e\u043a \u0432 \u043b\u043e\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u0443\u0436\u0431\u0430 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u0421\u043b\u0443\u0436\u0431\u0443 \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448\u0435 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e.", + "WizardCompleted": "\u042d\u0442\u043e \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441. Media Browser \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0430\u0448\u0435\u0439 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0438 \u043d\u0430\u0436\u043c\u0438\u0442\u0435 \u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/b>.", + "LabelConfigureSettings": "\u041d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", + "LabelEnableVideoImageExtraction": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u0430 \u0438\u0437 \u0432\u0438\u0434\u0435\u043e", + "VideoImageExtractionHelp": "\u0414\u043b\u044f \u0432\u0438\u0434\u0435\u043e, \u0433\u0434\u0435 \u0435\u0449\u0451 \u200b\u200b\u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0435\u0449\u0451 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043a \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438, \u043d\u043e \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u0438.", + "LabelEnableChapterImageExtractionForMovies": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", + "LabelChapterImageExtractionForMoviesHelp": "\u0418\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0446\u0435\u043d\u044b. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u043c, \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u041e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u043e\u0447\u044c, \u043e\u0434\u043d\u0430\u043a\u043e, \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u041d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432 \u0447\u0430\u0441\u044b \u043f\u0438\u043a.", + "LabelEnableAutomaticPortMapping": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", + "LabelEnableAutomaticPortMappingHelp": "UPnP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u0438\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430.\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432.", + "HeaderTermsOfService": "\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 Media Browser", + "MessagePleaseAcceptTermsOfService": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433 \u0438 \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c.", + "OptionIAcceptTermsOfService": "\u042f \u0441\u043e\u0433\u043b\u0430\u0448\u0430\u044e\u0441\u044c \u0441 \u0423\u0441\u043b\u043e\u0432\u0438\u044f\u043c\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", + "ButtonPrivacyPolicy": "\u041a \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438", + "ButtonTermsOfService": "\u041a \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u043b\u0443\u0433", + "HeaderDeveloperOptions": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", + "OptionEnableWebClientResponseCache": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "OptionDisableForDevelopmentHelp": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0434\u0430\u043d\u043d\u043e\u0435, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0432 \u0446\u0435\u043b\u044f\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430.", + "OptionEnableWebClientResourceMinification": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430", + "LabelDashboardSourcePath": "\u041f\u0443\u0442\u044c \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430:", + "LabelDashboardSourcePathHelp": "\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 dashboard-ui. \u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f.", + "ButtonConvertMedia": "\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "ButtonOrganize": "\u0420\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c", + "LinkedToMediaBrowserConnect": "\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0437\u044c \u0441 Media Browser Connect", + "HeaderSupporterBenefits": "\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", + "HeaderAddUser": "\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "LabelAddConnectSupporterHelp": "\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u043a Media Browser Connect \u0441 \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u044f.", + "LabelPinCode": "PIN-\u043a\u043e\u0434:", + "ButtonOk": "\u041e\u041a", + "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", + "ButtonExit": "\u0412\u044b\u0439\u0442\u0438", + "ButtonNew": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", + "HeaderTV": "\u0422\u0412", + "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", + "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", + "HeaderPaths": "\u041f\u0443\u0442\u0438", + "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", + "HeaderGrownupsOnly": "\u0422\u043e\u043b\u044c\u043a\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0435!", + "DividerOr": "-- \u0438\u043b\u0438 --", + "HeaderInstalledServices": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b", + "HeaderAvailableServices": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0431\u044b", + "MessageNoServicesInstalled": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0436\u0431 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", + "HeaderToAccessPleaseEnterEasyPinCode": "\u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0439 PIN-\u043a\u043e\u0434", + "KidsModeAdultInstruction": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u043d\u0430\u0447\u043a\u0443 \u0437\u0430\u043c\u043a\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 \u0432\u043d\u0438\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u0434\u0435\u0442\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448 PIN-\u043a\u043e\u0434.", + "ButtonConfigurePinCode": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c PIN-\u043a\u043e\u0434", + "HeaderAdultsReadHere": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0437\u0434\u0435\u0441\u044c!", + "RegisterWithPayPal": "\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", + "HeaderSyncRequiresSupporterMembership": "\u0414\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430", + "HeaderEnjoyDayTrial": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u043c 14-\u0434\u043d\u0435\u0432\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c", + "LabelSyncTempPath": "\u041f\u0443\u0442\u044c \u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443:", + "LabelSyncTempPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u0437\u0434\u0435\u0441\u044c.", + "LabelCustomCertificatePath": "\u041f\u0443\u0442\u044c \u043a \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443:", + "LabelCustomCertificatePathHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b .pfx SSL-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0415\u0441\u043b\u0438 \u043e\u043d \u043e\u043f\u0443\u0449\u0435\u043d, \u0441\u0435\u0440\u0432\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.", + "TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", + "ButtonDonateWithPayPal": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PayPal", + "OptionDetectArchiveFilesAsMedia": "\u0410\u0440\u0445\u0438\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "OptionDetectArchiveFilesAsMediaHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u043c\u0438 .RAR \u0438 .ZIP \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b.", + "LabelEnterConnectUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u042d-\u043f\u043e\u0447\u0442\u0430", + "LabelEnterConnectUserNameHelp": "\u042d\u0442\u043e - \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 Media Browser.", + "LabelEnableEnhancedMovies": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0444\u0438\u043b\u044c\u043c\u043e\u0432", + "LabelEnableEnhancedMoviesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0444\u0438\u043b\u044c\u043c\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u0430\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b, \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0441\u044a\u0451\u043c\u043e\u043a \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0435\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435.", + "HeaderSyncJobInfo": "\u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", + "FolderTypeMixed": "\u0420\u0430\u0437\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "FolderTypeMovies": "\u041a\u0438\u043d\u043e", + "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", + "FolderTypeAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438", + "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", + "FolderTypeGames": "\u0418\u0433\u0440\u044b", + "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", + "FolderTypeTvShows": "\u0422\u0412", + "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435", + "LabelContentType": "\u0422\u0438\u043f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f:", + "TitleScheduledTasks": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438", + "HeaderSetupLibrary": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "ButtonAddMediaFolder": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443", + "LabelFolderType": "\u0422\u0438\u043f \u043f\u0430\u043f\u043a\u0438:", + "ReferToMediaLibraryWiki": "\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0432\u0438\u043a\u0438 \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435.", + "LabelCountry": "\u0421\u0442\u0440\u0430\u043d\u0430:", + "LabelLanguage": "\u042f\u0437\u044b\u043a:", + "LabelTimeLimitHours": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 (\u0447\u0430\u0441\u044b):", + "ButtonJoinTheDevelopmentTeam": "\u0412\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", + "HeaderPreferredMetadataLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445:", + "LabelSaveLocalMetadata": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a", + "LabelSaveLocalMetadataHelp": "\u041f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u044c \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432 \u0442\u0430\u043a\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0433\u0434\u0435 \u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u0442\u044c.", + "LabelDownloadInternetMetadata": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430", + "LabelDownloadInternetMetadataHelp": "\u0412 Media Browser \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.", + "TabPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", + "TabLibraryAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", + "TabAccess": "\u0414\u043e\u0441\u0442\u0443\u043f", + "TabImage": "\u0420\u0438\u0441\u0443\u043d\u043e\u043a", + "TabProfile": "\u041f\u0440\u043e\u0444\u0438\u043b\u044c", + "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "TabImages": "\u0420\u0438\u0441\u0443\u043d\u043a\u0438", + "TabNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", + "TabCollectionTitles": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "HeaderDeviceAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", + "OptionEnableAccessFromAllDevices": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432", + "OptionEnableAccessToAllChannels": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u0430\u043c", + "OptionEnableAccessToAllLibraries": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430\u043c", + "DeviceAccessHelp": "\u042d\u0442\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u044b \u0438 \u043d\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0447\u0435\u0440\u0435\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u044b \u0442\u0443\u0442.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", + "LabelUnairedMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432", + "HeaderVideoPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e", + "HeaderPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "LabelAudioLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e:", + "LabelSubtitleLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:", + "OptionDefaultSubtitles": "\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435", + "OptionOnlyForcedSubtitles": "\u0422\u043e\u043b\u044c\u043a\u043e \u0444\u043e\u0440\u0441-\u044b\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b", + "OptionAlwaysPlaySubtitles": "\u0412\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0441\u043f\u0440-\u0442\u044c \u0441\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0430\u043c\u0438", + "OptionNoSubtitles": "\u0411\u0435\u0437 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432", + "OptionDefaultSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0430\u0443\u0434\u0438\u043e \u043d\u0430 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.", + "OptionOnlyForcedSubtitlesHelp": "\u0411\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a \u0444\u043e\u0440\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435.", + "OptionAlwaysPlaySubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u044f\u0437\u044b\u043a\u0430, \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e.", + "OptionNoSubtitlesHelp": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0438\u043b\u0438", + "TabSecurity": "\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c", + "ButtonAddUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "ButtonAddLocalUser": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "ButtonInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "ButtonSave": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", + "ButtonResetPassword": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelNewPassword": "\u041d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelNewPasswordConfirm": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f", + "HeaderCreatePassword": "\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u043e\u043b\u044f", + "LabelCurrentPassword": "\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelMaxParentalRating": "\u041c\u0430\u043a\u0441. \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0430\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f:", + "MaxParentalRatingHelp": "\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u043e\u0439 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u0440\u044b\u0442\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", + "LibraryAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", + "ChannelAccessHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e. \u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u0431\u0443\u0434\u0443\u0442 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u00ab\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445\u00bb.", + "ButtonDeleteImage": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043e\u043a", + "LabelSelectUsers": "\u0412\u044b\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439:", + "ButtonUpload": "\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c", + "HeaderUploadNewImage": "\u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0438\u0441\u0443\u043d\u043a\u0430", + "LabelDropImageHere": "\u041f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0440\u0438\u0441\u0443\u043d\u043e\u043a \u0441\u044e\u0434\u0430", + "ImageUploadAspectRatioHelp": "\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0440\u043e\u043d - 1:1. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e JPG\/PNG.", + "MessageNothingHere": "\u0417\u0434\u0435\u0441\u044c \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e.", + "MessagePleaseEnsureInternetMetadata": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.", + "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0435", + "TabLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", + "TabUpcoming": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e\u0435", + "TabShows": "\u0422\u0412-\u0446\u0438\u043a\u043b\u044b", + "TabEpisodes": "\u042d\u043f\u0438\u0437\u043e\u0434\u044b", + "TabGenres": "\u0416\u0430\u043d\u0440\u044b", + "TabPeople": "\u041b\u044e\u0434\u0438", + "TabNetworks": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u0438", + "HeaderUsers": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438", + "HeaderFilters": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b:", + "ButtonFilter": "\u0424\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c", + "OptionFavorite": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435", + "OptionLikes": "\u041d\u0440\u0430\u0432\u044f\u0449\u0438\u0435\u0441\u044f", + "OptionDislikes": "\u041d\u0435 \u043d\u0440\u0430\u0432\u044f\u0449\u0438\u0435\u0441\u044f", + "OptionActors": "\u0410\u043a\u0442\u0451\u0440\u044b", + "OptionGuestStars": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0451\u043d\u043d\u044b\u0435 \u0430\u043a\u0442\u0451\u0440\u044b", + "OptionDirectors": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440\u044b", + "OptionWriters": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0441\u0442\u044b", + "OptionProducers": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u044b", + "HeaderResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", + "HeaderNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0435", + "NoNextUpItemsMessage": "\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0432\u043e\u0438 \u0422\u0412-\u0446\u0438\u043a\u043b\u044b!", + "HeaderLatestEpisodes": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", + "HeaderPersonTypes": "\u0422\u0438\u043f\u044b \u043f\u0435\u0440\u0441\u043e\u043d:", + "TabSongs": "\u041c\u0435\u043b\u043e\u0434\u0438\u0438", + "TabAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", + "TabArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "TabAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "TabMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "ButtonSort": "\u0421\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c", + "HeaderSortBy": "\u0423\u0441\u043b\u043e\u0432\u0438\u0435:", + "HeaderSortOrder": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435:", + "OptionPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435", + "OptionUnplayed": "\u041d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435", + "OptionAscending": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u0439", + "OptionDescending": "\u0423\u0431\u044b\u0432\u0430\u044e\u0449\u0438\u0439", + "OptionRuntime": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c", + "OptionReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430", + "OptionPlayCount": "\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439", + "OptionDatePlayed": "\u0414\u0430\u0442\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "OptionDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f", + "OptionAlbumArtist": "\u0410\u043b\u044c\u0431\u043e\u043c. \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", + "OptionArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", + "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", + "OptionTrackName": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u0440\u043e\u0436\u043a\u0438", + "OptionCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430", + "OptionNameSort": "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + "OptionFolderSort": "\u041f\u0430\u043f\u043a\u0438", + "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", + "OptionRevenue": "\u0412\u044b\u0440\u0443\u0447\u043a\u0430", + "OptionPoster": "\u041f\u043e\u0441\u0442\u0435\u0440", + "OptionPosterCard": "\u041f\u043e\u0441\u0442\u0435\u0440-\u043a\u0430\u0440\u0442\u0430", + "OptionBackdrop": "\u0417\u0430\u0434\u043d\u0438\u043a", + "OptionTimeline": "\u0425\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u044f", + "OptionThumb": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a", + "OptionThumbCard": "\u0411\u0435\u0433\u0443\u043d\u043e\u043a-\u043a\u0430\u0440\u0442\u0430", + "OptionBanner": "\u0411\u0430\u043d\u043d\u0435\u0440", + "OptionCriticRating": "\u041e\u0446\u0435\u043d\u043a\u0430 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0432", + "OptionVideoBitrate": "\u041f\u043e\u0442\u043e\u043a. \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043e", + "OptionResumable": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", + "ScheduledTasksHelp": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0451 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435.", + "ScheduledTasksTitle": "\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a", + "TabMyPlugins": "\u041c\u043e\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b", + "TabCatalog": "\u041a\u0430\u0442\u0430\u043b\u043e\u0433", + "TitlePlugins": "\u041f\u043b\u0430\u0433\u0438\u043d\u044b", + "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f", + "HeaderNowPlaying": " \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0435", + "HeaderLatestAlbums": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", + "HeaderLatestSongs": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u043b\u043e\u0434\u0438\u0438", + "HeaderRecentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e", + "HeaderFrequentlyPlayed": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u043e", + "DevBuildWarning": "\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u0447\u043d\u044b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0434\u043e\u0432\u044b\u043c\u0438. \u0412\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0447\u0430\u0441\u0442\u043e, \u044d\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043e \u043a\u043e\u043d\u0446\u0430. \u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f, \u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c.", + "LabelVideoType": "\u0422\u0438\u043f \u0432\u0438\u0434\u0435\u043e:", + "OptionBluray": "BluRay", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b:", + "LabelService": "\u0421\u043b\u0443\u0436\u0431\u0430:", + "LabelStatus": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435:" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json index 03b0180a5..e0fa1c009 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json @@ -1,305 +1,4 @@ { - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Restart Server", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Previous", - "LabelFinish": "Finish", - "LabelNext": "Next", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "Welcome to Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "Your first name:", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Cancel", - "ButtonExit": "Exit", - "ButtonNew": "New", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "Country:", - "LabelLanguage": "Language:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "Password", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "Profile", - "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiles", - "TabSecurity": "Security", - "ButtonAddUser": "Add User", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Save", - "ButtonResetPassword": "Reset Password", - "LabelNewPassword": "New password:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "Create Password", - "LabelCurrentPassword": "Current password:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "Episodes", - "TabGenres": "Genres", - "TabPeople": "People", - "TabNetworks": "Networks", - "HeaderUsers": "Users", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Favorites", - "OptionLikes": "Likes", - "OptionDislikes": "Dislikes", - "OptionActors": "Actors", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "Name", - "OptionFolderSort": "Folders", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatic Updates", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "Latest Albums", - "HeaderLatestSongs": "Latest Songs", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Type:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "Hide this user from login screens", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "Disable this user", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "HeaderAdvancedControl": "Advanced Control", - "LabelName": "Name:", - "ButtonHelp": "Help", - "OptionAllowUserToManageServer": "Allow this user to manage the server", - "HeaderFeatureAccess": "Feature Access", - "OptionAllowMediaPlayback": "Allow media playback", "OptionAllowBrowsingLiveTv": "Allow Live TV access", "OptionAllowDeleteLibraryContent": "Allow media deletion", "OptionAllowManageLiveTv": "Allow Live TV recording management", @@ -917,6 +616,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +859,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1072,318 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Restart Server", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Previous", + "LabelFinish": "Finish", + "LabelNext": "Next", + "LabelYoureDone": "You're Done!", + "WelcomeToMediaBrowser": "Welcome to Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "Your first name:", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Cancel", + "ButtonExit": "Exit", + "ButtonNew": "New", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "Country:", + "LabelLanguage": "Language:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "Password", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "Profile", + "TabMetadata": "Metadata", + "TabImages": "Images", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiles", + "TabSecurity": "Security", + "ButtonAddUser": "Add User", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Save", + "ButtonResetPassword": "Reset Password", + "LabelNewPassword": "New password:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "Create Password", + "LabelCurrentPassword": "Current password:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "Episodes", + "TabGenres": "Genres", + "TabPeople": "People", + "TabNetworks": "Networks", + "HeaderUsers": "Users", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Favorites", + "OptionLikes": "Likes", + "OptionDislikes": "Dislikes", + "OptionActors": "Actors", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "Name", + "OptionFolderSort": "Folders", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatic Updates", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "Latest Albums", + "HeaderLatestSongs": "Latest Songs", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Type:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Subtitles", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "Movies", + "TabStudios": "Studios", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Latest Movies", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "TabLog": "Log", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitMediaBrowserWebsite": "Visit the Media Browser Web Site", + "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "Hide this user from login screens", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "Disable this user", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "Name:", + "ButtonHelp": "Help", + "OptionAllowUserToManageServer": "Allow this user to manage the server", + "HeaderFeatureAccess": "Feature Access", + "OptionAllowMediaPlayback": "Allow media playback" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json index 734301251..61b5b9853 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -1,263 +1,4 @@ { - "LabelExit": "Avsluta", - "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "F\u00f6rval", - "LabelApiDocumentation": "Api Dokumentation", - "LabelDeveloperResources": "Resurser f\u00f6r utvecklare", - "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", - "LabelConfigureMediaBrowser": "Konfigurera Media Browser", - "LabelOpenLibraryViewer": "\u00d6ppna biblioteksbl\u00e4ddraren", - "LabelRestartServer": "Starta om servern", - "LabelShowLogWindow": "Visa loggf\u00f6nstret", - "LabelPrevious": "F\u00f6reg\u00e5ende", - "LabelFinish": "Klart", - "LabelNext": "N\u00e4sta", - "LabelYoureDone": "Klart!", - "WelcomeToMediaBrowser": "V\u00e4lkommen till Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Den h\u00e4r guiden hj\u00e4lper dig att g\u00f6ra de f\u00f6rsta inst\u00e4llningarna. F\u00f6r att b\u00f6rja var v\u00e4nlig v\u00e4lj \u00f6nskat spr\u00e5k.", - "TellUsAboutYourself": "Ber\u00e4tta om dig sj\u00e4lv", - "ButtonQuickStartGuide": "Snabbstartguide", - "LabelYourFirstName": "Ditt f\u00f6rnamn:", - "MoreUsersCanBeAddedLater": "Flera anv\u00e4ndare kan skapas senare i Kontrollpanelen.", - "UserProfilesIntro": "Media Browser har inbyggt st\u00f6d f\u00f6r anv\u00e4ndarprofiler, s\u00e5 varje anv\u00e4ndare kan ha sina egna utseendeinst\u00e4llningar, visad-markeringar och f\u00f6r\u00e4ldral\u00e5s.", - "LabelWindowsService": "Windows-tj\u00e4nst", - "AWindowsServiceHasBeenInstalled": "En Windows-tj\u00e4nst har installerats.", - "WindowsServiceIntro1": "Media Browser Server k\u00f6rs normalt som ett anv\u00e4ndarprogram med ikon i aktivitetsf\u00e4ltet, men om s\u00e5 \u00f6nskas kan den k\u00f6ras som en Windows-tj\u00e4nst och startas fr\u00e5n kontrollpanelen Tj\u00e4nster (Services).", - "WindowsServiceIntro2": "Om Media Browser k\u00f6rs som en tj\u00e4nst, notera att den inte kan k\u00f6ras samtidigt som aktivitetsf\u00e4ltsikonen, s\u00e5 f\u00f6r att k\u00f6ra tj\u00e4nsten m\u00e5ste ikonen st\u00e4ngas. Tj\u00e4nsten m\u00e5ste ocks\u00e5 k\u00f6ras med administrat\u00f6rsr\u00e4ttigheter (st\u00e4lls in i kontrollpanelen Tj\u00e4nster). Automatiska uppdateringar fungerar heller inte med tj\u00e4nsten, dvs tj\u00e4nsten m\u00e5ste stoppas f\u00f6re manuell uppdatering och sedan \u00e5terstartas.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Inst\u00e4llningar", - "LabelEnableVideoImageExtraction": "Ta fram bildrutor ur videofiler", - "VideoImageExtractionHelp": "Dessa anv\u00e4nds f\u00f6r objekt som saknar bilder och d\u00e4r vi inte hittar n\u00e5gra vid s\u00f6kning p\u00e5 Internet. Detta g\u00f6r att den f\u00f6rsta genoms\u00f6kningen av biblioteket tar lite l\u00e4ngre tid, men ger en snyggare presentation.", - "LabelEnableChapterImageExtractionForMovies": "Ta fram kapitelbildrutor ur filmfiler", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Aktivera automatisk koppling av portar", - "LabelEnableAutomaticPortMappingHelp": "UPnP m\u00f6jligg\u00f6r automatisk inst\u00e4llning av din router s\u00e5 att du enkelt kan n\u00e5 Media Browser fr\u00e5n Internet. Detta kanske inte fungerar med alla routrar.", - "HeaderTermsOfService": "Media Browser Villkor", - "MessagePleaseAcceptTermsOfService": "V\u00e4nligen acceptera anv\u00e4ndarvillkoren och sekretesspolicy innan du forts\u00e4tter.", - "OptionIAcceptTermsOfService": "Jag accepterar anv\u00e4ndarvillkoren", - "ButtonPrivacyPolicy": "sekretesspolicy", - "ButtonTermsOfService": "Anv\u00e4ndarvillkor", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "OK", - "ButtonCancel": "Avbryt", - "ButtonExit": "Exit", - "ButtonNew": "Nytillkommet", - "HeaderTV": "TV", - "HeaderAudio": "Ljud", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Identifiera arkivfiler som media", - "OptionDetectArchiveFilesAsMediaHelp": "Om aktiverad, kommer filer med .rar och .zip f\u00f6rl\u00e4ngningar att uppt\u00e4ckas som mediefiler.", - "LabelEnterConnectUserName": "Anv\u00e4ndarnamn eller email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Synk jobb", - "FolderTypeMixed": "Blandat inneh\u00e5ll", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Inneh\u00e5ll f\u00f6r vuxna", - "FolderTypePhotos": "Foton", - "FolderTypeMusicVideos": "Musikvideor", - "FolderTypeHomeVideos": "Hemvideor", - "FolderTypeGames": "Spel", - "FolderTypeBooks": "B\u00f6cker", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u00c4rv", - "LabelContentType": "Inneh\u00e5llstyp:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Konfigurera mediabiblioteket", - "ButtonAddMediaFolder": "Skapa mediamapp", - "LabelFolderType": "Typ av mapp:", - "ReferToMediaLibraryWiki": "Se avsnittet om mediabibliotek i v\u00e5r Wiki.", - "LabelCountry": "Land:", - "LabelLanguage": "Spr\u00e5k:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u00d6nskat spr\u00e5k f\u00f6r metadata:", - "LabelSaveLocalMetadata": "Spara grafik och metadata i mediamapparna", - "LabelSaveLocalMetadataHelp": "Om grafik och metadata sparas tillsammans med media \u00e4r de enkelt \u00e5tkomliga f\u00f6r redigering.", - "LabelDownloadInternetMetadata": "H\u00e4mta grafik och metadata fr\u00e5n Internet", - "LabelDownloadInternetMetadataHelp": "Media Browser kan h\u00e4mta informatiom om dina media fr\u00e5n Internet f\u00f6r att ge en visuellt full\u00e4ndad presentation.", - "TabPreferences": "Inst\u00e4llningar", - "TabPassword": "L\u00f6senord", - "TabLibraryAccess": "\u00c5tkomst till biblioteket", - "TabAccess": "Access", - "TabImage": "Bild", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Bilder", - "TabNotifications": "Meddelanden", - "TabCollectionTitles": "Titlar", - "HeaderDeviceAccess": "Enhets\u00e5tkomst", - "OptionEnableAccessFromAllDevices": "Aktivera \u00e5tkomst fr\u00e5n alla enheter", - "OptionEnableAccessToAllChannels": "Aktivera \u00e5tkomst till alla kanaler", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i s\u00e4songer", - "LabelUnairedMissingEpisodesWithinSeasons": "Visa \u00e4nnu ej s\u00e4nda avsnitt i s\u00e4songer", - "HeaderVideoPlaybackSettings": "Inst\u00e4llningar f\u00f6r videouppspelning", - "HeaderPlaybackSettings": "Uppspelningsinst\u00e4llningar", - "LabelAudioLanguagePreference": "\u00d6nskat spr\u00e5k f\u00f6r ljudsp\u00e5r", - "LabelSubtitleLanguagePreference": "\u00d6nskat spr\u00e5k f\u00f6r undertexter:", - "OptionDefaultSubtitles": "Standard", - "OptionOnlyForcedSubtitles": "Endast tvingande undertexter", - "OptionAlwaysPlaySubtitles": "Visa alltid undertexter", - "OptionNoSubtitles": "Inga undertexter", - "OptionDefaultSubtitlesHelp": "Om ljudsp\u00e5ret \u00e4r p\u00e5 ett fr\u00e4mmande spr\u00e5k laddas undertexter p\u00e5 det \u00f6nskade spr\u00e5ket.", - "OptionOnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.", - "OptionAlwaysPlaySubtitlesHelp": "Undertexter p\u00e5 det \u00f6nskade spr\u00e5ket kommer att laddas oavsett ljudsp\u00e5rets spr\u00e5k.", - "OptionNoSubtitlesHelp": "Ladda normalt inte undertexter.", - "TabProfiles": "Profiler", - "TabSecurity": "S\u00e4kerhet", - "ButtonAddUser": "Ny anv\u00e4ndare", - "ButtonAddLocalUser": "Skapa lokal anv\u00e4ndare", - "ButtonInviteUser": "Bjud in anv\u00e4ndare", - "ButtonSave": "Spara", - "ButtonResetPassword": "\u00c5terst\u00e4ll l\u00f6senord", - "LabelNewPassword": "Nytt l\u00f6senord:", - "LabelNewPasswordConfirm": "Bekr\u00e4fta nytt l\u00f6senord:", - "HeaderCreatePassword": "Skapa l\u00f6senord", - "LabelCurrentPassword": "Nuvarande l\u00f6senord:", - "LabelMaxParentalRating": "H\u00f6gsta till\u00e5tna \u00e5ldersgr\u00e4ns", - "MaxParentalRatingHelp": "Inneh\u00e5ll med h\u00f6gre gr\u00e4ns visas ej f\u00f6r den h\u00e4r anv\u00e4ndaren.", - "LibraryAccessHelp": "Ange vilka mediamappar den h\u00e4r anv\u00e4ndaren ska ha tillg\u00e5ng till. Administrat\u00f6rer har r\u00e4ttighet att redigera alla mappar i metadatahanteraren.", - "ChannelAccessHelp": "V\u00e4lj kanaler att dela med denna anv\u00e4ndare. Administrat\u00f6rer kan redigera alla kanaler med hj\u00e4lp av metadatahanteraren.", - "ButtonDeleteImage": "Ta bort bild", - "LabelSelectUsers": "V\u00e4lj anv\u00e4ndare:", - "ButtonUpload": "Ladda upp", - "HeaderUploadNewImage": "Ladda upp ny bild", - "LabelDropImageHere": "Dra bild hit", - "ImageUploadAspectRatioHelp": "Bildf\u00f6rh\u00e5llande 1:1 rekommenderas. Endast JPG\/PNG.", - "MessageNothingHere": "Ingenting h\u00e4r.", - "MessagePleaseEnsureInternetMetadata": "Var god se till att h\u00e4mtning av metadata via Internet \u00e4r aktiverad.", - "TabSuggested": "Rekommenderas", - "TabLatest": "Nytillkommet", - "TabUpcoming": "Kommande", - "TabShows": "Serier", - "TabEpisodes": "Avsnitt", - "TabGenres": "Genrer", - "TabPeople": "Personer", - "TabNetworks": "TV-bolag", - "HeaderUsers": "Anv\u00e4ndare", - "HeaderFilters": "Filter:", - "ButtonFilter": "Filtrera", - "OptionFavorite": "Favoriter", - "OptionLikes": "Gillar", - "OptionDislikes": "Ogillar", - "OptionActors": "Sk\u00e5despelare", - "OptionGuestStars": "G\u00e4startister", - "OptionDirectors": "Regiss\u00f6rer", - "OptionWriters": "Manusf\u00f6rfattare", - "OptionProducers": "Producenter", - "HeaderResume": "\u00c5teruppta", - "HeaderNextUp": "N\u00e4stkommande", - "NoNextUpItemsMessage": "Hittade inget. S\u00e4tt ig\u00e5ng och titta!", - "HeaderLatestEpisodes": "Senaste avsnitten", - "HeaderPersonTypes": "Personkategorier:", - "TabSongs": "L\u00e5tar", - "TabAlbums": "Album", - "TabArtists": "Artister", - "TabAlbumArtists": "Albumartister", - "TabMusicVideos": "Musikvideor", - "ButtonSort": "Sortera", - "HeaderSortBy": "Sortera efter:", - "HeaderSortOrder": "Sorteringsordning:", - "OptionPlayed": "Visad", - "OptionUnplayed": "Ej visad", - "OptionAscending": "Stigande", - "OptionDescending": "Sjunkande", - "OptionRuntime": "Speltid", - "OptionReleaseDate": "Premi\u00e4rdatum", - "OptionPlayCount": "Antal visningar", - "OptionDatePlayed": "Senast visad", - "OptionDateAdded": "Inlagd den", - "OptionAlbumArtist": "Albumartist", - "OptionArtist": "Artist", - "OptionAlbum": "Album", - "OptionTrackName": "Sp\u00e5rnamn", - "OptionCommunityRating": "Allm\u00e4nhetens betyg", - "OptionNameSort": "Namn", - "OptionFolderSort": "Mappar", - "OptionBudget": "Budget", - "OptionRevenue": "Int\u00e4kter", - "OptionPoster": "Affisch", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Fondbild", - "OptionTimeline": "Tidslinje", - "OptionThumb": "Miniatyr", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banderoll", - "OptionCriticRating": "Kritikerbetyg", - "OptionVideoBitrate": "Bithastighet f\u00f6r video", - "OptionResumable": "Kan \u00e5terupptas", - "ScheduledTasksHelp": "Klicka p\u00e5 en aktivitet f\u00f6r att \u00e4ndra k\u00f6rtider.", - "ScheduledTasksTitle": "Schemalagda aktiviteter", - "TabMyPlugins": "Mina till\u00e4gg", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Automatiska uppdateringar", - "HeaderNowPlaying": "Nu spelas", - "HeaderLatestAlbums": "Nytillkomna album", - "HeaderLatestSongs": "Nytillkomna l\u00e5tar", - "HeaderRecentlyPlayed": "Nyligen spelade", - "HeaderFrequentlyPlayed": "Ofta spelade", - "DevBuildWarning": "Utvecklingsversioner \u00e4r \"bleeding edge\". Dessa kommer ut ofta och \u00e4r otestade. Appen kanske kraschar och vissa delar kanske inte alls fungerar.", - "LabelVideoType": "Videoformat:", - "OptionBluray": "Blu-ray", - "OptionDvd": "DVD", - "OptionIso": "ISO", - "Option3D": "3D", - "LabelFeatures": "Inneh\u00e5ll:", - "LabelService": "Tj\u00e4nst:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Senaste resultat:", - "OptionHasSubtitles": "Undertexter", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Ledmotiv", - "OptionHasThemeVideo": "Temavideo", - "TabMovies": "Filmer", - "TabStudios": "Studior", - "TabTrailers": "Trailers", - "LabelArtists": "Artister:", - "LabelArtistsHelp": "Separera med ; vid flera", - "HeaderLatestMovies": "Nytillkomna filmer", - "HeaderLatestTrailers": "Nytillkomna trailers", - "OptionHasSpecialFeatures": "Extramaterial:", - "OptionImdbRating": "Betyg p\u00e5 IMDB", - "OptionParentalRating": "F\u00f6r\u00e4ldraklassning", "OptionPremiereDate": "Premi\u00e4rdatum", "TabBasic": "Grunderna", "TabAdvanced": "Avancerat", @@ -917,6 +658,7 @@ "LabelChannelDownloadAgeHelp": "Nedladdat inneh\u00e5ll \u00e4ldre \u00e4n s\u00e5 raderas. Det \u00e4r fortfarande tillg\u00e4ngligt via str\u00f6mning fr\u00e5n Internet.", "ChannelSettingsFormHelp": "Installera kanaler, t ex Trailers och Vimeo, via till\u00e4ggskatalogen.", "ButtonOptions": "Alternativ", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Filmer", "ViewTypeTvShows": "TV", "ViewTypeGames": "Spel", @@ -1159,6 +901,7 @@ "LabelIfYouWishToContinueWithDeletion": "Om du vill forts\u00e4tta, ange v\u00e4rdet p\u00e5:", "ButtonIdentify": "Identifiera", "LabelAlbumArtist": "Albumartist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Anv\u00e4ndaromd\u00f6me:", "LabelVoteCount": "Antal r\u00f6ster:", @@ -1371,5 +1114,276 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "Mer...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Avsluta", + "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "F\u00f6rval", + "LabelApiDocumentation": "Api Dokumentation", + "LabelDeveloperResources": "Resurser f\u00f6r utvecklare", + "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", + "LabelConfigureMediaBrowser": "Konfigurera Media Browser", + "LabelOpenLibraryViewer": "\u00d6ppna biblioteksbl\u00e4ddraren", + "LabelRestartServer": "Starta om servern", + "LabelShowLogWindow": "Visa loggf\u00f6nstret", + "LabelPrevious": "F\u00f6reg\u00e5ende", + "LabelFinish": "Klart", + "LabelNext": "N\u00e4sta", + "LabelYoureDone": "Klart!", + "WelcomeToMediaBrowser": "V\u00e4lkommen till Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Den h\u00e4r guiden hj\u00e4lper dig att g\u00f6ra de f\u00f6rsta inst\u00e4llningarna. F\u00f6r att b\u00f6rja var v\u00e4nlig v\u00e4lj \u00f6nskat spr\u00e5k.", + "TellUsAboutYourself": "Ber\u00e4tta om dig sj\u00e4lv", + "ButtonQuickStartGuide": "Snabbstartguide", + "LabelYourFirstName": "Ditt f\u00f6rnamn:", + "MoreUsersCanBeAddedLater": "Flera anv\u00e4ndare kan skapas senare i Kontrollpanelen.", + "UserProfilesIntro": "Media Browser har inbyggt st\u00f6d f\u00f6r anv\u00e4ndarprofiler, s\u00e5 varje anv\u00e4ndare kan ha sina egna utseendeinst\u00e4llningar, visad-markeringar och f\u00f6r\u00e4ldral\u00e5s.", + "LabelWindowsService": "Windows-tj\u00e4nst", + "AWindowsServiceHasBeenInstalled": "En Windows-tj\u00e4nst har installerats.", + "WindowsServiceIntro1": "Media Browser Server k\u00f6rs normalt som ett anv\u00e4ndarprogram med ikon i aktivitetsf\u00e4ltet, men om s\u00e5 \u00f6nskas kan den k\u00f6ras som en Windows-tj\u00e4nst och startas fr\u00e5n kontrollpanelen Tj\u00e4nster (Services).", + "WindowsServiceIntro2": "Om Media Browser k\u00f6rs som en tj\u00e4nst, notera att den inte kan k\u00f6ras samtidigt som aktivitetsf\u00e4ltsikonen, s\u00e5 f\u00f6r att k\u00f6ra tj\u00e4nsten m\u00e5ste ikonen st\u00e4ngas. Tj\u00e4nsten m\u00e5ste ocks\u00e5 k\u00f6ras med administrat\u00f6rsr\u00e4ttigheter (st\u00e4lls in i kontrollpanelen Tj\u00e4nster). Automatiska uppdateringar fungerar heller inte med tj\u00e4nsten, dvs tj\u00e4nsten m\u00e5ste stoppas f\u00f6re manuell uppdatering och sedan \u00e5terstartas.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Inst\u00e4llningar", + "LabelEnableVideoImageExtraction": "Ta fram bildrutor ur videofiler", + "VideoImageExtractionHelp": "Dessa anv\u00e4nds f\u00f6r objekt som saknar bilder och d\u00e4r vi inte hittar n\u00e5gra vid s\u00f6kning p\u00e5 Internet. Detta g\u00f6r att den f\u00f6rsta genoms\u00f6kningen av biblioteket tar lite l\u00e4ngre tid, men ger en snyggare presentation.", + "LabelEnableChapterImageExtractionForMovies": "Ta fram kapitelbildrutor ur filmfiler", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Aktivera automatisk koppling av portar", + "LabelEnableAutomaticPortMappingHelp": "UPnP m\u00f6jligg\u00f6r automatisk inst\u00e4llning av din router s\u00e5 att du enkelt kan n\u00e5 Media Browser fr\u00e5n Internet. Detta kanske inte fungerar med alla routrar.", + "HeaderTermsOfService": "Media Browser Villkor", + "MessagePleaseAcceptTermsOfService": "V\u00e4nligen acceptera anv\u00e4ndarvillkoren och sekretesspolicy innan du forts\u00e4tter.", + "OptionIAcceptTermsOfService": "Jag accepterar anv\u00e4ndarvillkoren", + "ButtonPrivacyPolicy": "sekretesspolicy", + "ButtonTermsOfService": "Anv\u00e4ndarvillkor", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "OK", + "ButtonCancel": "Avbryt", + "ButtonExit": "Exit", + "ButtonNew": "Nytillkommet", + "HeaderTV": "TV", + "HeaderAudio": "Ljud", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Identifiera arkivfiler som media", + "OptionDetectArchiveFilesAsMediaHelp": "Om aktiverad, kommer filer med .rar och .zip f\u00f6rl\u00e4ngningar att uppt\u00e4ckas som mediefiler.", + "LabelEnterConnectUserName": "Anv\u00e4ndarnamn eller email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Synk jobb", + "FolderTypeMixed": "Blandat inneh\u00e5ll", + "FolderTypeMovies": "Filmer", + "FolderTypeMusic": "Musik", + "FolderTypeAdultVideos": "Inneh\u00e5ll f\u00f6r vuxna", + "FolderTypePhotos": "Foton", + "FolderTypeMusicVideos": "Musikvideor", + "FolderTypeHomeVideos": "Hemvideor", + "FolderTypeGames": "Spel", + "FolderTypeBooks": "B\u00f6cker", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "\u00c4rv", + "LabelContentType": "Inneh\u00e5llstyp:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Konfigurera mediabiblioteket", + "ButtonAddMediaFolder": "Skapa mediamapp", + "LabelFolderType": "Typ av mapp:", + "ReferToMediaLibraryWiki": "Se avsnittet om mediabibliotek i v\u00e5r Wiki.", + "LabelCountry": "Land:", + "LabelLanguage": "Spr\u00e5k:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u00d6nskat spr\u00e5k f\u00f6r metadata:", + "LabelSaveLocalMetadata": "Spara grafik och metadata i mediamapparna", + "LabelSaveLocalMetadataHelp": "Om grafik och metadata sparas tillsammans med media \u00e4r de enkelt \u00e5tkomliga f\u00f6r redigering.", + "LabelDownloadInternetMetadata": "H\u00e4mta grafik och metadata fr\u00e5n Internet", + "LabelDownloadInternetMetadataHelp": "Media Browser kan h\u00e4mta informatiom om dina media fr\u00e5n Internet f\u00f6r att ge en visuellt full\u00e4ndad presentation.", + "TabPreferences": "Inst\u00e4llningar", + "TabPassword": "L\u00f6senord", + "TabLibraryAccess": "\u00c5tkomst till biblioteket", + "TabAccess": "Access", + "TabImage": "Bild", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Bilder", + "TabNotifications": "Meddelanden", + "TabCollectionTitles": "Titlar", + "HeaderDeviceAccess": "Enhets\u00e5tkomst", + "OptionEnableAccessFromAllDevices": "Aktivera \u00e5tkomst fr\u00e5n alla enheter", + "OptionEnableAccessToAllChannels": "Aktivera \u00e5tkomst till alla kanaler", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i s\u00e4songer", + "LabelUnairedMissingEpisodesWithinSeasons": "Visa \u00e4nnu ej s\u00e4nda avsnitt i s\u00e4songer", + "HeaderVideoPlaybackSettings": "Inst\u00e4llningar f\u00f6r videouppspelning", + "HeaderPlaybackSettings": "Uppspelningsinst\u00e4llningar", + "LabelAudioLanguagePreference": "\u00d6nskat spr\u00e5k f\u00f6r ljudsp\u00e5r", + "LabelSubtitleLanguagePreference": "\u00d6nskat spr\u00e5k f\u00f6r undertexter:", + "OptionDefaultSubtitles": "Standard", + "OptionOnlyForcedSubtitles": "Endast tvingande undertexter", + "OptionAlwaysPlaySubtitles": "Visa alltid undertexter", + "OptionNoSubtitles": "Inga undertexter", + "OptionDefaultSubtitlesHelp": "Om ljudsp\u00e5ret \u00e4r p\u00e5 ett fr\u00e4mmande spr\u00e5k laddas undertexter p\u00e5 det \u00f6nskade spr\u00e5ket.", + "OptionOnlyForcedSubtitlesHelp": "Endast undertexter markerade som tvingande kommer att laddas.", + "OptionAlwaysPlaySubtitlesHelp": "Undertexter p\u00e5 det \u00f6nskade spr\u00e5ket kommer att laddas oavsett ljudsp\u00e5rets spr\u00e5k.", + "OptionNoSubtitlesHelp": "Ladda normalt inte undertexter.", + "TabProfiles": "Profiler", + "TabSecurity": "S\u00e4kerhet", + "ButtonAddUser": "Ny anv\u00e4ndare", + "ButtonAddLocalUser": "Skapa lokal anv\u00e4ndare", + "ButtonInviteUser": "Bjud in anv\u00e4ndare", + "ButtonSave": "Spara", + "ButtonResetPassword": "\u00c5terst\u00e4ll l\u00f6senord", + "LabelNewPassword": "Nytt l\u00f6senord:", + "LabelNewPasswordConfirm": "Bekr\u00e4fta nytt l\u00f6senord:", + "HeaderCreatePassword": "Skapa l\u00f6senord", + "LabelCurrentPassword": "Nuvarande l\u00f6senord:", + "LabelMaxParentalRating": "H\u00f6gsta till\u00e5tna \u00e5ldersgr\u00e4ns", + "MaxParentalRatingHelp": "Inneh\u00e5ll med h\u00f6gre gr\u00e4ns visas ej f\u00f6r den h\u00e4r anv\u00e4ndaren.", + "LibraryAccessHelp": "Ange vilka mediamappar den h\u00e4r anv\u00e4ndaren ska ha tillg\u00e5ng till. Administrat\u00f6rer har r\u00e4ttighet att redigera alla mappar i metadatahanteraren.", + "ChannelAccessHelp": "V\u00e4lj kanaler att dela med denna anv\u00e4ndare. Administrat\u00f6rer kan redigera alla kanaler med hj\u00e4lp av metadatahanteraren.", + "ButtonDeleteImage": "Ta bort bild", + "LabelSelectUsers": "V\u00e4lj anv\u00e4ndare:", + "ButtonUpload": "Ladda upp", + "HeaderUploadNewImage": "Ladda upp ny bild", + "LabelDropImageHere": "Dra bild hit", + "ImageUploadAspectRatioHelp": "Bildf\u00f6rh\u00e5llande 1:1 rekommenderas. Endast JPG\/PNG.", + "MessageNothingHere": "Ingenting h\u00e4r.", + "MessagePleaseEnsureInternetMetadata": "Var god se till att h\u00e4mtning av metadata via Internet \u00e4r aktiverad.", + "TabSuggested": "Rekommenderas", + "TabLatest": "Nytillkommet", + "TabUpcoming": "Kommande", + "TabShows": "Serier", + "TabEpisodes": "Avsnitt", + "TabGenres": "Genrer", + "TabPeople": "Personer", + "TabNetworks": "TV-bolag", + "HeaderUsers": "Anv\u00e4ndare", + "HeaderFilters": "Filter:", + "ButtonFilter": "Filtrera", + "OptionFavorite": "Favoriter", + "OptionLikes": "Gillar", + "OptionDislikes": "Ogillar", + "OptionActors": "Sk\u00e5despelare", + "OptionGuestStars": "G\u00e4startister", + "OptionDirectors": "Regiss\u00f6rer", + "OptionWriters": "Manusf\u00f6rfattare", + "OptionProducers": "Producenter", + "HeaderResume": "\u00c5teruppta", + "HeaderNextUp": "N\u00e4stkommande", + "NoNextUpItemsMessage": "Hittade inget. S\u00e4tt ig\u00e5ng och titta!", + "HeaderLatestEpisodes": "Senaste avsnitten", + "HeaderPersonTypes": "Personkategorier:", + "TabSongs": "L\u00e5tar", + "TabAlbums": "Album", + "TabArtists": "Artister", + "TabAlbumArtists": "Albumartister", + "TabMusicVideos": "Musikvideor", + "ButtonSort": "Sortera", + "HeaderSortBy": "Sortera efter:", + "HeaderSortOrder": "Sorteringsordning:", + "OptionPlayed": "Visad", + "OptionUnplayed": "Ej visad", + "OptionAscending": "Stigande", + "OptionDescending": "Sjunkande", + "OptionRuntime": "Speltid", + "OptionReleaseDate": "Premi\u00e4rdatum", + "OptionPlayCount": "Antal visningar", + "OptionDatePlayed": "Senast visad", + "OptionDateAdded": "Inlagd den", + "OptionAlbumArtist": "Albumartist", + "OptionArtist": "Artist", + "OptionAlbum": "Album", + "OptionTrackName": "Sp\u00e5rnamn", + "OptionCommunityRating": "Allm\u00e4nhetens betyg", + "OptionNameSort": "Namn", + "OptionFolderSort": "Mappar", + "OptionBudget": "Budget", + "OptionRevenue": "Int\u00e4kter", + "OptionPoster": "Affisch", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Fondbild", + "OptionTimeline": "Tidslinje", + "OptionThumb": "Miniatyr", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banderoll", + "OptionCriticRating": "Kritikerbetyg", + "OptionVideoBitrate": "Bithastighet f\u00f6r video", + "OptionResumable": "Kan \u00e5terupptas", + "ScheduledTasksHelp": "Klicka p\u00e5 en aktivitet f\u00f6r att \u00e4ndra k\u00f6rtider.", + "ScheduledTasksTitle": "Schemalagda aktiviteter", + "TabMyPlugins": "Mina till\u00e4gg", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Automatiska uppdateringar", + "HeaderNowPlaying": "Nu spelas", + "HeaderLatestAlbums": "Nytillkomna album", + "HeaderLatestSongs": "Nytillkomna l\u00e5tar", + "HeaderRecentlyPlayed": "Nyligen spelade", + "HeaderFrequentlyPlayed": "Ofta spelade", + "DevBuildWarning": "Utvecklingsversioner \u00e4r \"bleeding edge\". Dessa kommer ut ofta och \u00e4r otestade. Appen kanske kraschar och vissa delar kanske inte alls fungerar.", + "LabelVideoType": "Videoformat:", + "OptionBluray": "Blu-ray", + "OptionDvd": "DVD", + "OptionIso": "ISO", + "Option3D": "3D", + "LabelFeatures": "Inneh\u00e5ll:", + "LabelService": "Tj\u00e4nst:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Senaste resultat:", + "OptionHasSubtitles": "Undertexter", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Ledmotiv", + "OptionHasThemeVideo": "Temavideo", + "TabMovies": "Filmer", + "TabStudios": "Studior", + "TabTrailers": "Trailers", + "LabelArtists": "Artister:", + "LabelArtistsHelp": "Separera med ; vid flera", + "HeaderLatestMovies": "Nytillkomna filmer", + "HeaderLatestTrailers": "Nytillkomna trailers", + "OptionHasSpecialFeatures": "Extramaterial:", + "OptionImdbRating": "Betyg p\u00e5 IMDB", + "OptionParentalRating": "F\u00f6r\u00e4ldraklassning" } \ 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 2f306c0d9..932161dd3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -1,259 +1,4 @@ { - "LabelExit": "Cikis", - "LabelVisitCommunity": "Bizi Ziyaret Edin", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standart", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "K\u00fct\u00fcphane", - "LabelConfigureMediaBrowser": "Media Taray\u0131c\u0131 Konfig\u00fcrasyon", - "LabelOpenLibraryViewer": "K\u00fct\u00fcphane G\u00f6r\u00fcnt\u00fcleyici", - "LabelRestartServer": "Server Yeniden Baslat", - "LabelShowLogWindow": "Log Ekran\u0131n\u0131 G\u00f6r\u00fcnt\u00fcle", - "LabelPrevious": "\u00d6nceki", - "LabelFinish": "Bitir", - "LabelNext": "Sonraki", - "LabelYoureDone": "Haz\u0131rs\u0131n!", - "WelcomeToMediaBrowser": "Media Taray\u0131c\u0131ya Hosgeldiniz !", - "TitleMediaBrowser": "Media Taray\u0131c\u0131", - "ThisWizardWillGuideYou": "Bu sihirbaz kurulum i\u015flemi boyunca size yard\u0131mc\u0131 olacakt\u0131r. Ba\u015flamak i\u00e7in, tercih etti\u011finiz dili se\u00e7iniz.", - "TellUsAboutYourself": "Kendinizden Bahsedin", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0130lk Ad", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Servis", - "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmistir.", - "WindowsServiceIntro1": "Medya Taray\u0131c\u0131 Sunucu normalde bir tepsi simgesi ile bir masa\u00fcst\u00fc uygulamas\u0131 olarak cal\u0131s\u0131r, ancak bir arka plan servisi olarak \u00e7al\u0131\u015ft\u0131rmak isterseniz, bunun yerine windows servisleri kontrol panelinden baslat\u0131labilirsiniz.", - "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda cal\u0131st\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini cal\u0131st\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Su anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldugunu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkilesimi gerektirir.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Ayarlar\u0131 Degistir", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Tamam", - "ButtonCancel": "\u0130ptal", - "ButtonExit": "Exit", - "ButtonNew": "Yeni", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Medya k\u00fct\u00fcphaneni kur", - "ButtonAddMediaFolder": "Yeni Media Klas\u00f6r\u00fc", - "LabelFolderType": "Klas\u00f6r T\u00fcr\u00fc:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "\u00dclke", - "LabelLanguage": "Dil", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Tercih edilen Meta Dili:", - "LabelSaveLocalMetadata": "Medya meta dosyalar\u0131n\u0131 ayn\u0131 klas\u00f6rlere i\u015fle", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "\u0130nternetten \u0130\u00e7erik Y\u00fckleyin", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Tercihler", - "TabPassword": "\u015eifre", - "TabLibraryAccess": "K\u00fct\u00fcphane Eri\u015fim", - "TabAccess": "Access", - "TabImage": "Resim", - "TabProfile": "Profil", - "TabMetadata": "Metadata", - "TabImages": "Resimler", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Sezondaki kay\u0131p b\u00f6l\u00fcmleri g\u00f6ster", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Oynatma Ayarlar\u0131", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Ses Dili Tercihi:", - "LabelSubtitleLanguagePreference": "Altyaz\u0131 Dili Tercihi:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "Altyaz\u0131 Yok", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "Profiller", - "TabSecurity": "G\u00fcvenlik", - "ButtonAddUser": "Kullan\u0131c\u0131 Ekle", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "Kay\u0131t", - "ButtonResetPassword": "\u015eifre S\u0131f\u0131rla", - "LabelNewPassword": "Yeni \u015eifre", - "LabelNewPasswordConfirm": "Yeni \u015eifreyi Onayla", - "HeaderCreatePassword": "\u015eifre Olu\u015ftur", - "LabelCurrentPassword": "Kullan\u0131mdaki \u015eifreniz", - "LabelMaxParentalRating": "Maksimum izin verilen ebeveyn de\u011ferlendirmesi:", - "MaxParentalRatingHelp": "Daha y\u00fcksek bir derece ile \u0130\u00e7erik Bu kullan\u0131c\u0131dan gizli olacak.", - "LibraryAccessHelp": "Bu kullan\u0131c\u0131 ile payla\u015fmak i\u00e7in medya klas\u00f6rleri se\u00e7in. Y\u00f6neticiler meta y\u00f6neticisini kullanarak t\u00fcm klas\u00f6rleri d\u00fczenlemesi m\u00fcmk\u00fcn olacakt\u0131r.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Resim Sil", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Y\u00fckle", - "HeaderUploadNewImage": "Yeni Resim Y\u00fckle", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "\u00d6nerilen", - "TabLatest": "Son", - "TabUpcoming": "Gelecek", - "TabShows": "G\u00f6steriler", - "TabEpisodes": "B\u00f6l\u00fcmler", - "TabGenres": "T\u00fcrler", - "TabPeople": "Oyuncular", - "TabNetworks": "A\u011flar", - "HeaderUsers": "Kullan\u0131c\u0131lar", - "HeaderFilters": "Filtrelemeler", - "ButtonFilter": "Filtre", - "OptionFavorite": "Favoriler", - "OptionLikes": "Be\u011feniler", - "OptionDislikes": "Be\u011fenmeyenler", - "OptionActors": "Akt\u00f6rler", - "OptionGuestStars": "Konuk oylar\u0131", - "OptionDirectors": "Y\u00f6netmenler", - "OptionWriters": "Yazarlar", - "OptionProducers": "\u00dcreticiler", - "HeaderResume": "Devam", - "HeaderNextUp": "Sonraki hafta", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "Latest Episodes", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "\u015eark\u0131lar", - "TabAlbums": "Alb\u00fcm", - "TabArtists": "Sanat\u00e7\u0131", - "TabAlbumArtists": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", - "TabMusicVideos": "Klipler", - "ButtonSort": "S\u0131rala", - "HeaderSortBy": "\u015euna g\u00f6re s\u0131rala", - "HeaderSortOrder": "Sipari\u015fe g\u00f6re s\u0131rala", - "OptionPlayed": "\u00c7al\u0131n\u0131yor", - "OptionUnplayed": "\u00c7al\u0131nm\u0131yor", - "OptionAscending": "Y\u00fckselen", - "OptionDescending": "D\u00fc\u015fen", - "OptionRuntime": "\u00c7al\u0131\u015fma s\u00fcresi", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Oynatma sayac\u0131", - "OptionDatePlayed": "Oynatma Tarihi", - "OptionDateAdded": "Eklenme Tarihi", - "OptionAlbumArtist": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", - "OptionArtist": "Sanat\u00e7\u0131", - "OptionAlbum": "Alb\u00fcm", - "OptionTrackName": "Par\u00e7a \u0130smi", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "\u0130sim", - "OptionFolderSort": "Klas\u00f6r", - "OptionBudget": "Budget", - "OptionRevenue": "Revenue", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Kritik Rating", - "OptionVideoBitrate": "Video Kalitesi", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Zamanlanm\u0131\u015f G\u00f6revler", - "TabMyPlugins": "Eklentilerim", - "TabCatalog": "Katalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "Otomatik G\u00fcncelleme", - "HeaderNowPlaying": "\u015eimdi \u00c7al\u0131n\u0131yor", - "HeaderLatestAlbums": "Son Alb\u00fcmler", - "HeaderLatestSongs": "Son Par\u00e7alar", - "HeaderRecentlyPlayed": "Son oynat\u0131lan", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Video Tipi", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "\u0130so", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Servis:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Altyaz\u0131", - "OptionHasTrailer": "Tan\u0131t\u0131m Video", - "OptionHasThemeSong": "Tema \u015eark\u0131s\u0131", - "OptionHasThemeVideo": "Tema Videosu", - "TabMovies": "Filmler", - "TabStudios": "St\u00fcdyo", - "TabTrailers": "Fragmanlar", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Son filmler", "HeaderLatestTrailers": "Son fragmanlar", "OptionHasSpecialFeatures": "Special Features", "OptionImdbRating": "\u0130MDb Reyting", @@ -917,6 +662,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +905,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1118,272 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Cikis", + "LabelVisitCommunity": "Bizi Ziyaret Edin", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standart", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "K\u00fct\u00fcphane", + "LabelConfigureMediaBrowser": "Media Taray\u0131c\u0131 Konfig\u00fcrasyon", + "LabelOpenLibraryViewer": "K\u00fct\u00fcphane G\u00f6r\u00fcnt\u00fcleyici", + "LabelRestartServer": "Server Yeniden Baslat", + "LabelShowLogWindow": "Log Ekran\u0131n\u0131 G\u00f6r\u00fcnt\u00fcle", + "LabelPrevious": "\u00d6nceki", + "LabelFinish": "Bitir", + "LabelNext": "Sonraki", + "LabelYoureDone": "Haz\u0131rs\u0131n!", + "WelcomeToMediaBrowser": "Media Taray\u0131c\u0131ya Hosgeldiniz !", + "TitleMediaBrowser": "Media Taray\u0131c\u0131", + "ThisWizardWillGuideYou": "Bu sihirbaz kurulum i\u015flemi boyunca size yard\u0131mc\u0131 olacakt\u0131r. Ba\u015flamak i\u00e7in, tercih etti\u011finiz dili se\u00e7iniz.", + "TellUsAboutYourself": "Kendinizden Bahsedin", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0130lk Ad", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Servis", + "AWindowsServiceHasBeenInstalled": "Windows Servisi Y\u00fcklenmistir.", + "WindowsServiceIntro1": "Medya Taray\u0131c\u0131 Sunucu normalde bir tepsi simgesi ile bir masa\u00fcst\u00fc uygulamas\u0131 olarak cal\u0131s\u0131r, ancak bir arka plan servisi olarak \u00e7al\u0131\u015ft\u0131rmak isterseniz, bunun yerine windows servisleri kontrol panelinden baslat\u0131labilirsiniz.", + "WindowsServiceIntro2": "Windows hizmeti kullan\u0131yorsan\u0131z, o tepsi simgesi olarak ayn\u0131 anda cal\u0131st\u0131rabilirsiniz unutmay\u0131n, b\u00f6ylece hizmetini cal\u0131st\u0131rmak i\u00e7in tepsiyi \u00e7\u0131kmak gerekir l\u00fctfen. Hizmeti de kontrol paneli \u00fczerinden y\u00f6netim ayr\u0131cal\u0131klar\u0131yla yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. Su anda hizmet kendine g\u00fcncelleme m\u00fcmk\u00fcn oldugunu unutmay\u0131n, bu y\u00fczden yeni s\u00fcr\u00fcmleri manuel etkilesimi gerektirir.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Ayarlar\u0131 Degistir", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Tamam", + "ButtonCancel": "\u0130ptal", + "ButtonExit": "Exit", + "ButtonNew": "Yeni", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Medya k\u00fct\u00fcphaneni kur", + "ButtonAddMediaFolder": "Yeni Media Klas\u00f6r\u00fc", + "LabelFolderType": "Klas\u00f6r T\u00fcr\u00fc:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "\u00dclke", + "LabelLanguage": "Dil", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Tercih edilen Meta Dili:", + "LabelSaveLocalMetadata": "Medya meta dosyalar\u0131n\u0131 ayn\u0131 klas\u00f6rlere i\u015fle", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "\u0130nternetten \u0130\u00e7erik Y\u00fckleyin", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Tercihler", + "TabPassword": "\u015eifre", + "TabLibraryAccess": "K\u00fct\u00fcphane Eri\u015fim", + "TabAccess": "Access", + "TabImage": "Resim", + "TabProfile": "Profil", + "TabMetadata": "Metadata", + "TabImages": "Resimler", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Sezondaki kay\u0131p b\u00f6l\u00fcmleri g\u00f6ster", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Oynatma Ayarlar\u0131", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Ses Dili Tercihi:", + "LabelSubtitleLanguagePreference": "Altyaz\u0131 Dili Tercihi:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "Altyaz\u0131 Yok", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "Profiller", + "TabSecurity": "G\u00fcvenlik", + "ButtonAddUser": "Kullan\u0131c\u0131 Ekle", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "Kay\u0131t", + "ButtonResetPassword": "\u015eifre S\u0131f\u0131rla", + "LabelNewPassword": "Yeni \u015eifre", + "LabelNewPasswordConfirm": "Yeni \u015eifreyi Onayla", + "HeaderCreatePassword": "\u015eifre Olu\u015ftur", + "LabelCurrentPassword": "Kullan\u0131mdaki \u015eifreniz", + "LabelMaxParentalRating": "Maksimum izin verilen ebeveyn de\u011ferlendirmesi:", + "MaxParentalRatingHelp": "Daha y\u00fcksek bir derece ile \u0130\u00e7erik Bu kullan\u0131c\u0131dan gizli olacak.", + "LibraryAccessHelp": "Bu kullan\u0131c\u0131 ile payla\u015fmak i\u00e7in medya klas\u00f6rleri se\u00e7in. Y\u00f6neticiler meta y\u00f6neticisini kullanarak t\u00fcm klas\u00f6rleri d\u00fczenlemesi m\u00fcmk\u00fcn olacakt\u0131r.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Resim Sil", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Y\u00fckle", + "HeaderUploadNewImage": "Yeni Resim Y\u00fckle", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "\u00d6nerilen", + "TabLatest": "Son", + "TabUpcoming": "Gelecek", + "TabShows": "G\u00f6steriler", + "TabEpisodes": "B\u00f6l\u00fcmler", + "TabGenres": "T\u00fcrler", + "TabPeople": "Oyuncular", + "TabNetworks": "A\u011flar", + "HeaderUsers": "Kullan\u0131c\u0131lar", + "HeaderFilters": "Filtrelemeler", + "ButtonFilter": "Filtre", + "OptionFavorite": "Favoriler", + "OptionLikes": "Be\u011feniler", + "OptionDislikes": "Be\u011fenmeyenler", + "OptionActors": "Akt\u00f6rler", + "OptionGuestStars": "Konuk oylar\u0131", + "OptionDirectors": "Y\u00f6netmenler", + "OptionWriters": "Yazarlar", + "OptionProducers": "\u00dcreticiler", + "HeaderResume": "Devam", + "HeaderNextUp": "Sonraki hafta", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "Latest Episodes", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "\u015eark\u0131lar", + "TabAlbums": "Alb\u00fcm", + "TabArtists": "Sanat\u00e7\u0131", + "TabAlbumArtists": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", + "TabMusicVideos": "Klipler", + "ButtonSort": "S\u0131rala", + "HeaderSortBy": "\u015euna g\u00f6re s\u0131rala", + "HeaderSortOrder": "Sipari\u015fe g\u00f6re s\u0131rala", + "OptionPlayed": "\u00c7al\u0131n\u0131yor", + "OptionUnplayed": "\u00c7al\u0131nm\u0131yor", + "OptionAscending": "Y\u00fckselen", + "OptionDescending": "D\u00fc\u015fen", + "OptionRuntime": "\u00c7al\u0131\u015fma s\u00fcresi", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Oynatma sayac\u0131", + "OptionDatePlayed": "Oynatma Tarihi", + "OptionDateAdded": "Eklenme Tarihi", + "OptionAlbumArtist": "Sanat\u00e7\u0131 Alb\u00fcm\u00fc", + "OptionArtist": "Sanat\u00e7\u0131", + "OptionAlbum": "Alb\u00fcm", + "OptionTrackName": "Par\u00e7a \u0130smi", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "\u0130sim", + "OptionFolderSort": "Klas\u00f6r", + "OptionBudget": "Budget", + "OptionRevenue": "Revenue", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Kritik Rating", + "OptionVideoBitrate": "Video Kalitesi", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Zamanlanm\u0131\u015f G\u00f6revler", + "TabMyPlugins": "Eklentilerim", + "TabCatalog": "Katalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "Otomatik G\u00fcncelleme", + "HeaderNowPlaying": "\u015eimdi \u00c7al\u0131n\u0131yor", + "HeaderLatestAlbums": "Son Alb\u00fcmler", + "HeaderLatestSongs": "Son Par\u00e7alar", + "HeaderRecentlyPlayed": "Son oynat\u0131lan", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Video Tipi", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "\u0130so", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Servis:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Altyaz\u0131", + "OptionHasTrailer": "Tan\u0131t\u0131m Video", + "OptionHasThemeSong": "Tema \u015eark\u0131s\u0131", + "OptionHasThemeVideo": "Tema Videosu", + "TabMovies": "Filmler", + "TabStudios": "St\u00fcdyo", + "TabTrailers": "Fragmanlar", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Son filmler" } \ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/uk.json b/MediaBrowser.Server.Implementations/Localization/Server/uk.json index f0d6f074e..2afc76666 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -1,287 +1,4 @@ { - "LabelExit": "\u0412\u0438\u0439\u0442\u0438", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureMediaBrowser": "Configure Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", - "LabelFinish": "Finish", - "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", - "LabelYoureDone": "You're Done!", - "WelcomeToMediaBrowser": "\u0412\u0456\u0442\u0430\u0454\u043c\u043e \u0443 \u041c\u0435\u0434\u0456\u0430-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456!", - "TitleMediaBrowser": "\u041c\u0435\u0434\u0456\u0430-\u0431\u0440\u0430\u0443\u0437\u0435\u0440", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "Tell us about yourself", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u0406\u043c\u2019\u044f", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "Windows Service", - "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", - "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configure settings", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", - "ButtonExit": "Exit", - "ButtonNew": "\u041d\u043e\u0432\u0438\u0439", - "HeaderTV": "\u0422\u0411", - "HeaderAudio": "\u0410\u0443\u0434\u0456\u043e", - "HeaderVideo": "\u0412\u0456\u0434\u0435\u043e", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "\u0406\u043c\u2019\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0438", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "\u0406\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "\u0422\u0411", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "Setup your media library", - "ButtonAddMediaFolder": "Add media folder", - "LabelFolderType": "Folder type:", - "ReferToMediaLibraryWiki": "Refer to the media library wiki.", - "LabelCountry": "\u041a\u0440\u0430\u0457\u043d\u0430:", - "LabelLanguage": "\u041c\u043e\u0432\u0430:", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Preferred metadata language:", - "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", - "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", - "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", - "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", - "TabPreferences": "Preferences", - "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", - "TabLibraryAccess": "Library Access", - "TabAccess": "Access", - "TabImage": "Image", - "TabProfile": "\u041f\u0440\u043e\u0444\u0456\u043b\u044c", - "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u0456", - "TabImages": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", - "TabNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "Video Playback Settings", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Audio language preference:", - "LabelSubtitleLanguagePreference": "Subtitle language preference:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u041f\u0440\u043e\u0444\u0456\u043b\u0456", - "TabSecurity": "\u0411\u0435\u0437\u043f\u0435\u043a\u0430", - "ButtonAddUser": "\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u0417\u0431\u0435\u0440\u0456\u0433\u0442\u0438", - "ButtonResetPassword": "\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelNewPassword": "\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", - "LabelNewPasswordConfirm": "New password confirm:", - "HeaderCreatePassword": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", - "LabelCurrentPassword": "\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "Delete Image", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "Upload", - "HeaderUploadNewImage": "Upload New Image", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Nothing here.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "Latest", - "TabUpcoming": "Upcoming", - "TabShows": "Shows", - "TabEpisodes": "\u0415\u043f\u0456\u0437\u043e\u0434\u0438", - "TabGenres": "\u0416\u0430\u043d\u0440\u0438", - "TabPeople": "\u041b\u044e\u0434\u0438", - "TabNetworks": "\u041c\u0435\u0440\u0435\u0436\u0456", - "HeaderUsers": "\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456", - "HeaderFilters": "\u0424\u0456\u043b\u044c\u0442\u0440\u0438:", - "ButtonFilter": "\u0424\u0456\u043b\u044c\u0442\u0440", - "OptionFavorite": "\u0423\u043b\u044e\u0431\u043b\u0435\u043d\u0435", - "OptionLikes": "\u041f\u043e\u0434\u043e\u0431\u0430\u0454\u0442\u044c\u0441\u044f", - "OptionDislikes": "\u041d\u0435 \u043f\u043e\u0434\u043e\u0431\u0430\u0454\u0442\u044c\u0441\u044f", - "OptionActors": "\u0410\u043a\u0442\u043e\u0440\u0438", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "Directors", - "OptionWriters": "Writers", - "OptionProducers": "Producers", - "HeaderResume": "Resume", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0435\u043f\u0456\u0437\u043e\u0434\u0438", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "Songs", - "TabAlbums": "Albums", - "TabArtists": "Artists", - "TabAlbumArtists": "Album Artists", - "TabMusicVideos": "Music Videos", - "ButtonSort": "Sort", - "HeaderSortBy": "Sort By:", - "HeaderSortOrder": "Sort Order:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Runtime", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "Play Count", - "OptionDatePlayed": "Date Played", - "OptionDateAdded": "Date Added", - "OptionAlbumArtist": "Album Artist", - "OptionArtist": "\u0410\u043a\u0442\u043e\u0440", - "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", - "OptionTrackName": "Track Name", - "OptionCommunityRating": "Community Rating", - "OptionNameSort": "\u0406\u043c\u2019\u044f", - "OptionFolderSort": "\u0422\u0435\u043a\u0438", - "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", - "OptionRevenue": "\u0417\u0431\u043e\u0440\u0438", - "OptionPoster": "Poster", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "Video Bitrate", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "My Plugins", - "TabCatalog": "Catalog", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f", - "HeaderNowPlaying": "Now Playing", - "HeaderLatestAlbums": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0438", - "HeaderLatestSongs": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u043f\u0456\u0441\u043d\u0456", - "HeaderRecentlyPlayed": "Recently Played", - "HeaderFrequentlyPlayed": "Frequently Played", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "\u0422\u0438\u043f \u0432\u0456\u0434\u0435\u043e:", - "OptionBluray": "Bluray", - "OptionDvd": "Dvd", - "OptionIso": "Iso", - "Option3D": "3D", - "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "\u0412\u0435\u0440\u0441\u0456\u044f:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "Theme Song", - "OptionHasThemeVideo": "Theme Video", - "TabMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "TabStudios": "\u0421\u0442\u0443\u0434\u0456\u0457", - "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0438", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0444\u0456\u043b\u044c\u043c\u0438", - "HeaderLatestTrailers": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u0438", - "OptionHasSpecialFeatures": "Special Features", - "OptionImdbRating": "IMDb Rating", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "Basic", - "TabAdvanced": "Advanced", - "HeaderStatus": "Status", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Sunday", - "OptionMonday": "Monday", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Saturday", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Missing IMDb Id", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", "TabSupporterKey": "Supporter Key", "TabBecomeSupporter": "Become a Supporter", "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", @@ -917,6 +634,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +877,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1090,300 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u0412\u0438\u0439\u0442\u0438", + "LabelVisitCommunity": "Visit Community", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Standard", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureMediaBrowser": "Configure Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "\u041d\u0430\u0437\u0430\u0434", + "LabelFinish": "Finish", + "LabelNext": "\u0412\u043f\u0435\u0440\u0435\u0434", + "LabelYoureDone": "You're Done!", + "WelcomeToMediaBrowser": "\u0412\u0456\u0442\u0430\u0454\u043c\u043e \u0443 \u041c\u0435\u0434\u0456\u0430-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0456!", + "TitleMediaBrowser": "\u041c\u0435\u0434\u0456\u0430-\u0431\u0440\u0430\u0443\u0437\u0435\u0440", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "Tell us about yourself", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u0406\u043c\u2019\u044f", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "Windows Service", + "AWindowsServiceHasBeenInstalled": "A Windows Service has been installed.", + "WindowsServiceIntro1": "Media Browser Server normally runs as a desktop application with a tray icon, but if you prefer to run it as a background service, it can be started from the windows services control panel instead.", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "Configure settings", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "For videos that don't already have images, and that we're unable to find internet images for. This will add some additional time to the initial library scan but will result in a more pleasing presentation.", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Enable automatic port mapping", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", + "ButtonExit": "Exit", + "ButtonNew": "\u041d\u043e\u0432\u0438\u0439", + "HeaderTV": "\u0422\u0411", + "HeaderAudio": "\u0410\u0443\u0434\u0456\u043e", + "HeaderVideo": "\u0412\u0456\u0434\u0435\u043e", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "\u0406\u043c\u2019\u044f \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430 \u0430\u0431\u043e email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", + "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0438", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "\u0406\u0433\u0440\u0438", + "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", + "FolderTypeTvShows": "\u0422\u0411", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "Setup your media library", + "ButtonAddMediaFolder": "Add media folder", + "LabelFolderType": "Folder type:", + "ReferToMediaLibraryWiki": "Refer to the media library wiki.", + "LabelCountry": "\u041a\u0440\u0430\u0457\u043d\u0430:", + "LabelLanguage": "\u041c\u043e\u0432\u0430:", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Preferred metadata language:", + "LabelSaveLocalMetadata": "Save artwork and metadata into media folders", + "LabelSaveLocalMetadataHelp": "Saving artwork and metadata directly into media folders will put them in a place where they can be easily edited.", + "LabelDownloadInternetMetadata": "Download artwork and metadata from the internet", + "LabelDownloadInternetMetadataHelp": "Media Browser can download information about your media to enable rich presentations.", + "TabPreferences": "Preferences", + "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", + "TabLibraryAccess": "Library Access", + "TabAccess": "Access", + "TabImage": "Image", + "TabProfile": "\u041f\u0440\u043e\u0444\u0456\u043b\u044c", + "TabMetadata": "\u041c\u0435\u0442\u0430\u0434\u0430\u043d\u0456", + "TabImages": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", + "TabNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", + "TabCollectionTitles": "Titles", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "Video Playback Settings", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Audio language preference:", + "LabelSubtitleLanguagePreference": "Subtitle language preference:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0456\u043b\u0456", + "TabSecurity": "\u0411\u0435\u0437\u043f\u0435\u043a\u0430", + "ButtonAddUser": "\u0414\u043e\u0434\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0430", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u0417\u0431\u0435\u0440\u0456\u0433\u0442\u0438", + "ButtonResetPassword": "\u0421\u043a\u0438\u043d\u0443\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelNewPassword": "\u041d\u043e\u0432\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", + "LabelNewPasswordConfirm": "New password confirm:", + "HeaderCreatePassword": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u044c", + "LabelCurrentPassword": "\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "Content with a higher rating will be hidden from this user.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "Delete Image", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "Upload", + "HeaderUploadNewImage": "Upload New Image", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Nothing here.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "Latest", + "TabUpcoming": "Upcoming", + "TabShows": "Shows", + "TabEpisodes": "\u0415\u043f\u0456\u0437\u043e\u0434\u0438", + "TabGenres": "\u0416\u0430\u043d\u0440\u0438", + "TabPeople": "\u041b\u044e\u0434\u0438", + "TabNetworks": "\u041c\u0435\u0440\u0435\u0436\u0456", + "HeaderUsers": "\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456", + "HeaderFilters": "\u0424\u0456\u043b\u044c\u0442\u0440\u0438:", + "ButtonFilter": "\u0424\u0456\u043b\u044c\u0442\u0440", + "OptionFavorite": "\u0423\u043b\u044e\u0431\u043b\u0435\u043d\u0435", + "OptionLikes": "\u041f\u043e\u0434\u043e\u0431\u0430\u0454\u0442\u044c\u0441\u044f", + "OptionDislikes": "\u041d\u0435 \u043f\u043e\u0434\u043e\u0431\u0430\u0454\u0442\u044c\u0441\u044f", + "OptionActors": "\u0410\u043a\u0442\u043e\u0440\u0438", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "Directors", + "OptionWriters": "Writers", + "OptionProducers": "Producers", + "HeaderResume": "Resume", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0435\u043f\u0456\u0437\u043e\u0434\u0438", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "Songs", + "TabAlbums": "Albums", + "TabArtists": "Artists", + "TabAlbumArtists": "Album Artists", + "TabMusicVideos": "Music Videos", + "ButtonSort": "Sort", + "HeaderSortBy": "Sort By:", + "HeaderSortOrder": "Sort Order:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Runtime", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "Play Count", + "OptionDatePlayed": "Date Played", + "OptionDateAdded": "Date Added", + "OptionAlbumArtist": "Album Artist", + "OptionArtist": "\u0410\u043a\u0442\u043e\u0440", + "OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c", + "OptionTrackName": "Track Name", + "OptionCommunityRating": "Community Rating", + "OptionNameSort": "\u0406\u043c\u2019\u044f", + "OptionFolderSort": "\u0422\u0435\u043a\u0438", + "OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442", + "OptionRevenue": "\u0417\u0431\u043e\u0440\u0438", + "OptionPoster": "Poster", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "Timeline", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Banner", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "Video Bitrate", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "My Plugins", + "TabCatalog": "Catalog", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u0435 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f", + "HeaderNowPlaying": "Now Playing", + "HeaderLatestAlbums": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0430\u043b\u044c\u0431\u043e\u043c\u0438", + "HeaderLatestSongs": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u043f\u0456\u0441\u043d\u0456", + "HeaderRecentlyPlayed": "Recently Played", + "HeaderFrequentlyPlayed": "Frequently Played", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "\u0422\u0438\u043f \u0432\u0456\u0434\u0435\u043e:", + "OptionBluray": "Bluray", + "OptionDvd": "Dvd", + "OptionIso": "Iso", + "Option3D": "3D", + "LabelFeatures": "Features:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "\u0412\u0435\u0440\u0441\u0456\u044f:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u0438", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "Theme Song", + "OptionHasThemeVideo": "Theme Video", + "TabMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", + "TabStudios": "\u0421\u0442\u0443\u0434\u0456\u0457", + "TabTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0438", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0444\u0456\u043b\u044c\u043c\u0438", + "HeaderLatestTrailers": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u0438", + "OptionHasSpecialFeatures": "Special Features", + "OptionImdbRating": "IMDb Rating", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "Basic", + "TabAdvanced": "Advanced", + "HeaderStatus": "Status", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Sunday", + "OptionMonday": "Monday", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Saturday", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Missing IMDb Id", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "Support", + "TabLog": "Log", + "TabAbout": "About" } \ 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 daa6942ba..71c1dd22a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -1,302 +1,4 @@ { - "LabelExit": "Tho\u00e1t", - "LabelVisitCommunity": "Gh\u00e9 th\u0103m trang C\u1ed9ng \u0111\u1ed3ng", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "Ti\u00eau chu\u1ea9n", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Duy\u1ec7t th\u01b0 vi\u1ec7n", - "LabelConfigureMediaBrowser": "C\u1ea5u h\u00ecnh Media Browser", - "LabelOpenLibraryViewer": "Open Library Viewer", - "LabelRestartServer": "Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7", - "LabelShowLogWindow": "Show Log Window", - "LabelPrevious": "Tr\u01b0\u1edbc", - "LabelFinish": "K\u1ebft th\u00fac", - "LabelNext": "Ti\u1ebfp theo", - "LabelYoureDone": "B\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh!", - "WelcomeToMediaBrowser": "Ch\u00e0o m\u1eebng \u0111\u1ebfn B\u1ea1n \u0111\u1ebfn v\u1edbi Media Browser!", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "Th\u1ee7 thu\u1eadt n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t cho b\u1ea1n. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, vui l\u00f2ng l\u1ef1a ch\u1ecdn ng\u00f4n ng\u1eef b\u1ea1n \u01b0a th\u00edch.", - "TellUsAboutYourself": "N\u00f3i cho ch\u00fang t\u00f4i bi\u1ebft \u0111\u00f4i \u0111i\u1ec1u v\u1ec1 B\u1ea1n", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "T\u00ean c\u1ee7a B\u1ea1n", - "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", - "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "LabelWindowsService": "D\u1ecbch v\u1ee5 c\u1ee7a Windows", - "AWindowsServiceHasBeenInstalled": "M\u1ed9t d\u1ecbch v\u1ee5 c\u1ee7a Windows \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t", - "WindowsServiceIntro1": "Media Browser Server ch\u1ea1y b\u00ecnh th\u01b0\u1eddng nh\u01b0 m\u1ed9t \u1ee9ng d\u1ee5ng m\u00e1y t\u00ednh v\u1edbi khay bi\u1ec3u t\u01b0\u1ee3ng, nh\u01b0ng n\u1ebfu b\u1ea1n th\u00edch \u0111\u1ec3 n\u00f3 ch\u1ea1y nh\u01b0 m\u1ed9t d\u1ecbch v\u1ee5 n\u1ec1n, n\u00f3 c\u00f3t h\u1ec3 kh\u1edfi \u0111\u1ed9ng c\u00f9ng c\u00e1c d\u1ecbch v\u1ee5 c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh windows", - "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "C\u00e0i \u0111\u1eb7t c\u1ea5u h\u00ecnh", - "LabelEnableVideoImageExtraction": "Enable video image extraction", - "VideoImageExtractionHelp": "\u0110\u1ed1i v\u1edbi c\u00e1c video kh\u00f4ng c\u00f3 s\u1eb5n h\u00ecnh \u1ea3nh v\u00e0 ch\u00fang ta kh\u00f4ng t\u00ecm th\u1ea5y c\u00e1c h\u00ecnh \u1ea3nh \u0111\u00f3 tr\u00ean internet. \u0110i\u1ec1u n\u00e0y s\u1ebd", - "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "Cho ph\u00e9p t\u1ef1 \u0111\u1ed9ng \u00e1nh x\u1ea1 c\u1ed5ng (port)", - "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "Ok", - "ButtonCancel": "Tho\u00e1t", - "ButtonExit": "Exit", - "ButtonNew": "M\u1edbi", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n media c\u1ee7a b\u1ea1n", - "ButtonAddMediaFolder": "Th\u00eam m\u1ed9t th\u01b0 m\u1ee5c media", - "LabelFolderType": "Lo\u1ea1i th\u01b0 m\u1ee5c", - "ReferToMediaLibraryWiki": "Tham kh\u1ea3o th\u01b0 vi\u1ec7n wiki media.", - "LabelCountry": "Qu\u1ed1c gia:", - "LabelLanguage": "Ng\u00f4n ng\u1eef", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "Ng\u00f4n ng\u1eef metadata \u01b0a th\u00edch", - "LabelSaveLocalMetadata": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media", - "LabelSaveLocalMetadataHelp": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media, s\u1ebd \u0111\u01b0a ch\u00fang v\u00e0o m\u1ed9t n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda d\u1ec5 d\u00e0ng h\u01a1n.", - "LabelDownloadInternetMetadata": "T\u1ea3i \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata t\u1eeb internet", - "LabelDownloadInternetMetadataHelp": "Media Browser c\u00f3 th\u1ec3 t\u1ea3i th\u00f4ng tin v\u1ec1 media c\u1ee7a b\u1ea1n \u0111\u1ec3 cho ph\u00e9p tr\u00ecnh di\u1ec5n ch\u00fang m\u1ed9t c\u00e1ch phong ph\u00faho\u01a1n", - "TabPreferences": "\u01afa th\u00edch", - "TabPassword": "M\u1eadt kh\u1ea9u", - "TabLibraryAccess": "Truy c\u1eadp th\u01b0 vi\u1ec7n", - "TabAccess": "Access", - "TabImage": "H\u00ecnh \u1ea3nh", - "TabProfile": "H\u1ed3 s\u01a1", - "TabMetadata": "Metadata", - "TabImages": "H\u00ecnh \u1ea3nh", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Ti\u00eau \u0111\u1ec1", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", - "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", - "HeaderVideoPlaybackSettings": "C\u00e1c c\u00e0i \u0111\u1eb7t ph\u00e1t Video", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "Ng\u00f4n ng\u1eef tho\u1ea1i \u01b0a th\u00edch:", - "LabelSubtitleLanguagePreference": "Ng\u00f4n ng\u1eef ph\u1ee5 \u0111\u1ec1 \u01b0a th\u00edch:", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "H\u1ed3 s\u01a1", - "TabSecurity": "B\u1ea3o m\u1eadt", - "ButtonAddUser": "Th\u00eam ng\u01b0\u1eddi d\u00f9ng", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "L\u01b0u", - "ButtonResetPassword": "Reset m\u1eadt kh\u1ea9u", - "LabelNewPassword": "M\u1eadt kh\u1ea9u m\u1edbi:", - "LabelNewPasswordConfirm": "X\u00e1c nh\u1eadn m\u1eadt kh\u1ea9u m\u1edbi:", - "HeaderCreatePassword": "T\u1ea1o m\u1eadt kh\u1ea9u", - "LabelCurrentPassword": "M\u1eadt kh\u1ea9u hi\u1ec7n t\u1ea1i:", - "LabelMaxParentalRating": "Maximum allowed parental rating:", - "MaxParentalRatingHelp": "N\u1ed9i dung v\u1edbi \u0111\u00e1nh gi\u00e1 cao h\u01a1n s\u1ebd \u0111\u01b0\u1ee3c \u1ea9n \u0111i t\u1eeb ng\u01b0\u1eddi d\u00f9ng n\u00e0y.", - "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "X\u00f3a h\u00ecnh \u1ea3nh", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "T\u1ea3i l\u00ean", - "HeaderUploadNewImage": "T\u1ea3i l\u00ean m\u1ed9t \u1ea3nh m\u1edbi", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", - "MessageNothingHere": "Kh\u00f4ng c\u00f3 g\u00ec \u1edf \u0111\u00e2y.", - "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", - "TabSuggested": "Suggested", - "TabLatest": "M\u1edbi nh\u1ea5t", - "TabUpcoming": "S\u1eafp di\u1ec5n ra", - "TabShows": "Shows", - "TabEpisodes": "C\u00e1c t\u1eadp phim", - "TabGenres": "C\u00e1c th\u1ec3 lo\u1ea1i", - "TabPeople": "M\u1ecdi ng\u01b0\u1eddi", - "TabNetworks": "C\u00e1c m\u1ea1ng", - "HeaderUsers": "d\u00f9ng", - "HeaderFilters": "Filters:", - "ButtonFilter": "Filter", - "OptionFavorite": "Y\u00eau th\u00edch", - "OptionLikes": "Th\u00edch", - "OptionDislikes": "Kh\u00f4ng th\u00edch", - "OptionActors": "Di\u1ec5n vi\u00ean", - "OptionGuestStars": "Guest Stars", - "OptionDirectors": "\u0110\u1ea1o di\u1ec5n", - "OptionWriters": "K\u1ecbch b\u1ea3n", - "OptionProducers": "Nh\u00e0 s\u1ea3n xu\u1ea5t", - "HeaderResume": "S\u01a1 y\u1ebfu l\u00fd l\u1ecbch", - "HeaderNextUp": "Next Up", - "NoNextUpItemsMessage": "None found. Start watching your shows!", - "HeaderLatestEpisodes": "C\u00e1c t\u1eadp phim m\u1edbi nh\u1ea5t", - "HeaderPersonTypes": "Person Types:", - "TabSongs": "C\u00e1c ca kh\u00fac", - "TabAlbums": "C\u00e1c Album", - "TabArtists": "C\u00e1c ngh\u1ec7 s\u1ef9", - "TabAlbumArtists": "C\u00e1c Album ngh\u1ec7 s\u1ef9", - "TabMusicVideos": "C\u00e1c video \u00e2m nh\u1ea1c", - "ButtonSort": "Ph\u00e2n lo\u1ea1i", - "HeaderSortBy": "Ph\u00e2n lo\u1ea1i theo:", - "HeaderSortOrder": "Ph\u00e2n lo\u1ea1i theo th\u1ee9 t\u1ef1:", - "OptionPlayed": "Played", - "OptionUnplayed": "Unplayed", - "OptionAscending": "Ascending", - "OptionDescending": "Descending", - "OptionRuntime": "Th\u1eddi gian ph\u00e1t", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "S\u1ed1 l\u1ea7n ph\u00e1t", - "OptionDatePlayed": "Ng\u00e0y ph\u00e1t", - "OptionDateAdded": "Ng\u00e0y th\u00eam", - "OptionAlbumArtist": "Album ngh\u1ec7 s\u1ef9", - "OptionArtist": "Ngh\u1ec7 s\u1ef9", - "OptionAlbum": "Album", - "OptionTrackName": "T\u00ean b\u00e0i", - "OptionCommunityRating": "\u0110\u00e1nh gi\u00e1 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng", - "OptionNameSort": "T\u00ean", - "OptionFolderSort": "Folders", - "OptionBudget": "Ng\u00e2n s\u00e1ch", - "OptionRevenue": "Doanh thu", - "OptionPoster": "\u00c1p ph\u00edch", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "Backdrop", - "OptionTimeline": "D\u00f2ng th\u1eddi gian", - "OptionThumb": "Thumb", - "OptionThumbCard": "Thumb card", - "OptionBanner": "Bi\u1ec3n qu\u1ea3ng c\u00e1o", - "OptionCriticRating": "Critic Rating", - "OptionVideoBitrate": "T\u1ed1c \u0111\u1ed9 Bit c\u1ee7a Video", - "OptionResumable": "Resumable", - "ScheduledTasksHelp": "Click a task to adjust its schedule.", - "ScheduledTasksTitle": "Scheduled Tasks", - "TabMyPlugins": "C\u00e1c plugin c\u1ee7a t\u00f4i", - "TabCatalog": "Danh m\u1ee5c", - "TitlePlugins": "Plugins", - "HeaderAutomaticUpdates": "T\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt", - "HeaderNowPlaying": "Ph\u00e1t ngay b\u00e2y gi\u1edd", - "HeaderLatestAlbums": "C\u00e1c Album m\u1edbi nh\u1ea5t", - "HeaderLatestSongs": "C\u00e1c b\u00e0i h\u00e1t m\u1edbi nh\u1ea5t", - "HeaderRecentlyPlayed": "Ph\u00e1t g\u1ea7n \u0111\u00e2y", - "HeaderFrequentlyPlayed": "Ph\u00e1t th\u01b0\u1eddng xuy\u00ean", - "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", - "LabelVideoType": "Lo\u1ea1i Video:", - "OptionBluray": "Bluray", - "OptionDvd": "DVD", - "OptionIso": "Chu\u1ea9n qu\u1ed1c t\u1ebf", - "Option3D": "3D", - "LabelFeatures": "C\u00e1c t\u00ednh n\u0103ng:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Ph\u1ee5 \u0111\u1ec1", - "OptionHasTrailer": "Trailer", - "OptionHasThemeSong": "H\u00ecnh n\u1ec1n b\u00e0i h\u00e1t", - "OptionHasThemeVideo": "H\u00ecnh n\u1ec1n Video", - "TabMovies": "C\u00e1c phim", - "TabStudios": "H\u00e3ng phim", - "TabTrailers": "Trailers", - "LabelArtists": "Artists:", - "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Phim m\u1edbi nh\u1ea5t", - "HeaderLatestTrailers": "Latest Trailers", - "OptionHasSpecialFeatures": "T\u00ednh n\u0103ng \u0111\u1eb7c bi\u1ec7t", - "OptionImdbRating": "\u0110\u00e1nh gi\u00e1 IMDb", - "OptionParentalRating": "Parental Rating", - "OptionPremiereDate": "Premiere Date", - "TabBasic": "C\u01a1 b\u1ea3n", - "TabAdvanced": "Advanced", - "HeaderStatus": "Tr\u1ea1ng th\u00e1i", - "OptionContinuing": "Continuing", - "OptionEnded": "Ended", - "HeaderAirDays": "Air Days", - "OptionSunday": "Ch\u1ee7 Nh\u1eadt", - "OptionMonday": "Th\u1ee9 Hai", - "OptionTuesday": "Tuesday", - "OptionWednesday": "Wednesday", - "OptionThursday": "Thursday", - "OptionFriday": "Friday", - "OptionSaturday": "Th\u1ee9 B\u1ea3y", - "HeaderManagement": "Management", - "LabelManagement": "Management:", - "OptionMissingImdbId": "Thi\u1ebfu IMDb ID", - "OptionMissingTvdbId": "Missing TheTVDB Id", - "OptionMissingOverview": "Missing Overview", - "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", - "TabGeneral": "General", - "TitleSupport": "H\u1ed7 tr\u1ee3", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", - "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", - "SearchKnowledgeBase": "Search the Knowledge Base", - "VisitTheCommunity": "Visit the Community", - "VisitMediaBrowserWebsite": "Gh\u00e9 th\u0103m web site Media Browser", - "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", - "OptionHideUser": "\u1ea8n ng\u01b0\u1eddi d\u00f9ng n\u00e0y t\u1eeb m\u00e0n h\u00ecnh \u0111\u0103ng nh\u1eadp", - "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", - "OptionDisableUser": "V\u00f4 hi\u1ec7u h\u00f3a ng\u01b0\u1eddi d\u00f9ng n\u00e0y", - "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", - "HeaderAdvancedControl": "Advanced Control", - "LabelName": "T\u00ean:", - "ButtonHelp": "Help", "OptionAllowUserToManageServer": "Cho ph\u00e9p ng\u01b0\u1eddi d\u00f9ng n\u00e0y qu\u1ea3n l\u00fd m\u00e1y ch\u1ee7", "HeaderFeatureAccess": "Truy c\u1eadp t\u00ednh n\u0103ng", "OptionAllowMediaPlayback": "Allow media playback", @@ -917,6 +619,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +862,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1075,315 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "Tho\u00e1t", + "LabelVisitCommunity": "Gh\u00e9 th\u0103m trang C\u1ed9ng \u0111\u1ed3ng", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "Ti\u00eau chu\u1ea9n", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "Duy\u1ec7t th\u01b0 vi\u1ec7n", + "LabelConfigureMediaBrowser": "C\u1ea5u h\u00ecnh Media Browser", + "LabelOpenLibraryViewer": "Open Library Viewer", + "LabelRestartServer": "Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7", + "LabelShowLogWindow": "Show Log Window", + "LabelPrevious": "Tr\u01b0\u1edbc", + "LabelFinish": "K\u1ebft th\u00fac", + "LabelNext": "Ti\u1ebfp theo", + "LabelYoureDone": "B\u1ea1n \u0111\u00e3 ho\u00e0n th\u00e0nh!", + "WelcomeToMediaBrowser": "Ch\u00e0o m\u1eebng \u0111\u1ebfn B\u1ea1n \u0111\u1ebfn v\u1edbi Media Browser!", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "Th\u1ee7 thu\u1eadt n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t cho b\u1ea1n. \u0110\u1ec3 b\u1eaft \u0111\u1ea7u, vui l\u00f2ng l\u1ef1a ch\u1ecdn ng\u00f4n ng\u1eef b\u1ea1n \u01b0a th\u00edch.", + "TellUsAboutYourself": "N\u00f3i cho ch\u00fang t\u00f4i bi\u1ebft \u0111\u00f4i \u0111i\u1ec1u v\u1ec1 B\u1ea1n", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "T\u00ean c\u1ee7a B\u1ea1n", + "MoreUsersCanBeAddedLater": "More users can be added later within the Dashboard.", + "UserProfilesIntro": "Media Browser includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", + "LabelWindowsService": "D\u1ecbch v\u1ee5 c\u1ee7a Windows", + "AWindowsServiceHasBeenInstalled": "M\u1ed9t d\u1ecbch v\u1ee5 c\u1ee7a Windows \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t", + "WindowsServiceIntro1": "Media Browser Server ch\u1ea1y b\u00ecnh th\u01b0\u1eddng nh\u01b0 m\u1ed9t \u1ee9ng d\u1ee5ng m\u00e1y t\u00ednh v\u1edbi khay bi\u1ec3u t\u01b0\u1ee3ng, nh\u01b0ng n\u1ebfu b\u1ea1n th\u00edch \u0111\u1ec3 n\u00f3 ch\u1ea1y nh\u01b0 m\u1ed9t d\u1ecbch v\u1ee5 n\u1ec1n, n\u00f3 c\u00f3t h\u1ec3 kh\u1edfi \u0111\u1ed9ng c\u00f9ng c\u00e1c d\u1ecbch v\u1ee5 c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh windows", + "WindowsServiceIntro2": "If using the windows service, please note that it cannot be run at the same time as the tray icon, so you'll need to exit the tray in order to run the service. The service will also need to be configured with administrative privileges via the control panel. Please note that at this time the service is unable to self-update, so new versions will require manual interaction.", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "C\u00e0i \u0111\u1eb7t c\u1ea5u h\u00ecnh", + "LabelEnableVideoImageExtraction": "Enable video image extraction", + "VideoImageExtractionHelp": "\u0110\u1ed1i v\u1edbi c\u00e1c video kh\u00f4ng c\u00f3 s\u1eb5n h\u00ecnh \u1ea3nh v\u00e0 ch\u00fang ta kh\u00f4ng t\u00ecm th\u1ea5y c\u00e1c h\u00ecnh \u1ea3nh \u0111\u00f3 tr\u00ean internet. \u0110i\u1ec1u n\u00e0y s\u1ebd", + "LabelEnableChapterImageExtractionForMovies": "Extract chapter image extraction for Movies", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "Cho ph\u00e9p t\u1ef1 \u0111\u1ed9ng \u00e1nh x\u1ea1 c\u1ed5ng (port)", + "LabelEnableAutomaticPortMappingHelp": "UPnP allows automated router configuration for easy remote access. This may not work with some router models.", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "Ok", + "ButtonCancel": "Tho\u00e1t", + "ButtonExit": "Exit", + "ButtonNew": "M\u1edbi", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "C\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n media c\u1ee7a b\u1ea1n", + "ButtonAddMediaFolder": "Th\u00eam m\u1ed9t th\u01b0 m\u1ee5c media", + "LabelFolderType": "Lo\u1ea1i th\u01b0 m\u1ee5c", + "ReferToMediaLibraryWiki": "Tham kh\u1ea3o th\u01b0 vi\u1ec7n wiki media.", + "LabelCountry": "Qu\u1ed1c gia:", + "LabelLanguage": "Ng\u00f4n ng\u1eef", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "Ng\u00f4n ng\u1eef metadata \u01b0a th\u00edch", + "LabelSaveLocalMetadata": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media", + "LabelSaveLocalMetadataHelp": "L\u01b0u c\u00e1c \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata v\u00e0o trong c\u00e1c th\u01b0 m\u1ee5c media, s\u1ebd \u0111\u01b0a ch\u00fang v\u00e0o m\u1ed9t n\u01a1i b\u1ea1n c\u00f3 th\u1ec3 ch\u1ec9nh s\u1eeda d\u1ec5 d\u00e0ng h\u01a1n.", + "LabelDownloadInternetMetadata": "T\u1ea3i \u1ea3nh ngh\u1ec7 thu\u1eadt v\u00e0 metadata t\u1eeb internet", + "LabelDownloadInternetMetadataHelp": "Media Browser c\u00f3 th\u1ec3 t\u1ea3i th\u00f4ng tin v\u1ec1 media c\u1ee7a b\u1ea1n \u0111\u1ec3 cho ph\u00e9p tr\u00ecnh di\u1ec5n ch\u00fang m\u1ed9t c\u00e1ch phong ph\u00faho\u01a1n", + "TabPreferences": "\u01afa th\u00edch", + "TabPassword": "M\u1eadt kh\u1ea9u", + "TabLibraryAccess": "Truy c\u1eadp th\u01b0 vi\u1ec7n", + "TabAccess": "Access", + "TabImage": "H\u00ecnh \u1ea3nh", + "TabProfile": "H\u1ed3 s\u01a1", + "TabMetadata": "Metadata", + "TabImages": "H\u00ecnh \u1ea3nh", + "TabNotifications": "Notifications", + "TabCollectionTitles": "Ti\u00eau \u0111\u1ec1", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", + "LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within seasons", + "HeaderVideoPlaybackSettings": "C\u00e1c c\u00e0i \u0111\u1eb7t ph\u00e1t Video", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "Ng\u00f4n ng\u1eef tho\u1ea1i \u01b0a th\u00edch:", + "LabelSubtitleLanguagePreference": "Ng\u00f4n ng\u1eef ph\u1ee5 \u0111\u1ec1 \u01b0a th\u00edch:", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "H\u1ed3 s\u01a1", + "TabSecurity": "B\u1ea3o m\u1eadt", + "ButtonAddUser": "Th\u00eam ng\u01b0\u1eddi d\u00f9ng", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "L\u01b0u", + "ButtonResetPassword": "Reset m\u1eadt kh\u1ea9u", + "LabelNewPassword": "M\u1eadt kh\u1ea9u m\u1edbi:", + "LabelNewPasswordConfirm": "X\u00e1c nh\u1eadn m\u1eadt kh\u1ea9u m\u1edbi:", + "HeaderCreatePassword": "T\u1ea1o m\u1eadt kh\u1ea9u", + "LabelCurrentPassword": "M\u1eadt kh\u1ea9u hi\u1ec7n t\u1ea1i:", + "LabelMaxParentalRating": "Maximum allowed parental rating:", + "MaxParentalRatingHelp": "N\u1ed9i dung v\u1edbi \u0111\u00e1nh gi\u00e1 cao h\u01a1n s\u1ebd \u0111\u01b0\u1ee3c \u1ea9n \u0111i t\u1eeb ng\u01b0\u1eddi d\u00f9ng n\u00e0y.", + "LibraryAccessHelp": "Select the media folders to share with this user. Administrators will be able to edit all folders using the metadata manager.", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "X\u00f3a h\u00ecnh \u1ea3nh", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "T\u1ea3i l\u00ean", + "HeaderUploadNewImage": "T\u1ea3i l\u00ean m\u1ed9t \u1ea3nh m\u1edbi", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "1:1 Aspect Ratio Recommended. JPG\/PNG only.", + "MessageNothingHere": "Kh\u00f4ng c\u00f3 g\u00ec \u1edf \u0111\u00e2y.", + "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", + "TabSuggested": "Suggested", + "TabLatest": "M\u1edbi nh\u1ea5t", + "TabUpcoming": "S\u1eafp di\u1ec5n ra", + "TabShows": "Shows", + "TabEpisodes": "C\u00e1c t\u1eadp phim", + "TabGenres": "C\u00e1c th\u1ec3 lo\u1ea1i", + "TabPeople": "M\u1ecdi ng\u01b0\u1eddi", + "TabNetworks": "C\u00e1c m\u1ea1ng", + "HeaderUsers": "d\u00f9ng", + "HeaderFilters": "Filters:", + "ButtonFilter": "Filter", + "OptionFavorite": "Y\u00eau th\u00edch", + "OptionLikes": "Th\u00edch", + "OptionDislikes": "Kh\u00f4ng th\u00edch", + "OptionActors": "Di\u1ec5n vi\u00ean", + "OptionGuestStars": "Guest Stars", + "OptionDirectors": "\u0110\u1ea1o di\u1ec5n", + "OptionWriters": "K\u1ecbch b\u1ea3n", + "OptionProducers": "Nh\u00e0 s\u1ea3n xu\u1ea5t", + "HeaderResume": "S\u01a1 y\u1ebfu l\u00fd l\u1ecbch", + "HeaderNextUp": "Next Up", + "NoNextUpItemsMessage": "None found. Start watching your shows!", + "HeaderLatestEpisodes": "C\u00e1c t\u1eadp phim m\u1edbi nh\u1ea5t", + "HeaderPersonTypes": "Person Types:", + "TabSongs": "C\u00e1c ca kh\u00fac", + "TabAlbums": "C\u00e1c Album", + "TabArtists": "C\u00e1c ngh\u1ec7 s\u1ef9", + "TabAlbumArtists": "C\u00e1c Album ngh\u1ec7 s\u1ef9", + "TabMusicVideos": "C\u00e1c video \u00e2m nh\u1ea1c", + "ButtonSort": "Ph\u00e2n lo\u1ea1i", + "HeaderSortBy": "Ph\u00e2n lo\u1ea1i theo:", + "HeaderSortOrder": "Ph\u00e2n lo\u1ea1i theo th\u1ee9 t\u1ef1:", + "OptionPlayed": "Played", + "OptionUnplayed": "Unplayed", + "OptionAscending": "Ascending", + "OptionDescending": "Descending", + "OptionRuntime": "Th\u1eddi gian ph\u00e1t", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "S\u1ed1 l\u1ea7n ph\u00e1t", + "OptionDatePlayed": "Ng\u00e0y ph\u00e1t", + "OptionDateAdded": "Ng\u00e0y th\u00eam", + "OptionAlbumArtist": "Album ngh\u1ec7 s\u1ef9", + "OptionArtist": "Ngh\u1ec7 s\u1ef9", + "OptionAlbum": "Album", + "OptionTrackName": "T\u00ean b\u00e0i", + "OptionCommunityRating": "\u0110\u00e1nh gi\u00e1 c\u1ee7a c\u1ed9ng \u0111\u1ed3ng", + "OptionNameSort": "T\u00ean", + "OptionFolderSort": "Folders", + "OptionBudget": "Ng\u00e2n s\u00e1ch", + "OptionRevenue": "Doanh thu", + "OptionPoster": "\u00c1p ph\u00edch", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "Backdrop", + "OptionTimeline": "D\u00f2ng th\u1eddi gian", + "OptionThumb": "Thumb", + "OptionThumbCard": "Thumb card", + "OptionBanner": "Bi\u1ec3n qu\u1ea3ng c\u00e1o", + "OptionCriticRating": "Critic Rating", + "OptionVideoBitrate": "T\u1ed1c \u0111\u1ed9 Bit c\u1ee7a Video", + "OptionResumable": "Resumable", + "ScheduledTasksHelp": "Click a task to adjust its schedule.", + "ScheduledTasksTitle": "Scheduled Tasks", + "TabMyPlugins": "C\u00e1c plugin c\u1ee7a t\u00f4i", + "TabCatalog": "Danh m\u1ee5c", + "TitlePlugins": "Plugins", + "HeaderAutomaticUpdates": "T\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt", + "HeaderNowPlaying": "Ph\u00e1t ngay b\u00e2y gi\u1edd", + "HeaderLatestAlbums": "C\u00e1c Album m\u1edbi nh\u1ea5t", + "HeaderLatestSongs": "C\u00e1c b\u00e0i h\u00e1t m\u1edbi nh\u1ea5t", + "HeaderRecentlyPlayed": "Ph\u00e1t g\u1ea7n \u0111\u00e2y", + "HeaderFrequentlyPlayed": "Ph\u00e1t th\u01b0\u1eddng xuy\u00ean", + "DevBuildWarning": "Dev builds are the bleeding edge. Released often, these build have not been tested. The application may crash and entire features may not work at all.", + "LabelVideoType": "Lo\u1ea1i Video:", + "OptionBluray": "Bluray", + "OptionDvd": "DVD", + "OptionIso": "Chu\u1ea9n qu\u1ed1c t\u1ebf", + "Option3D": "3D", + "LabelFeatures": "C\u00e1c t\u00ednh n\u0103ng:", + "LabelService": "Service:", + "LabelStatus": "Status:", + "LabelVersion": "Version:", + "LabelLastResult": "Last result:", + "OptionHasSubtitles": "Ph\u1ee5 \u0111\u1ec1", + "OptionHasTrailer": "Trailer", + "OptionHasThemeSong": "H\u00ecnh n\u1ec1n b\u00e0i h\u00e1t", + "OptionHasThemeVideo": "H\u00ecnh n\u1ec1n Video", + "TabMovies": "C\u00e1c phim", + "TabStudios": "H\u00e3ng phim", + "TabTrailers": "Trailers", + "LabelArtists": "Artists:", + "LabelArtistsHelp": "Separate multiple using ;", + "HeaderLatestMovies": "Phim m\u1edbi nh\u1ea5t", + "HeaderLatestTrailers": "Latest Trailers", + "OptionHasSpecialFeatures": "T\u00ednh n\u0103ng \u0111\u1eb7c bi\u1ec7t", + "OptionImdbRating": "\u0110\u00e1nh gi\u00e1 IMDb", + "OptionParentalRating": "Parental Rating", + "OptionPremiereDate": "Premiere Date", + "TabBasic": "C\u01a1 b\u1ea3n", + "TabAdvanced": "Advanced", + "HeaderStatus": "Tr\u1ea1ng th\u00e1i", + "OptionContinuing": "Continuing", + "OptionEnded": "Ended", + "HeaderAirDays": "Air Days", + "OptionSunday": "Ch\u1ee7 Nh\u1eadt", + "OptionMonday": "Th\u1ee9 Hai", + "OptionTuesday": "Tuesday", + "OptionWednesday": "Wednesday", + "OptionThursday": "Thursday", + "OptionFriday": "Friday", + "OptionSaturday": "Th\u1ee9 B\u1ea3y", + "HeaderManagement": "Management", + "LabelManagement": "Management:", + "OptionMissingImdbId": "Thi\u1ebfu IMDb ID", + "OptionMissingTvdbId": "Missing TheTVDB Id", + "OptionMissingOverview": "Missing Overview", + "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", + "TabGeneral": "General", + "TitleSupport": "H\u1ed7 tr\u1ee3", + "TabLog": "Log", + "TabAbout": "About", + "TabSupporterKey": "Supporter Key", + "TabBecomeSupporter": "Become a Supporter", + "MediaBrowserHasCommunity": "Media Browser has a thriving community of users and contributors.", + "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Media Browser.", + "SearchKnowledgeBase": "Search the Knowledge Base", + "VisitTheCommunity": "Visit the Community", + "VisitMediaBrowserWebsite": "Gh\u00e9 th\u0103m web site Media Browser", + "VisitMediaBrowserWebsiteLong": "Visit the Media Browser Web site to catch the latest news and keep up with the developer blog.", + "OptionHideUser": "\u1ea8n ng\u01b0\u1eddi d\u00f9ng n\u00e0y t\u1eeb m\u00e0n h\u00ecnh \u0111\u0103ng nh\u1eadp", + "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", + "OptionDisableUser": "V\u00f4 hi\u1ec7u h\u00f3a ng\u01b0\u1eddi d\u00f9ng n\u00e0y", + "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", + "HeaderAdvancedControl": "Advanced Control", + "LabelName": "T\u00ean:", + "ButtonHelp": "Help" } \ 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 88486d543..5796f60d2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json @@ -1,226 +1,4 @@ { - "LabelExit": "\u9000\u51fa", - "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u6807\u51c6", - "LabelApiDocumentation": "API\u6587\u6863", - "LabelDeveloperResources": "\u5f00\u53d1\u8d44\u6e90", - "LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93", - "LabelConfigureMediaBrowser": "\u914d\u7f6e Media Browser", - "LabelOpenLibraryViewer": "\u6253\u5f00\u5a92\u4f53\u5e93\u6d4f\u89c8\u5668", - "LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668", - "LabelShowLogWindow": "\u663e\u793a\u65e5\u5fd7\u7a97\u53e3", - "LabelPrevious": "\u4e0a\u4e00\u4e2a", - "LabelFinish": "\u5b8c\u6210", - "LabelNext": "\u4e0b\u4e00\u4e2a", - "LabelYoureDone": "\u5b8c\u6210\uff01", - "WelcomeToMediaBrowser": "\u6b22\u8fce\u4f7f\u7528 Media Browser\uff01", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "\u8be5\u5411\u5bfc\u5c06\u6307\u5bfc\u4f60\u5b8c\u6210\u5b89\u88c5\u8fc7\u7a0b\u3002\u9996\u5148\uff0c\u8bf7\u9009\u62e9\u4f60\u7684\u9996\u9009\u8bed\u8a00\u3002", - "TellUsAboutYourself": "\u8bf7\u4ecb\u7ecd\u4e00\u4e0b\u4f60\u81ea\u5df1", - "ButtonQuickStartGuide": "\u5feb\u901f\u5165\u95e8\u6307\u5357", - "LabelYourFirstName": "\u4f60\u7684\u540d\u5b57\uff1a", - "MoreUsersCanBeAddedLater": "\u7a0d\u540e\u5728\u63a7\u5236\u53f0\u4e2d\u53ef\u4ee5\u6dfb\u52a0\u66f4\u591a\u7528\u6237\u3002", - "UserProfilesIntro": "Media Browser \u652f\u6301\u591a\u4e2a\u7528\u6237\u8bbe\u5b9a\uff0c\u80fd\u4f7f\u6bcf\u4e2a\u7528\u6237\u90fd\u62e5\u6709\u81ea\u5df1\u4e13\u5c5e\u7684\u663e\u793a\u8bbe\u7f6e\uff0c\u64ad\u653e\u72b6\u6001\u548c\u5bb6\u957f\u63a7\u5236\u8bbe\u7f6e\u3002", - "LabelWindowsService": "Windows \u670d\u52a1", - "AWindowsServiceHasBeenInstalled": "Windows \u670d\u52a1\u5b89\u88c5\u5b8c\u6210", - "WindowsServiceIntro1": "Media Browser \u670d\u52a1\u5668\u901a\u5e38\u4ee5\u6258\u76d8\u56fe\u6807\u7684\u5f62\u5f0f\u4ee5\u684c\u9762\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\uff0c\u4f46\u5982\u679c\u4f60\u559c\u6b22\u5b83\u4f5c\u4e3a\u540e\u53f0\u670d\u52a1\u8fd0\u884c\uff0c\u5b83\u53ef\u4ee5\u4ece Windows \u63a7\u5236\u9762\u677f\u542f\u52a8\u3002", - "WindowsServiceIntro2": "\u5982\u679c\u4f7f\u7528Windows\u670d\u52a1\uff0c\u8bf7\u6ce8\u610f\uff0c\u5b83\u4e0d\u80fd\u540c\u65f6\u4e3a\u6258\u76d8\u56fe\u6807\u8fd0\u884c\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u9000\u51fa\u6258\u76d8\u4ee5\u8fd0\u884c\u670d\u52a1\u3002\u8be5\u670d\u52a1\u8fd8\u5c06\u9700\u8981\u7ba1\u7406\u5458\u6743\u9650\uff0c\u8be5\u6743\u9650\u53ef\u4ee5\u901a\u8fc7\u63a7\u5236\u9762\u677f\u914d\u7f6e\u3002\u8bf7\u6ce8\u610f\uff0c\u6b64\u65f6\u670d\u52a1\u65e0\u6cd5\u81ea\u52a8\u66f4\u65b0\uff0c\u6240\u4ee5\u65b0\u7684\u7248\u672c\u5c06\u9700\u8981\u624b\u52a8\u66f4\u65b0\u3002", - "WizardCompleted": "\u8fd9\u5c31\u662f\u6211\u4eec\u73b0\u5728\u9700\u8981\u7684\u3002Media Browser\u5df2\u7ecf\u5f00\u59cb\u6536\u96c6\u60a8\u7684\u5a92\u4f53\u5e93\u4fe1\u606f\u3002\u68c0\u67e5\u6211\u4eec\u7684\u5e94\u7528\u7a0b\u5e8f, \u7136\u540e\u70b9\u51fb \u5b8c\u6210<\/b>\u6765\u67e5\u770b \u670d\u52a1\u5668\u63a7\u5236\u9762\u677f<\/b>\u3002", - "LabelConfigureSettings": "\u914d\u7f6e\u8bbe\u7f6e", - "LabelEnableVideoImageExtraction": "\u542f\u7528\u89c6\u9891\u622a\u56fe\u529f\u80fd", - "VideoImageExtractionHelp": "\u5bf9\u4e8e\u8fd8\u6ca1\u6709\u56fe\u7247\uff0c\u4ee5\u53ca\u6211\u4eec\u65e0\u6cd5\u627e\u5230\u7f51\u7edc\u56fe\u7247\u7684\u89c6\u9891\u3002\u8fd9\u4f1a\u989d\u5916\u589e\u52a0\u4e00\u4e9b\u521d\u59cb\u5316\u5a92\u4f53\u5e93\u7684\u626b\u63cf\u65f6\u95f4\uff0c\u4f46\u4f1a\u4f7f\u5a92\u4f53\u4ecb\u7ecd\u754c\u9762\u66f4\u52a0\u8d4f\u5fc3\u60a6\u76ee\u3002", - "LabelEnableChapterImageExtractionForMovies": "\u622a\u53d6\u7535\u5f71\u7ae0\u8282\u56fe\u7247", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u542f\u7528\u81ea\u52a8\u7aef\u53e3\u6620\u5c04", - "LabelEnableAutomaticPortMappingHelp": "UPNP\u5141\u8bb8\u81ea\u52a8\u8def\u7531\u5668\u914d\u7f6e\uff0c\u4ece\u800c\u66f4\u65b9\u4fbf\u7684\u8fdb\u884c\u8fdc\u7a0b\u8bbf\u95ee\u3002\u4f46\u8fd9\u53ef\u80fd\u4e0d\u9002\u7528\u4e8e\u67d0\u4e9b\u578b\u53f7\u7684\u8def\u7531\u5668\u3002", - "HeaderTermsOfService": "Media Browser\u670d\u52a1\u6761\u6b3e", - "MessagePleaseAcceptTermsOfService": "\u7ee7\u7eed\u4e4b\u524d\u8bf7\u63a5\u53d7\u670d\u52a1\u548c\u9690\u79c1\u653f\u7b56\u6761\u6b3e\u3002", - "OptionIAcceptTermsOfService": "\u6211\u63a5\u53d7\u670d\u52a1\u6761\u6b3e", - "ButtonPrivacyPolicy": "\u9690\u79c1\u653f\u7b56", - "ButtonTermsOfService": "\u670d\u52a1\u6761\u6b3e", - "HeaderDeveloperOptions": "\u5f00\u53d1\u4eba\u5458\u9009\u9879", - "OptionEnableWebClientResponseCache": "\u542f\u7528Web\u5ba2\u6237\u7aef\u7f13\u5b58\u54cd\u5e94", - "OptionDisableForDevelopmentHelp": "\u6839\u636e\u5bf9Web\u5ba2\u6237\u7aef\u7684\u5f00\u53d1\u7684\u9700\u8981\u6765\u914d\u7f6e\u8fd9\u4e9b\u9879\u76ee\u3002", - "OptionEnableWebClientResourceMinification": "\u542f\u7528Web\u5ba2\u6237\u7aef\u8d44\u6e90\u6700\u5c0f\u5316", - "LabelDashboardSourcePath": "Web\u5ba2\u6237\u7aef\u6e90\u8def\u5f84\uff1a", - "LabelDashboardSourcePathHelp": "\u5982\u679c\u4ece\u6e90\u8fd0\u884c\u670d\u52a1\u5668\uff0c\u8bf7\u6307\u5b9a\u63a7\u5236\u53f0UI\u6587\u4ef6\u5939\u8def\u5f84\u3002\u8fd9\u4e2a\u6587\u4ef6\u5939\u5c06\u63d0\u4f9bWeb\u5ba2\u6237\u7aef\u7684\u6240\u6709\u6587\u4ef6\u3002", - "ButtonConvertMedia": "\u5a92\u4f53\u8f6c\u6362", - "ButtonOrganize": "\u6574\u7406", - "LabelPinCode": "Pin code:", - "ButtonOk": "\u786e\u5b9a", - "ButtonCancel": "\u53d6\u6d88", - "ButtonExit": "Exit", - "ButtonNew": "\u65b0\u589e", - "HeaderTV": "\u7535\u89c6", - "HeaderAudio": "\u97f3\u9891", - "HeaderVideo": "\u89c6\u9891", - "HeaderPaths": "\u8def\u5f84", - "CategorySync": "\u540c\u6b65", - "HeaderEasyPinCode": "\u7b80\u6613Pin\u7801", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "\u6ce8\u518cPayPal", - "HeaderSyncRequiresSupporterMembership": "\u540c\u6b65\u9700\u8981\u652f\u6301\u8005\u4f1a\u5458", - "HeaderEnjoyDayTrial": "\u4eab\u53d714\u5929\u514d\u8d39\u8bd5\u7528", - "LabelSyncTempPath": "\u4e34\u65f6\u6587\u4ef6\u8def\u5f84\uff1a", - "LabelSyncTempPathHelp": "\u6307\u5b9a\u540c\u6b65\u65f6\u7684\u5de5\u4f5c\u6587\u4ef6\u5939\u3002\u5728\u540c\u6b65\u8fc7\u7a0b\u4e2d\u521b\u5efa\u7684\u8f6c\u6362\u5a92\u4f53\u6587\u4ef6\u5c06\u88ab\u5b58\u653e\u5728\u8fd9\u91cc\u3002", - "LabelCustomCertificatePath": "\u81ea\u5b9a\u4e49\u8bc1\u4e66\u8def\u5f84\uff1a", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "\u901a\u77e5", - "ButtonDonateWithPayPal": "\u901a\u8fc7PayPal\u6350\u8d60", - "OptionDetectArchiveFilesAsMedia": "\u628a\u538b\u7f29\u6587\u4ef6\u4f5c\u4e3a\u5a92\u4f53\u6587\u4ef6\u68c0\u6d4b", - "OptionDetectArchiveFilesAsMediaHelp": "\u5982\u679c\u542f\u7528\uff0c\u4e0e.RAR\u548c.zip\u6269\u5c55\u540d\u7684\u6587\u4ef6\u5c06\u88ab\u68c0\u6d4b\u4e3a\u5a92\u4f53\u6587\u4ef6\u3002", - "LabelEnterConnectUserName": "\u7528\u6237\u540d\u6216\u7535\u5b50\u90ae\u4ef6\uff1a", - "LabelEnterConnectUserNameHelp": "\u8fd9\u662f\u4f60\u7684Media Browser\u5728\u7ebf\u5e10\u6237\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u3002", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "\u540c\u6b65\u4f5c\u4e1a", - "FolderTypeMixed": "\u6df7\u5408\u5185\u5bb9", - "FolderTypeMovies": "\u7535\u5f71", - "FolderTypeMusic": "\u97f3\u4e50", - "FolderTypeAdultVideos": "\u6210\u4eba\u89c6\u9891", - "FolderTypePhotos": "\u56fe\u7247", - "FolderTypeMusicVideos": "\u97f3\u4e50\u89c6\u9891", - "FolderTypeHomeVideos": "\u5bb6\u5ead\u89c6\u9891", - "FolderTypeGames": "\u6e38\u620f", - "FolderTypeBooks": "\u4e66\u7c4d", - "FolderTypeTvShows": "\u7535\u89c6", - "FolderTypeInherit": "\u7ee7\u627f", - "LabelContentType": "\u5185\u5bb9\u7c7b\u578b", - "TitleScheduledTasks": "\u8ba1\u5212\u4efb\u52a1", - "HeaderSetupLibrary": "\u8bbe\u7f6e\u4f60\u7684\u5a92\u4f53\u5e93", - "ButtonAddMediaFolder": "\u6dfb\u52a0\u5a92\u4f53\u6587\u4ef6\u5939", - "LabelFolderType": "\u6587\u4ef6\u5939\u7c7b\u578b\uff1a", - "ReferToMediaLibraryWiki": "\u8bf7\u53c2\u9605\u5a92\u4f53\u5e93\u7ef4\u57fa\u3002", - "LabelCountry": "\u56fd\u5bb6\uff1a", - "LabelLanguage": "\u8bed\u8a00\uff1a", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "\u52a0\u5165\u5f00\u53d1\u56e2\u961f", - "HeaderPreferredMetadataLanguage": "\u9996\u9009\u5a92\u4f53\u8d44\u6599\u8bed\u8a00\uff1a", - "LabelSaveLocalMetadata": "\u4fdd\u5b58\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599\u5230\u5a92\u4f53\u6240\u5728\u6587\u4ef6\u5939", - "LabelSaveLocalMetadataHelp": "\u76f4\u63a5\u4fdd\u5b58\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599\u5230\u5a92\u4f53\u6240\u5728\u6587\u4ef6\u5939\u4ee5\u65b9\u4fbf\u7f16\u8f91\u3002", - "LabelDownloadInternetMetadata": "\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599", - "LabelDownloadInternetMetadataHelp": "Media Browser\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u548c\u4f60\u5a92\u4f53\u76f8\u5173\u7684\u4fe1\u606f\uff0c\u4ece\u800c\u5c55\u73b0\u7f24\u7eb7\u7684\u754c\u9762\u3002", - "TabPreferences": "\u504f\u597d", - "TabPassword": "\u5bc6\u7801", - "TabLibraryAccess": "\u5a92\u4f53\u5e93\u8bbf\u95ee\u6743\u9650", - "TabAccess": "\u8bbf\u95ee", - "TabImage": "\u56fe\u7247", - "TabProfile": "\u4e2a\u4eba\u914d\u7f6e", - "TabMetadata": "\u5a92\u4f53\u8d44\u6599", - "TabImages": "\u56fe\u50cf", - "TabNotifications": "\u901a\u77e5", - "TabCollectionTitles": "\u6807\u9898", - "HeaderDeviceAccess": "\u8bbe\u5907\u8bbf\u95ee", - "OptionEnableAccessFromAllDevices": "\u542f\u7528\u6240\u6709\u8bbe\u5907\u53ef\u4ee5\u8bbf\u95ee", - "OptionEnableAccessToAllChannels": "\u542f\u7528\u6240\u6709\u9891\u9053\u53ef\u4ee5\u8bbf\u95ee", - "OptionEnableAccessToAllLibraries": "\u542f\u7528\u6240\u6709\u5a92\u4f53\u5e93\u53ef\u4ee5\u8bbf\u95ee", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u7f3a\u5c11\u7684\u5267\u96c6", - "LabelUnairedMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u672a\u53d1\u5e03\u7684\u5267\u96c6", - "HeaderVideoPlaybackSettings": "\u89c6\u9891\u56de\u653e\u8bbe\u7f6e", - "HeaderPlaybackSettings": "\u64ad\u653e\u8bbe\u7f6e", - "LabelAudioLanguagePreference": "\u97f3\u9891\u8bed\u8a00\u504f\u597d\u8bbe\u7f6e", - "LabelSubtitleLanguagePreference": "\u5b57\u5e55\u8bed\u8a00\u504f\u597d\u8bbe\u7f6e", - "OptionDefaultSubtitles": "\u9ed8\u8ba4", - "OptionOnlyForcedSubtitles": "\u4ec5\u7528\u5f3a\u5236\u5b57\u5e55", - "OptionAlwaysPlaySubtitles": "\u603b\u662f\u64ad\u653e\u5b57\u5e55", - "OptionNoSubtitles": "\u65e0\u5b57\u5e55", - "OptionDefaultSubtitlesHelp": "\u5339\u914d\u5b57\u5e55\u8bed\u8a00\u504f\u597d\uff0c\u5f53\u97f3\u9891\u662f\u5916\u8bed\u65f6\u5b57\u5e55\u5c06\u88ab\u52a0\u8f7d\u3002", - "OptionOnlyForcedSubtitlesHelp": "\u53ea\u6709\u5b57\u5e55\u6807\u8bb0\u4e3a\u5f3a\u5236\u5c06\u88ab\u52a0\u8f7d\u3002", - "OptionAlwaysPlaySubtitlesHelp": "\u5339\u914d\u5b57\u5e55\u8bed\u8a00\u504f\u597d\uff0c\u65e0\u8bba\u97f3\u9891\u662f\u4ec0\u4e48\u8bed\u5b57\u5e55\u90fd\u5c06\u88ab\u52a0\u8f7d\u3002", - "OptionNoSubtitlesHelp": "\u5b57\u5e55\u5c06\u4e0d\u4f1a\u88ab\u9ed8\u8ba4\u52a0\u8f7d\u3002", - "TabProfiles": "\u914d\u7f6e", - "TabSecurity": "\u5b89\u5168\u6027", - "ButtonAddUser": "\u6dfb\u52a0\u7528\u6237", - "ButtonAddLocalUser": "\u6dfb\u52a0\u672c\u5730\u7528\u6237", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u50a8\u5b58", - "ButtonResetPassword": "\u91cd\u7f6e\u5bc6\u7801", - "LabelNewPassword": "\u65b0\u5bc6\u7801\uff1a", - "LabelNewPasswordConfirm": "\u65b0\u5bc6\u7801\u786e\u8ba4\uff1a", - "HeaderCreatePassword": "\u521b\u5efa\u5bc6\u7801", - "LabelCurrentPassword": "\u5f53\u524d\u5bc6\u7801\u3002", - "LabelMaxParentalRating": "\u6700\u5927\u5141\u8bb8\u7684\u5bb6\u957f\u8bc4\u7ea7\uff1a", - "MaxParentalRatingHelp": "\u9ad8\u7ea7\u522b\u5185\u5bb9\u5c06\u5bf9\u6b64\u7528\u6237\u9690\u85cf\u3002", - "LibraryAccessHelp": "\u9009\u62e9\u5171\u4eab\u7ed9\u6b64\u7528\u6237\u7684\u5a92\u4f53\u6587\u4ef6\u5939\u3002\u7ba1\u7406\u5458\u80fd\u4f7f\u7528\u5a92\u4f53\u8d44\u6599\u7ba1\u7406\u5668\u6765\u7f16\u8f91\u6240\u6709\u6587\u4ef6\u5939\u3002", - "ChannelAccessHelp": "\u9009\u62e9\u5171\u4eab\u7ed9\u6b64\u7528\u6237\u7684\u9891\u9053\u3002\u7ba1\u7406\u5458\u80fd\u4f7f\u7528\u5a92\u4f53\u8d44\u6599\u7ba1\u7406\u5668\u6765\u7f16\u8f91\u6240\u6709\u9891\u9053\u3002", - "ButtonDeleteImage": "\u5220\u9664\u56fe\u7247", - "LabelSelectUsers": "\u9009\u62e9\u7528\u6237\uff1a", - "ButtonUpload": "\u4e0a\u8f7d", - "HeaderUploadNewImage": "\u4e0a\u8f7d\u65b0\u56fe\u7247", - "LabelDropImageHere": "\u628a\u56fe\u7247\u62d6\u5230\u8fd9\u513f", - "ImageUploadAspectRatioHelp": "\u63a8\u8350\u4f7f\u7528\u957f\u5bbd\u6bd41:1\u7684\u56fe\u7247\u3002 \u683c\u5f0f\u4ec5\u9650JPG \/ PNG\u3002", - "MessageNothingHere": "\u8fd9\u513f\u4ec0\u4e48\u90fd\u6ca1\u6709\u3002", - "MessagePleaseEnsureInternetMetadata": "\u8bf7\u786e\u4fdd\u5df2\u542f\u7528\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u5a92\u4f53\u8d44\u6599\u3002", - "TabSuggested": "\u5efa\u8bae", - "TabLatest": "\u6700\u65b0", - "TabUpcoming": "\u5373\u5c06\u53d1\u5e03", - "TabShows": "\u8282\u76ee", - "TabEpisodes": "\u5267\u96c6", - "TabGenres": "\u98ce\u683c", - "TabPeople": "\u4eba\u7269", - "TabNetworks": "\u7f51\u7edc", - "HeaderUsers": "\u7528\u6237", - "HeaderFilters": "\u7b5b\u9009\uff1a", - "ButtonFilter": "\u7b5b\u9009", - "OptionFavorite": "\u6211\u7684\u6700\u7231", - "OptionLikes": "\u559c\u6b22", - "OptionDislikes": "\u4e0d\u559c\u6b22", - "OptionActors": "\u6f14\u5458", - "OptionGuestStars": "\u7279\u9080\u660e\u661f", - "OptionDirectors": "\u5bfc\u6f14", - "OptionWriters": "\u7f16\u5267", - "OptionProducers": "\u5236\u7247\u4eba", - "HeaderResume": "\u6062\u590d\u64ad\u653e", - "HeaderNextUp": "\u4e0b\u4e00\u96c6", - "NoNextUpItemsMessage": "\u6ca1\u6709\u53d1\u73b0\u3002\u5f00\u59cb\u770b\u4f60\u7684\u8282\u76ee\uff01", - "HeaderLatestEpisodes": "\u6700\u65b0\u5267\u96c6", - "HeaderPersonTypes": "\u4eba\u7269\u7c7b\u578b\uff1a", - "TabSongs": "\u6b4c\u66f2", - "TabAlbums": "\u4e13\u8f91", - "TabArtists": "\u827a\u672f\u5bb6", - "TabAlbumArtists": "\u4e13\u8f91\u827a\u672f\u5bb6", - "TabMusicVideos": "\u97f3\u4e50\u89c6\u9891", - "ButtonSort": "\u6392\u5e8f", - "HeaderSortBy": "\u6392\u5e8f\u65b9\u5f0f\uff1a", - "HeaderSortOrder": "\u6392\u5e8f\u987a\u5e8f\uff1a", - "OptionPlayed": "\u5df2\u64ad\u653e", - "OptionUnplayed": "\u672a\u64ad\u653e", - "OptionAscending": "\u5347\u5e8f", - "OptionDescending": "\u964d\u5e8f", - "OptionRuntime": "\u64ad\u653e\u65f6\u95f4", - "OptionReleaseDate": "\u53d1\u884c\u65e5\u671f", - "OptionPlayCount": "\u64ad\u653e\u6b21\u6570", - "OptionDatePlayed": "\u64ad\u653e\u65e5\u671f", - "OptionDateAdded": "\u52a0\u5165\u65e5\u671f", - "OptionAlbumArtist": "\u4e13\u8f91\u827a\u672f\u5bb6", - "OptionArtist": "\u827a\u672f\u5bb6", - "OptionAlbum": "\u4e13\u8f91", - "OptionTrackName": "\u66f2\u76ee\u540d\u79f0", - "OptionCommunityRating": "\u516c\u4f17\u8bc4\u5206", - "OptionNameSort": "\u540d\u5b57", - "OptionFolderSort": "\u6587\u4ef6\u5939", - "OptionBudget": "\u9884\u7b97", - "OptionRevenue": "\u6536\u5165", - "OptionPoster": "\u6d77\u62a5", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "\u80cc\u666f", - "OptionTimeline": "\u65f6\u95f4\u8868", - "OptionThumb": "\u7f29\u7565\u56fe", - "OptionThumbCard": "Thumb card", - "OptionBanner": "\u6a2a\u5e45", - "OptionCriticRating": "\u5f71\u8bc4\u4eba\u8bc4\u5206", - "OptionVideoBitrate": "\u89c6\u9891\u6bd4\u7279\u7387", "OptionResumable": "\u53ef\u6062\u590d\u64ad\u653e", "ScheduledTasksHelp": "\u5355\u51fb\u4efb\u52a1\u8c03\u6574\u5176\u8fd0\u884c\u65f6\u95f4\u8868\u3002", "ScheduledTasksTitle": "\u8ba1\u5212\u4efb\u52a1", @@ -917,6 +695,7 @@ "LabelChannelDownloadAgeHelp": "\u4e0b\u8f7d\u7684\u5185\u5bb9\u8d85\u8fc7\u6b64\u671f\u9650\u5c06\u88ab\u5220\u9664\u3002\u5b83\u4ecd\u53ef\u901a\u8fc7\u4e92\u8054\u7f51\u6d41\u5a92\u4f53\u64ad\u653e\u3002", "ChannelSettingsFormHelp": "\u5728\u63d2\u4ef6\u76ee\u5f55\u91cc\u5b89\u88c5\u9891\u9053\uff0c\u4f8b\u5982\uff1aTrailers \u548c Vimeo", "ButtonOptions": "\u9009\u9879", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "\u7535\u5f71", "ViewTypeTvShows": "\u7535\u89c6", "ViewTypeGames": "\u6e38\u620f", @@ -1159,6 +938,7 @@ "LabelIfYouWishToContinueWithDeletion": "\u5982\u679c\u4f60\u60f3\u7ee7\u7eed\uff0c\u8bf7\u786e\u8ba4\u8f93\u5165\u7684\u503c\uff1a", "ButtonIdentify": "\u8bc6\u522b", "LabelAlbumArtist": "\u4e13\u8f91\u827a\u672f\u5bb6\uff1a", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "\u4e13\u8f91\uff1a", "LabelCommunityRating": "\u516c\u4f17\u8bc4\u5206\uff1a", "LabelVoteCount": "\u6295\u7968\u8ba1\u6570\uff1a", @@ -1371,5 +1151,239 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "\u66f4\u591a...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u9000\u51fa", + "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u6807\u51c6", + "LabelApiDocumentation": "API\u6587\u6863", + "LabelDeveloperResources": "\u5f00\u53d1\u8d44\u6e90", + "LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93", + "LabelConfigureMediaBrowser": "\u914d\u7f6e Media Browser", + "LabelOpenLibraryViewer": "\u6253\u5f00\u5a92\u4f53\u5e93\u6d4f\u89c8\u5668", + "LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668", + "LabelShowLogWindow": "\u663e\u793a\u65e5\u5fd7\u7a97\u53e3", + "LabelPrevious": "\u4e0a\u4e00\u4e2a", + "LabelFinish": "\u5b8c\u6210", + "LabelNext": "\u4e0b\u4e00\u4e2a", + "LabelYoureDone": "\u5b8c\u6210\uff01", + "WelcomeToMediaBrowser": "\u6b22\u8fce\u4f7f\u7528 Media Browser\uff01", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "\u8be5\u5411\u5bfc\u5c06\u6307\u5bfc\u4f60\u5b8c\u6210\u5b89\u88c5\u8fc7\u7a0b\u3002\u9996\u5148\uff0c\u8bf7\u9009\u62e9\u4f60\u7684\u9996\u9009\u8bed\u8a00\u3002", + "TellUsAboutYourself": "\u8bf7\u4ecb\u7ecd\u4e00\u4e0b\u4f60\u81ea\u5df1", + "ButtonQuickStartGuide": "\u5feb\u901f\u5165\u95e8\u6307\u5357", + "LabelYourFirstName": "\u4f60\u7684\u540d\u5b57\uff1a", + "MoreUsersCanBeAddedLater": "\u7a0d\u540e\u5728\u63a7\u5236\u53f0\u4e2d\u53ef\u4ee5\u6dfb\u52a0\u66f4\u591a\u7528\u6237\u3002", + "UserProfilesIntro": "Media Browser \u652f\u6301\u591a\u4e2a\u7528\u6237\u8bbe\u5b9a\uff0c\u80fd\u4f7f\u6bcf\u4e2a\u7528\u6237\u90fd\u62e5\u6709\u81ea\u5df1\u4e13\u5c5e\u7684\u663e\u793a\u8bbe\u7f6e\uff0c\u64ad\u653e\u72b6\u6001\u548c\u5bb6\u957f\u63a7\u5236\u8bbe\u7f6e\u3002", + "LabelWindowsService": "Windows \u670d\u52a1", + "AWindowsServiceHasBeenInstalled": "Windows \u670d\u52a1\u5b89\u88c5\u5b8c\u6210", + "WindowsServiceIntro1": "Media Browser \u670d\u52a1\u5668\u901a\u5e38\u4ee5\u6258\u76d8\u56fe\u6807\u7684\u5f62\u5f0f\u4ee5\u684c\u9762\u5e94\u7528\u7a0b\u5e8f\u8fd0\u884c\uff0c\u4f46\u5982\u679c\u4f60\u559c\u6b22\u5b83\u4f5c\u4e3a\u540e\u53f0\u670d\u52a1\u8fd0\u884c\uff0c\u5b83\u53ef\u4ee5\u4ece Windows \u63a7\u5236\u9762\u677f\u542f\u52a8\u3002", + "WindowsServiceIntro2": "\u5982\u679c\u4f7f\u7528Windows\u670d\u52a1\uff0c\u8bf7\u6ce8\u610f\uff0c\u5b83\u4e0d\u80fd\u540c\u65f6\u4e3a\u6258\u76d8\u56fe\u6807\u8fd0\u884c\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u9000\u51fa\u6258\u76d8\u4ee5\u8fd0\u884c\u670d\u52a1\u3002\u8be5\u670d\u52a1\u8fd8\u5c06\u9700\u8981\u7ba1\u7406\u5458\u6743\u9650\uff0c\u8be5\u6743\u9650\u53ef\u4ee5\u901a\u8fc7\u63a7\u5236\u9762\u677f\u914d\u7f6e\u3002\u8bf7\u6ce8\u610f\uff0c\u6b64\u65f6\u670d\u52a1\u65e0\u6cd5\u81ea\u52a8\u66f4\u65b0\uff0c\u6240\u4ee5\u65b0\u7684\u7248\u672c\u5c06\u9700\u8981\u624b\u52a8\u66f4\u65b0\u3002", + "WizardCompleted": "\u8fd9\u5c31\u662f\u6211\u4eec\u73b0\u5728\u9700\u8981\u7684\u3002Media Browser\u5df2\u7ecf\u5f00\u59cb\u6536\u96c6\u60a8\u7684\u5a92\u4f53\u5e93\u4fe1\u606f\u3002\u68c0\u67e5\u6211\u4eec\u7684\u5e94\u7528\u7a0b\u5e8f, \u7136\u540e\u70b9\u51fb \u5b8c\u6210<\/b>\u6765\u67e5\u770b \u670d\u52a1\u5668\u63a7\u5236\u9762\u677f<\/b>\u3002", + "LabelConfigureSettings": "\u914d\u7f6e\u8bbe\u7f6e", + "LabelEnableVideoImageExtraction": "\u542f\u7528\u89c6\u9891\u622a\u56fe\u529f\u80fd", + "VideoImageExtractionHelp": "\u5bf9\u4e8e\u8fd8\u6ca1\u6709\u56fe\u7247\uff0c\u4ee5\u53ca\u6211\u4eec\u65e0\u6cd5\u627e\u5230\u7f51\u7edc\u56fe\u7247\u7684\u89c6\u9891\u3002\u8fd9\u4f1a\u989d\u5916\u589e\u52a0\u4e00\u4e9b\u521d\u59cb\u5316\u5a92\u4f53\u5e93\u7684\u626b\u63cf\u65f6\u95f4\uff0c\u4f46\u4f1a\u4f7f\u5a92\u4f53\u4ecb\u7ecd\u754c\u9762\u66f4\u52a0\u8d4f\u5fc3\u60a6\u76ee\u3002", + "LabelEnableChapterImageExtractionForMovies": "\u622a\u53d6\u7535\u5f71\u7ae0\u8282\u56fe\u7247", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u542f\u7528\u81ea\u52a8\u7aef\u53e3\u6620\u5c04", + "LabelEnableAutomaticPortMappingHelp": "UPNP\u5141\u8bb8\u81ea\u52a8\u8def\u7531\u5668\u914d\u7f6e\uff0c\u4ece\u800c\u66f4\u65b9\u4fbf\u7684\u8fdb\u884c\u8fdc\u7a0b\u8bbf\u95ee\u3002\u4f46\u8fd9\u53ef\u80fd\u4e0d\u9002\u7528\u4e8e\u67d0\u4e9b\u578b\u53f7\u7684\u8def\u7531\u5668\u3002", + "HeaderTermsOfService": "Media Browser\u670d\u52a1\u6761\u6b3e", + "MessagePleaseAcceptTermsOfService": "\u7ee7\u7eed\u4e4b\u524d\u8bf7\u63a5\u53d7\u670d\u52a1\u548c\u9690\u79c1\u653f\u7b56\u6761\u6b3e\u3002", + "OptionIAcceptTermsOfService": "\u6211\u63a5\u53d7\u670d\u52a1\u6761\u6b3e", + "ButtonPrivacyPolicy": "\u9690\u79c1\u653f\u7b56", + "ButtonTermsOfService": "\u670d\u52a1\u6761\u6b3e", + "HeaderDeveloperOptions": "\u5f00\u53d1\u4eba\u5458\u9009\u9879", + "OptionEnableWebClientResponseCache": "\u542f\u7528Web\u5ba2\u6237\u7aef\u7f13\u5b58\u54cd\u5e94", + "OptionDisableForDevelopmentHelp": "\u6839\u636e\u5bf9Web\u5ba2\u6237\u7aef\u7684\u5f00\u53d1\u7684\u9700\u8981\u6765\u914d\u7f6e\u8fd9\u4e9b\u9879\u76ee\u3002", + "OptionEnableWebClientResourceMinification": "\u542f\u7528Web\u5ba2\u6237\u7aef\u8d44\u6e90\u6700\u5c0f\u5316", + "LabelDashboardSourcePath": "Web\u5ba2\u6237\u7aef\u6e90\u8def\u5f84\uff1a", + "LabelDashboardSourcePathHelp": "\u5982\u679c\u4ece\u6e90\u8fd0\u884c\u670d\u52a1\u5668\uff0c\u8bf7\u6307\u5b9a\u63a7\u5236\u53f0UI\u6587\u4ef6\u5939\u8def\u5f84\u3002\u8fd9\u4e2a\u6587\u4ef6\u5939\u5c06\u63d0\u4f9bWeb\u5ba2\u6237\u7aef\u7684\u6240\u6709\u6587\u4ef6\u3002", + "ButtonConvertMedia": "\u5a92\u4f53\u8f6c\u6362", + "ButtonOrganize": "\u6574\u7406", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "\u786e\u5b9a", + "ButtonCancel": "\u53d6\u6d88", + "ButtonExit": "Exit", + "ButtonNew": "\u65b0\u589e", + "HeaderTV": "\u7535\u89c6", + "HeaderAudio": "\u97f3\u9891", + "HeaderVideo": "\u89c6\u9891", + "HeaderPaths": "\u8def\u5f84", + "CategorySync": "\u540c\u6b65", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "\u7b80\u6613Pin\u7801", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "\u6ce8\u518cPayPal", + "HeaderSyncRequiresSupporterMembership": "\u540c\u6b65\u9700\u8981\u652f\u6301\u8005\u4f1a\u5458", + "HeaderEnjoyDayTrial": "\u4eab\u53d714\u5929\u514d\u8d39\u8bd5\u7528", + "LabelSyncTempPath": "\u4e34\u65f6\u6587\u4ef6\u8def\u5f84\uff1a", + "LabelSyncTempPathHelp": "\u6307\u5b9a\u540c\u6b65\u65f6\u7684\u5de5\u4f5c\u6587\u4ef6\u5939\u3002\u5728\u540c\u6b65\u8fc7\u7a0b\u4e2d\u521b\u5efa\u7684\u8f6c\u6362\u5a92\u4f53\u6587\u4ef6\u5c06\u88ab\u5b58\u653e\u5728\u8fd9\u91cc\u3002", + "LabelCustomCertificatePath": "\u81ea\u5b9a\u4e49\u8bc1\u4e66\u8def\u5f84\uff1a", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "\u901a\u77e5", + "ButtonDonateWithPayPal": "\u901a\u8fc7PayPal\u6350\u8d60", + "OptionDetectArchiveFilesAsMedia": "\u628a\u538b\u7f29\u6587\u4ef6\u4f5c\u4e3a\u5a92\u4f53\u6587\u4ef6\u68c0\u6d4b", + "OptionDetectArchiveFilesAsMediaHelp": "\u5982\u679c\u542f\u7528\uff0c\u4e0e.RAR\u548c.zip\u6269\u5c55\u540d\u7684\u6587\u4ef6\u5c06\u88ab\u68c0\u6d4b\u4e3a\u5a92\u4f53\u6587\u4ef6\u3002", + "LabelEnterConnectUserName": "\u7528\u6237\u540d\u6216\u7535\u5b50\u90ae\u4ef6\uff1a", + "LabelEnterConnectUserNameHelp": "\u8fd9\u662f\u4f60\u7684Media Browser\u5728\u7ebf\u5e10\u6237\u7684\u7528\u6237\u540d\u6216\u5bc6\u7801\u3002", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "\u540c\u6b65\u4f5c\u4e1a", + "FolderTypeMixed": "\u6df7\u5408\u5185\u5bb9", + "FolderTypeMovies": "\u7535\u5f71", + "FolderTypeMusic": "\u97f3\u4e50", + "FolderTypeAdultVideos": "\u6210\u4eba\u89c6\u9891", + "FolderTypePhotos": "\u56fe\u7247", + "FolderTypeMusicVideos": "\u97f3\u4e50\u89c6\u9891", + "FolderTypeHomeVideos": "\u5bb6\u5ead\u89c6\u9891", + "FolderTypeGames": "\u6e38\u620f", + "FolderTypeBooks": "\u4e66\u7c4d", + "FolderTypeTvShows": "\u7535\u89c6", + "FolderTypeInherit": "\u7ee7\u627f", + "LabelContentType": "\u5185\u5bb9\u7c7b\u578b", + "TitleScheduledTasks": "\u8ba1\u5212\u4efb\u52a1", + "HeaderSetupLibrary": "\u8bbe\u7f6e\u4f60\u7684\u5a92\u4f53\u5e93", + "ButtonAddMediaFolder": "\u6dfb\u52a0\u5a92\u4f53\u6587\u4ef6\u5939", + "LabelFolderType": "\u6587\u4ef6\u5939\u7c7b\u578b\uff1a", + "ReferToMediaLibraryWiki": "\u8bf7\u53c2\u9605\u5a92\u4f53\u5e93\u7ef4\u57fa\u3002", + "LabelCountry": "\u56fd\u5bb6\uff1a", + "LabelLanguage": "\u8bed\u8a00\uff1a", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "\u52a0\u5165\u5f00\u53d1\u56e2\u961f", + "HeaderPreferredMetadataLanguage": "\u9996\u9009\u5a92\u4f53\u8d44\u6599\u8bed\u8a00\uff1a", + "LabelSaveLocalMetadata": "\u4fdd\u5b58\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599\u5230\u5a92\u4f53\u6240\u5728\u6587\u4ef6\u5939", + "LabelSaveLocalMetadataHelp": "\u76f4\u63a5\u4fdd\u5b58\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599\u5230\u5a92\u4f53\u6240\u5728\u6587\u4ef6\u5939\u4ee5\u65b9\u4fbf\u7f16\u8f91\u3002", + "LabelDownloadInternetMetadata": "\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u5a92\u4f53\u56fe\u50cf\u53ca\u8d44\u6599", + "LabelDownloadInternetMetadataHelp": "Media Browser\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u548c\u4f60\u5a92\u4f53\u76f8\u5173\u7684\u4fe1\u606f\uff0c\u4ece\u800c\u5c55\u73b0\u7f24\u7eb7\u7684\u754c\u9762\u3002", + "TabPreferences": "\u504f\u597d", + "TabPassword": "\u5bc6\u7801", + "TabLibraryAccess": "\u5a92\u4f53\u5e93\u8bbf\u95ee\u6743\u9650", + "TabAccess": "\u8bbf\u95ee", + "TabImage": "\u56fe\u7247", + "TabProfile": "\u4e2a\u4eba\u914d\u7f6e", + "TabMetadata": "\u5a92\u4f53\u8d44\u6599", + "TabImages": "\u56fe\u50cf", + "TabNotifications": "\u901a\u77e5", + "TabCollectionTitles": "\u6807\u9898", + "HeaderDeviceAccess": "\u8bbe\u5907\u8bbf\u95ee", + "OptionEnableAccessFromAllDevices": "\u542f\u7528\u6240\u6709\u8bbe\u5907\u53ef\u4ee5\u8bbf\u95ee", + "OptionEnableAccessToAllChannels": "\u542f\u7528\u6240\u6709\u9891\u9053\u53ef\u4ee5\u8bbf\u95ee", + "OptionEnableAccessToAllLibraries": "\u542f\u7528\u6240\u6709\u5a92\u4f53\u5e93\u53ef\u4ee5\u8bbf\u95ee", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u7f3a\u5c11\u7684\u5267\u96c6", + "LabelUnairedMissingEpisodesWithinSeasons": "\u663e\u793a\u6bcf\u5b63\u91cc\u672a\u53d1\u5e03\u7684\u5267\u96c6", + "HeaderVideoPlaybackSettings": "\u89c6\u9891\u56de\u653e\u8bbe\u7f6e", + "HeaderPlaybackSettings": "\u64ad\u653e\u8bbe\u7f6e", + "LabelAudioLanguagePreference": "\u97f3\u9891\u8bed\u8a00\u504f\u597d\u8bbe\u7f6e", + "LabelSubtitleLanguagePreference": "\u5b57\u5e55\u8bed\u8a00\u504f\u597d\u8bbe\u7f6e", + "OptionDefaultSubtitles": "\u9ed8\u8ba4", + "OptionOnlyForcedSubtitles": "\u4ec5\u7528\u5f3a\u5236\u5b57\u5e55", + "OptionAlwaysPlaySubtitles": "\u603b\u662f\u64ad\u653e\u5b57\u5e55", + "OptionNoSubtitles": "\u65e0\u5b57\u5e55", + "OptionDefaultSubtitlesHelp": "\u5339\u914d\u5b57\u5e55\u8bed\u8a00\u504f\u597d\uff0c\u5f53\u97f3\u9891\u662f\u5916\u8bed\u65f6\u5b57\u5e55\u5c06\u88ab\u52a0\u8f7d\u3002", + "OptionOnlyForcedSubtitlesHelp": "\u53ea\u6709\u5b57\u5e55\u6807\u8bb0\u4e3a\u5f3a\u5236\u5c06\u88ab\u52a0\u8f7d\u3002", + "OptionAlwaysPlaySubtitlesHelp": "\u5339\u914d\u5b57\u5e55\u8bed\u8a00\u504f\u597d\uff0c\u65e0\u8bba\u97f3\u9891\u662f\u4ec0\u4e48\u8bed\u5b57\u5e55\u90fd\u5c06\u88ab\u52a0\u8f7d\u3002", + "OptionNoSubtitlesHelp": "\u5b57\u5e55\u5c06\u4e0d\u4f1a\u88ab\u9ed8\u8ba4\u52a0\u8f7d\u3002", + "TabProfiles": "\u914d\u7f6e", + "TabSecurity": "\u5b89\u5168\u6027", + "ButtonAddUser": "\u6dfb\u52a0\u7528\u6237", + "ButtonAddLocalUser": "\u6dfb\u52a0\u672c\u5730\u7528\u6237", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u50a8\u5b58", + "ButtonResetPassword": "\u91cd\u7f6e\u5bc6\u7801", + "LabelNewPassword": "\u65b0\u5bc6\u7801\uff1a", + "LabelNewPasswordConfirm": "\u65b0\u5bc6\u7801\u786e\u8ba4\uff1a", + "HeaderCreatePassword": "\u521b\u5efa\u5bc6\u7801", + "LabelCurrentPassword": "\u5f53\u524d\u5bc6\u7801\u3002", + "LabelMaxParentalRating": "\u6700\u5927\u5141\u8bb8\u7684\u5bb6\u957f\u8bc4\u7ea7\uff1a", + "MaxParentalRatingHelp": "\u9ad8\u7ea7\u522b\u5185\u5bb9\u5c06\u5bf9\u6b64\u7528\u6237\u9690\u85cf\u3002", + "LibraryAccessHelp": "\u9009\u62e9\u5171\u4eab\u7ed9\u6b64\u7528\u6237\u7684\u5a92\u4f53\u6587\u4ef6\u5939\u3002\u7ba1\u7406\u5458\u80fd\u4f7f\u7528\u5a92\u4f53\u8d44\u6599\u7ba1\u7406\u5668\u6765\u7f16\u8f91\u6240\u6709\u6587\u4ef6\u5939\u3002", + "ChannelAccessHelp": "\u9009\u62e9\u5171\u4eab\u7ed9\u6b64\u7528\u6237\u7684\u9891\u9053\u3002\u7ba1\u7406\u5458\u80fd\u4f7f\u7528\u5a92\u4f53\u8d44\u6599\u7ba1\u7406\u5668\u6765\u7f16\u8f91\u6240\u6709\u9891\u9053\u3002", + "ButtonDeleteImage": "\u5220\u9664\u56fe\u7247", + "LabelSelectUsers": "\u9009\u62e9\u7528\u6237\uff1a", + "ButtonUpload": "\u4e0a\u8f7d", + "HeaderUploadNewImage": "\u4e0a\u8f7d\u65b0\u56fe\u7247", + "LabelDropImageHere": "\u628a\u56fe\u7247\u62d6\u5230\u8fd9\u513f", + "ImageUploadAspectRatioHelp": "\u63a8\u8350\u4f7f\u7528\u957f\u5bbd\u6bd41:1\u7684\u56fe\u7247\u3002 \u683c\u5f0f\u4ec5\u9650JPG \/ PNG\u3002", + "MessageNothingHere": "\u8fd9\u513f\u4ec0\u4e48\u90fd\u6ca1\u6709\u3002", + "MessagePleaseEnsureInternetMetadata": "\u8bf7\u786e\u4fdd\u5df2\u542f\u7528\u4ece\u4e92\u8054\u7f51\u4e0b\u8f7d\u5a92\u4f53\u8d44\u6599\u3002", + "TabSuggested": "\u5efa\u8bae", + "TabLatest": "\u6700\u65b0", + "TabUpcoming": "\u5373\u5c06\u53d1\u5e03", + "TabShows": "\u8282\u76ee", + "TabEpisodes": "\u5267\u96c6", + "TabGenres": "\u98ce\u683c", + "TabPeople": "\u4eba\u7269", + "TabNetworks": "\u7f51\u7edc", + "HeaderUsers": "\u7528\u6237", + "HeaderFilters": "\u7b5b\u9009\uff1a", + "ButtonFilter": "\u7b5b\u9009", + "OptionFavorite": "\u6211\u7684\u6700\u7231", + "OptionLikes": "\u559c\u6b22", + "OptionDislikes": "\u4e0d\u559c\u6b22", + "OptionActors": "\u6f14\u5458", + "OptionGuestStars": "\u7279\u9080\u660e\u661f", + "OptionDirectors": "\u5bfc\u6f14", + "OptionWriters": "\u7f16\u5267", + "OptionProducers": "\u5236\u7247\u4eba", + "HeaderResume": "\u6062\u590d\u64ad\u653e", + "HeaderNextUp": "\u4e0b\u4e00\u96c6", + "NoNextUpItemsMessage": "\u6ca1\u6709\u53d1\u73b0\u3002\u5f00\u59cb\u770b\u4f60\u7684\u8282\u76ee\uff01", + "HeaderLatestEpisodes": "\u6700\u65b0\u5267\u96c6", + "HeaderPersonTypes": "\u4eba\u7269\u7c7b\u578b\uff1a", + "TabSongs": "\u6b4c\u66f2", + "TabAlbums": "\u4e13\u8f91", + "TabArtists": "\u827a\u672f\u5bb6", + "TabAlbumArtists": "\u4e13\u8f91\u827a\u672f\u5bb6", + "TabMusicVideos": "\u97f3\u4e50\u89c6\u9891", + "ButtonSort": "\u6392\u5e8f", + "HeaderSortBy": "\u6392\u5e8f\u65b9\u5f0f\uff1a", + "HeaderSortOrder": "\u6392\u5e8f\u987a\u5e8f\uff1a", + "OptionPlayed": "\u5df2\u64ad\u653e", + "OptionUnplayed": "\u672a\u64ad\u653e", + "OptionAscending": "\u5347\u5e8f", + "OptionDescending": "\u964d\u5e8f", + "OptionRuntime": "\u64ad\u653e\u65f6\u95f4", + "OptionReleaseDate": "\u53d1\u884c\u65e5\u671f", + "OptionPlayCount": "\u64ad\u653e\u6b21\u6570", + "OptionDatePlayed": "\u64ad\u653e\u65e5\u671f", + "OptionDateAdded": "\u52a0\u5165\u65e5\u671f", + "OptionAlbumArtist": "\u4e13\u8f91\u827a\u672f\u5bb6", + "OptionArtist": "\u827a\u672f\u5bb6", + "OptionAlbum": "\u4e13\u8f91", + "OptionTrackName": "\u66f2\u76ee\u540d\u79f0", + "OptionCommunityRating": "\u516c\u4f17\u8bc4\u5206", + "OptionNameSort": "\u540d\u5b57", + "OptionFolderSort": "\u6587\u4ef6\u5939", + "OptionBudget": "\u9884\u7b97", + "OptionRevenue": "\u6536\u5165", + "OptionPoster": "\u6d77\u62a5", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "\u80cc\u666f", + "OptionTimeline": "\u65f6\u95f4\u8868", + "OptionThumb": "\u7f29\u7565\u56fe", + "OptionThumbCard": "Thumb card", + "OptionBanner": "\u6a2a\u5e45", + "OptionCriticRating": "\u5f71\u8bc4\u4eba\u8bc4\u5206", + "OptionVideoBitrate": "\u89c6\u9891\u6bd4\u7279\u7387" } \ 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 f47eca399..b418cf12a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json @@ -1,222 +1,4 @@ { - "LabelExit": "\u96e2\u958b", - "LabelVisitCommunity": "\u8a2a\u554f\u793e\u5340", - "LabelGithub": "Github", - "LabelSwagger": "Swagger", - "LabelStandard": "\u6a19\u6dee", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u700f\u89bd\u5a92\u9ad4\u5eab", - "LabelConfigureMediaBrowser": "\u8a2d\u5b9aMedia Browser", - "LabelOpenLibraryViewer": "\u6253\u958b\u5a92\u9ad4\u5eab\u700f\u89bd\u5668", - "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u4f3a\u5668\u670d", - "LabelShowLogWindow": "\u986f\u793a\u65e5\u8a8c", - "LabelPrevious": "\u4e0a\u4e00\u500b", - "LabelFinish": "\u5b8c\u7d50", - "LabelNext": "\u4e0b\u4e00\u500b", - "LabelYoureDone": "\u5b8c\u6210!", - "WelcomeToMediaBrowser": "\u6b61\u8fce\u4f86\u5230 Media Browser\uff01", - "TitleMediaBrowser": "Media Browser", - "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", - "TellUsAboutYourself": "\u8acb\u4ecb\u7d39\u4e00\u4e0b\u81ea\u5df1", - "ButtonQuickStartGuide": "Quick start guide", - "LabelYourFirstName": "\u4f60\u7684\u540d\u5b57\uff1a", - "MoreUsersCanBeAddedLater": "\u5f80\u5f8c\u53ef\u4ee5\u5728\u63a7\u5236\u53f0\u5167\u6dfb\u52a0\u66f4\u591a\u7528\u6236\u3002", - "UserProfilesIntro": "Media Browser \u5167\u7f6e\u652f\u6301\u591a\u500b\u7528\u6236\u914d\u7f6e\uff0c\u4f7f\u6bcf\u500b\u7528\u6236\u90fd\u64c1\u6709\u81ea\u5df1\u5c08\u5c6c\u7684\u986f\u793a\u8a2d\u7f6e\uff0c\u64ad\u653e\u72c0\u614b\u548c\u5bb6\u9577\u63a7\u5236\u8a2d\u7f6e\u3002", - "LabelWindowsService": "Windows\u670d\u52d9", - "AWindowsServiceHasBeenInstalled": "Windows\u670d\u52d9\u5df2\u7d93\u5b89\u88dd\u5b8c\u7562\u3002", - "WindowsServiceIntro1": "Media Browser \u4f3a\u670d\u5668\u901a\u5e38\u6703\u4f5c\u70ba\u4e00\u500b\u6709\u7a0b\u5f0f\u76e4\u5716\u6a19\u7684\u684c\u9762\u61c9\u7528\u7a0b\u5f0f\u904b\u884c\uff0c\u4f46\u5982\u679c\u4f60\u66f4\u559c\u6b61\u5c07\u5b83\u4f5c\u70ba\u5f8c\u53f0\u670d\u52d9\uff0c\u5b83\u53ef\u4ee5\u5f9eWindows\u670d\u52d9\u63a7\u5236\u53f0\u555f\u52d5\u3002", - "WindowsServiceIntro2": "\u5982\u679c\u4f7f\u7528Windows\u670d\u52d9\uff0c\u8acb\u6ce8\u610f\uff0c\u5b83\u4e0d\u80fd\u540c\u6642\u4f5c\u70ba\u7a0b\u5f0f\u76e4\u5716\u6a19\u684c\u9762\u61c9\u7528\u7a0b\u5f0f\u904b\u884c\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u5f9e\u7a0b\u5f0f\u76e4\u5716\u6a19\u9000\u51fa\uff0c\u4ee5\u904b\u884cWindows\u670d\u52d9\u3002\u8a72\u670d\u52d9\u9084\u9700\u8981\u5177\u6709\u7ba1\u7406\u54e1\u6b0a\u9650\uff0c\u9019\u53ef\u4ee5\u901a\u904eWindows\u670d\u52d9\u63a7\u5236\u53f0\u9032\u884c\u914d\u7f6e\u3002\u8acb\u6ce8\u610f\uff0c\u6b64\u6642\u7684 Media Browser \u4f3a\u670d\u5668\u670d\u52d9\u662f\u7121\u6cd5\u81ea\u52d5\u66f4\u65b0\uff0c\u56e0\u6b64\u65b0\u7248\u672c\u5c07\u9700\u8981\u624b\u52d5\u66f4\u65b0\u3002", - "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", - "LabelConfigureSettings": "\u914d\u7f6e\u8a2d\u5b9a", - "LabelEnableVideoImageExtraction": "\u555f\u52d5\u8996\u983b\u622a\u5716\u63d0\u53d6", - "VideoImageExtractionHelp": "\u5c0d\u65bc\u6c92\u6709\u622a\u5716\u4ee5\u53ca\u6211\u5011\u76ee\u524d\u7121\u6cd5\u5f9e\u4e92\u806f\u7db2\u627e\u5230\u6709\u95dc\u622a\u5716\u7684\u8996\u983b\uff0c\u5728\u521d\u59cb\u5a92\u9ad4\u5eab\u6383\u63cf\u6642\uff0c\u6703\u589e\u52a0\u4e00\u4e9b\u984d\u5916\u7684\u6383\u63cf\u6642\u9593\uff0c\u4f46\u4f60\u5c07\u6703\u770b\u5230\u4e00\u500b\u66f4\u6085\u76ee\u7684\u4ecb\u7d39\u4ecb\u9762\u3002", - "LabelEnableChapterImageExtractionForMovies": "\u63d0\u53d6\u96fb\u5f71\u7ae0\u7bc0\u622a\u5716", - "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", - "LabelEnableAutomaticPortMapping": "\u555f\u7528\u81ea\u52d5\u7aef\u53e3\u8f49\u767c", - "LabelEnableAutomaticPortMappingHelp": "UPnP\u5141\u8a31\u8def\u7531\u5668\u81ea\u52d5\u8a2d\u7f6e\u5f9e\u800c\u53ef\u4ee5\u66f4\u65b9\u4fbf\u5730\u9060\u7a0b\u8a2a\u554f\u4f3a\u670d\u5668\u3002\u9019\u53ef\u80fd\u4e0d\u9069\u7528\u65bc\u67d0\u4e9b\u8def\u7531\u5668\u578b\u865f\u3002", - "HeaderTermsOfService": "Media Browser Terms of Service", - "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", - "OptionIAcceptTermsOfService": "I accept the terms of service", - "ButtonPrivacyPolicy": "Privacy policy", - "ButtonTermsOfService": "Terms of Service", - "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", - "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", - "OptionEnableWebClientResourceMinification": "Enable web client resource minification", - "LabelDashboardSourcePath": "Web client source path:", - "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", - "ButtonConvertMedia": "Convert media", - "ButtonOrganize": "Organize", - "LabelPinCode": "Pin code:", - "ButtonOk": "OK", - "ButtonCancel": "\u53d6\u6d88", - "ButtonExit": "Exit", - "ButtonNew": "\u5275\u5efa", - "HeaderTV": "TV", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderPaths": "Paths", - "CategorySync": "Sync", - "HeaderEasyPinCode": "Easy Pin Code", - "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", - "HeaderAvailableServices": "Available Services", - "MessageNoServicesInstalled": "No services are currently installed.", - "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", - "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", - "ButtonConfigurePinCode": "Configure pin code", - "HeaderAdultsReadHere": "Adults Read Here!", - "RegisterWithPayPal": "Register with PayPal", - "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", - "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", - "LabelCustomCertificatePath": "Custom certificate path:", - "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", - "TitleNotifications": "Notifications", - "ButtonDonateWithPayPal": "Donate with PayPal", - "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", - "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", - "LabelEnterConnectUserName": "User name or email:", - "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", - "LabelEnableEnhancedMovies": "Enable enhanced movie displays", - "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", - "HeaderSyncJobInfo": "Sync Job", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", - "HeaderSetupLibrary": "\u8a2d\u7f6e\u4f60\u7684\u5a92\u9ad4\u5eab", - "ButtonAddMediaFolder": "\u6dfb\u52a0\u5a92\u9ad4\u6587\u4ef6\u593e", - "LabelFolderType": "\u5a92\u9ad4\u6587\u4ef6\u593e\u985e\u578b\uff1a", - "ReferToMediaLibraryWiki": "\u53c3\u7167\u5a92\u9ad4\u5eab\u7ef4\u57fa", - "LabelCountry": "\u570b\u5bb6\uff1a", - "LabelLanguage": "\u8a9e\u8a00\uff1a", - "LabelTimeLimitHours": "Time limit (hours):", - "ButtonJoinTheDevelopmentTeam": "Join the Development Team", - "HeaderPreferredMetadataLanguage": "\u9996\u9078\u5a92\u9ad4\u8cc7\u6599\u8a9e\u8a00\uff1a", - "LabelSaveLocalMetadata": "\u4fdd\u5b58\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5230\u5a92\u9ad4\u6a94\u6848\u6240\u5728\u7684\u6587\u4ef6\u593e", - "LabelSaveLocalMetadataHelp": "\u76f4\u63a5\u4fdd\u5b58\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5230\u5a92\u9ad4\u6240\u5728\u7684\u6587\u4ef6\u593e\u80fd\u4f7f\u7de8\u8f2f\u5de5\u4f5c\u66f4\u5bb9\u6613\u3002", - "LabelDownloadInternetMetadata": "\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599", - "LabelDownloadInternetMetadataHelp": "Media Browser\u53ef\u4ee5\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5f9e\u800c\u63d0\u4f9b\u66f4\u8c50\u5bcc\u7684\u5a92\u9ad4\u8868\u9054\u65b9\u5f0f\u3002", - "TabPreferences": "\u504f\u597d", - "TabPassword": "\u5bc6\u78bc", - "TabLibraryAccess": "\u5a92\u9ad4\u5eab\u700f\u89bd\u6b0a\u9650", - "TabAccess": "Access", - "TabImage": "\u5716\u50cf", - "TabProfile": "\u914d\u7f6e", - "TabMetadata": "\u5a92\u9ad4\u8cc7\u6599", - "TabImages": "\u5716\u50cf", - "TabNotifications": "Notifications", - "TabCollectionTitles": "\u6a19\u984c", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", - "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", - "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", - "LabelDisplayMissingEpisodesWithinSeasons": "\u986f\u793a\u7bc0\u76ee\u5b63\u5ea6\u5167\u7f3a\u5c11\u7684\u55ae\u5143", - "LabelUnairedMissingEpisodesWithinSeasons": "\u5728\u7bc0\u76ee\u5b63\u5ea6\u5167\u986f\u793a\u9084\u672a\u767c\u4f48\u7684\u55ae\u5143", - "HeaderVideoPlaybackSettings": "\u8996\u983b\u56de\u653e\u8a2d\u7f6e", - "HeaderPlaybackSettings": "Playback Settings", - "LabelAudioLanguagePreference": "\u97f3\u983b\u8a9e\u8a00\u504f\u597d\u9078\u9805\uff1a", - "LabelSubtitleLanguagePreference": "\u5b57\u5e55\u8a9e\u8a00\u504f\u597d\u9078\u9805\uff1a", - "OptionDefaultSubtitles": "Default", - "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", - "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", - "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", - "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", - "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", - "TabProfiles": "\u914d\u7f6e", - "TabSecurity": "\u5b89\u5168\u6027", - "ButtonAddUser": "\u6dfb\u52a0\u7528\u6236", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", - "ButtonSave": "\u4fdd\u5b58", - "ButtonResetPassword": "\u91cd\u8a2d\u5bc6\u78bc", - "LabelNewPassword": "\u65b0\u5bc6\u78bc\uff1a", - "LabelNewPasswordConfirm": "\u78ba\u8a8d\u65b0\u5bc6\u78bc\uff1a", - "HeaderCreatePassword": "\u5275\u5efa\u5bc6\u78bc", - "LabelCurrentPassword": "\u7576\u524d\u7684\u5bc6\u78bc\uff1a", - "LabelMaxParentalRating": "\u6700\u5927\u5141\u8a31\u7684\u5bb6\u9577\u8a55\u7d1a\uff1a", - "MaxParentalRatingHelp": "\u5177\u6709\u8f03\u9ad8\u7684\u5bb6\u9577\u8a55\u7d1a\u5167\u5bb9\u5c07\u5f9e\u9019\u7528\u6236\u88ab\u96b1\u85cf", - "LibraryAccessHelp": "\u9078\u64c7\u5a92\u9ad4\u6587\u4ef6\u593e\u8207\u9019\u7528\u6236\u5171\u4eab\u3002\u7ba1\u7406\u54e1\u5c07\u53ef\u4ee5\u4f7f\u7528\u5a92\u9ad4\u8cc7\u6599\u64da\u7ba1\u7406\u5668\u7de8\u8f2f\u6240\u6709\u7684\u5a92\u9ad4\u6587\u4ef6\u593e\u3002", - "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", - "ButtonDeleteImage": "\u522a\u9664\u5716\u50cf", - "LabelSelectUsers": "Select users:", - "ButtonUpload": "\u4e0a\u8f09", - "HeaderUploadNewImage": "\u4e0a\u8f09\u65b0\u5716\u50cf", - "LabelDropImageHere": "Drop image here", - "ImageUploadAspectRatioHelp": "\u63a8\u85a6\u4f7f\u67091:1\u5bec\u9ad8\u6bd4\u4f8b\u7684\u5716\u50cf\u3002\u53ea\u5141\u8a31JPG\/PNG\u683c\u5f0f", - "MessageNothingHere": "\u9019\u88e1\u6c92\u6709\u4ec0\u9ebc\u3002", - "MessagePleaseEnsureInternetMetadata": "\u8acb\u78ba\u4fdd\u5df2\u555f\u7528\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u8cc7\u6599\u3002", - "TabSuggested": "\u5efa\u8b70", - "TabLatest": "\u6700\u65b0", - "TabUpcoming": "\u5373\u5c07\u767c\u5e03", - "TabShows": "\u7bc0\u76ee", - "TabEpisodes": "\u55ae\u5143", - "TabGenres": "\u985e\u578b", - "TabPeople": "\u4eba\u7269", - "TabNetworks": "\u7db2\u7d61", - "HeaderUsers": "\u7528\u6236", - "HeaderFilters": "\u904e\u6ffe\uff1a", - "ButtonFilter": "\u904e\u6ffe", - "OptionFavorite": "\u6211\u7684\u6700\u611b", - "OptionLikes": "\u559c\u6b61", - "OptionDislikes": "\u4e0d\u559c\u6b61", - "OptionActors": "\u6f14\u54e1", - "OptionGuestStars": "\u7279\u9080\u660e\u661f", - "OptionDirectors": "\u5c0e\u6f14", - "OptionWriters": "\u4f5c\u8005", - "OptionProducers": "\u5236\u7247\u4eba", - "HeaderResume": "Resume", - "HeaderNextUp": "\u4e0b\u4e00\u96c6", - "NoNextUpItemsMessage": "\u6c92\u6709\u627e\u5230\u3002\u958b\u59cb\u770b\u4f60\u7684\u7bc0\u76ee\uff01", - "HeaderLatestEpisodes": "\u6700\u65b0\u7bc0\u76ee\u55ae\u5143", - "HeaderPersonTypes": "\u4eba\u7269\u985e\u578b\uff1a", - "TabSongs": "\u6b4c\u66f2", - "TabAlbums": "\u5c08\u8f2f", - "TabArtists": "\u6b4c\u624b", - "TabAlbumArtists": "\u5c08\u8f2f\u6b4c\u624b", - "TabMusicVideos": "Music Videos", - "ButtonSort": "\u6392\u5e8f", - "HeaderSortBy": "\u6392\u5e8f\u65b9\u5f0f\uff1a", - "HeaderSortOrder": "\u6392\u5e8f\u6b21\u5e8f\uff1a", - "OptionPlayed": "\u5df2\u64ad\u653e", - "OptionUnplayed": "\u672a\u64ad\u653e", - "OptionAscending": "\u5347\u5e8f", - "OptionDescending": "\u964d\u5e8f", - "OptionRuntime": "\u64ad\u653e\u9577\u5ea6", - "OptionReleaseDate": "Release Date", - "OptionPlayCount": "\u64ad\u653e\u6b21\u6578", - "OptionDatePlayed": "\u64ad\u653e\u65e5\u671f", - "OptionDateAdded": "\u6dfb\u52a0\u65e5\u671f", - "OptionAlbumArtist": "\u5c08\u8f2f\u6b4c\u624b", - "OptionArtist": "\u6b4c\u624b", - "OptionAlbum": "\u5c08\u8f2f", - "OptionTrackName": "\u66f2\u76ee\u540d\u7a31", - "OptionCommunityRating": "\u793e\u5340\u8a55\u5206", - "OptionNameSort": "\u540d\u5b57", - "OptionFolderSort": "Folders", - "OptionBudget": "\u9810\u7b97", - "OptionRevenue": "\u6536\u5165", - "OptionPoster": "\u6d77\u5831", - "OptionPosterCard": "Poster card", - "OptionBackdrop": "\u80cc\u666f", - "OptionTimeline": "\u6642\u9593\u8ef8", - "OptionThumb": "\u7e2e\u7565\u5716", "OptionThumbCard": "Thumb card", "OptionBanner": "\u6a6b\u5411\u5716", "OptionCriticRating": "\u8a55\u8ad6\u5bb6\u8a55\u50f9", @@ -917,6 +699,7 @@ "LabelChannelDownloadAgeHelp": "Downloaded content older than this will be deleted. It will remain playable via internet streaming.", "ChannelSettingsFormHelp": "Install channels such as Trailers and Vimeo in the plugin catalog.", "ButtonOptions": "Options", + "ViewTypePlaylists": "Playlists", "ViewTypeMovies": "Movies", "ViewTypeTvShows": "TV", "ViewTypeGames": "Games", @@ -1159,6 +942,7 @@ "LabelIfYouWishToContinueWithDeletion": "If you wish to continue, please confirm by entering the value of:", "ButtonIdentify": "Identify", "LabelAlbumArtist": "Album artist:", + "LabelAlbumArtists": "Album artists:", "LabelAlbum": "Album:", "LabelCommunityRating": "Community rating:", "LabelVoteCount": "Vote count:", @@ -1371,5 +1155,235 @@ "LabelTagFilterMode": "Mode:", "LabelTagFilterAllowModeHelp": "If allowed tags are used as part of a deeply nested folder structure, content that is tagged will require parent folders to be tagged as well.", "HeaderThisUserIsCurrentlyDisabled": "This user is currently disabled", - "MessageReenableUser": "See below to reenable" + "MessageReenableUser": "See below to reenable", + "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", + "OptionTVMovies": "TV Movies", + "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingPrograms": "Upcoming Programs", + "ButtonMoreItems": "More...", + "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", + "LabelExit": "\u96e2\u958b", + "LabelVisitCommunity": "\u8a2a\u554f\u793e\u5340", + "LabelGithub": "Github", + "LabelSwagger": "Swagger", + "LabelStandard": "\u6a19\u6dee", + "LabelApiDocumentation": "Api Documentation", + "LabelDeveloperResources": "Developer Resources", + "LabelBrowseLibrary": "\u700f\u89bd\u5a92\u9ad4\u5eab", + "LabelConfigureMediaBrowser": "\u8a2d\u5b9aMedia Browser", + "LabelOpenLibraryViewer": "\u6253\u958b\u5a92\u9ad4\u5eab\u700f\u89bd\u5668", + "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u4f3a\u5668\u670d", + "LabelShowLogWindow": "\u986f\u793a\u65e5\u8a8c", + "LabelPrevious": "\u4e0a\u4e00\u500b", + "LabelFinish": "\u5b8c\u7d50", + "LabelNext": "\u4e0b\u4e00\u500b", + "LabelYoureDone": "\u5b8c\u6210!", + "WelcomeToMediaBrowser": "\u6b61\u8fce\u4f86\u5230 Media Browser\uff01", + "TitleMediaBrowser": "Media Browser", + "ThisWizardWillGuideYou": "This wizard will help guide you through the setup process. To begin, please select your preferred language.", + "TellUsAboutYourself": "\u8acb\u4ecb\u7d39\u4e00\u4e0b\u81ea\u5df1", + "ButtonQuickStartGuide": "Quick start guide", + "LabelYourFirstName": "\u4f60\u7684\u540d\u5b57\uff1a", + "MoreUsersCanBeAddedLater": "\u5f80\u5f8c\u53ef\u4ee5\u5728\u63a7\u5236\u53f0\u5167\u6dfb\u52a0\u66f4\u591a\u7528\u6236\u3002", + "UserProfilesIntro": "Media Browser \u5167\u7f6e\u652f\u6301\u591a\u500b\u7528\u6236\u914d\u7f6e\uff0c\u4f7f\u6bcf\u500b\u7528\u6236\u90fd\u64c1\u6709\u81ea\u5df1\u5c08\u5c6c\u7684\u986f\u793a\u8a2d\u7f6e\uff0c\u64ad\u653e\u72c0\u614b\u548c\u5bb6\u9577\u63a7\u5236\u8a2d\u7f6e\u3002", + "LabelWindowsService": "Windows\u670d\u52d9", + "AWindowsServiceHasBeenInstalled": "Windows\u670d\u52d9\u5df2\u7d93\u5b89\u88dd\u5b8c\u7562\u3002", + "WindowsServiceIntro1": "Media Browser \u4f3a\u670d\u5668\u901a\u5e38\u6703\u4f5c\u70ba\u4e00\u500b\u6709\u7a0b\u5f0f\u76e4\u5716\u6a19\u7684\u684c\u9762\u61c9\u7528\u7a0b\u5f0f\u904b\u884c\uff0c\u4f46\u5982\u679c\u4f60\u66f4\u559c\u6b61\u5c07\u5b83\u4f5c\u70ba\u5f8c\u53f0\u670d\u52d9\uff0c\u5b83\u53ef\u4ee5\u5f9eWindows\u670d\u52d9\u63a7\u5236\u53f0\u555f\u52d5\u3002", + "WindowsServiceIntro2": "\u5982\u679c\u4f7f\u7528Windows\u670d\u52d9\uff0c\u8acb\u6ce8\u610f\uff0c\u5b83\u4e0d\u80fd\u540c\u6642\u4f5c\u70ba\u7a0b\u5f0f\u76e4\u5716\u6a19\u684c\u9762\u61c9\u7528\u7a0b\u5f0f\u904b\u884c\uff0c\u6240\u4ee5\u4f60\u9700\u8981\u5f9e\u7a0b\u5f0f\u76e4\u5716\u6a19\u9000\u51fa\uff0c\u4ee5\u904b\u884cWindows\u670d\u52d9\u3002\u8a72\u670d\u52d9\u9084\u9700\u8981\u5177\u6709\u7ba1\u7406\u54e1\u6b0a\u9650\uff0c\u9019\u53ef\u4ee5\u901a\u904eWindows\u670d\u52d9\u63a7\u5236\u53f0\u9032\u884c\u914d\u7f6e\u3002\u8acb\u6ce8\u610f\uff0c\u6b64\u6642\u7684 Media Browser \u4f3a\u670d\u5668\u670d\u52d9\u662f\u7121\u6cd5\u81ea\u52d5\u66f4\u65b0\uff0c\u56e0\u6b64\u65b0\u7248\u672c\u5c07\u9700\u8981\u624b\u52d5\u66f4\u65b0\u3002", + "WizardCompleted": "That's all we need for now. Media Browser has begun collecting information about your media library. Check out some of our apps, and then click Finish<\/b> to view the Server Dashboard<\/b>.", + "LabelConfigureSettings": "\u914d\u7f6e\u8a2d\u5b9a", + "LabelEnableVideoImageExtraction": "\u555f\u52d5\u8996\u983b\u622a\u5716\u63d0\u53d6", + "VideoImageExtractionHelp": "\u5c0d\u65bc\u6c92\u6709\u622a\u5716\u4ee5\u53ca\u6211\u5011\u76ee\u524d\u7121\u6cd5\u5f9e\u4e92\u806f\u7db2\u627e\u5230\u6709\u95dc\u622a\u5716\u7684\u8996\u983b\uff0c\u5728\u521d\u59cb\u5a92\u9ad4\u5eab\u6383\u63cf\u6642\uff0c\u6703\u589e\u52a0\u4e00\u4e9b\u984d\u5916\u7684\u6383\u63cf\u6642\u9593\uff0c\u4f46\u4f60\u5c07\u6703\u770b\u5230\u4e00\u500b\u66f4\u6085\u76ee\u7684\u4ecb\u7d39\u4ecb\u9762\u3002", + "LabelEnableChapterImageExtractionForMovies": "\u63d0\u53d6\u96fb\u5f71\u7ae0\u7bc0\u622a\u5716", + "LabelChapterImageExtractionForMoviesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs as a nightly scheduled task, although this is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", + "LabelEnableAutomaticPortMapping": "\u555f\u7528\u81ea\u52d5\u7aef\u53e3\u8f49\u767c", + "LabelEnableAutomaticPortMappingHelp": "UPnP\u5141\u8a31\u8def\u7531\u5668\u81ea\u52d5\u8a2d\u7f6e\u5f9e\u800c\u53ef\u4ee5\u66f4\u65b9\u4fbf\u5730\u9060\u7a0b\u8a2a\u554f\u4f3a\u670d\u5668\u3002\u9019\u53ef\u80fd\u4e0d\u9069\u7528\u65bc\u67d0\u4e9b\u8def\u7531\u5668\u578b\u865f\u3002", + "HeaderTermsOfService": "Media Browser Terms of Service", + "MessagePleaseAcceptTermsOfService": "Please accept the terms of service and privacy policy before continuing.", + "OptionIAcceptTermsOfService": "I accept the terms of service", + "ButtonPrivacyPolicy": "Privacy policy", + "ButtonTermsOfService": "Terms of Service", + "HeaderDeveloperOptions": "Developer Options", + "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionDisableForDevelopmentHelp": "Configure these as needed for web client development purposes.", + "OptionEnableWebClientResourceMinification": "Enable web client resource minification", + "LabelDashboardSourcePath": "Web client source path:", + "LabelDashboardSourcePathHelp": "If running the server from source, specify the path to the dashboard-ui folder. All web client files will be served from this location.", + "ButtonConvertMedia": "Convert media", + "ButtonOrganize": "Organize", + "LinkedToMediaBrowserConnect": "Linked to Media Browser Connect", + "HeaderSupporterBenefits": "Supporter Benefits", + "HeaderAddUser": "Add User", + "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Media Browser Connect from their user profile page.", + "LabelPinCode": "Pin code:", + "ButtonOk": "OK", + "ButtonCancel": "\u53d6\u6d88", + "ButtonExit": "Exit", + "ButtonNew": "\u5275\u5efa", + "HeaderTV": "TV", + "HeaderAudio": "Audio", + "HeaderVideo": "Video", + "HeaderPaths": "Paths", + "CategorySync": "Sync", + "TabPlaylist": "Playlist", + "HeaderEasyPinCode": "Easy Pin Code", + "HeaderGrownupsOnly": "Grown-ups Only!", + "DividerOr": "-- or --", + "HeaderInstalledServices": "Installed Services", + "HeaderAvailableServices": "Available Services", + "MessageNoServicesInstalled": "No services are currently installed.", + "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", + "KidsModeAdultInstruction": "Click the lock icon in the bottom right to configure or leave kids mode. Your pin code will be required.", + "ButtonConfigurePinCode": "Configure pin code", + "HeaderAdultsReadHere": "Adults Read Here!", + "RegisterWithPayPal": "Register with PayPal", + "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", + "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", + "LabelSyncTempPath": "Temporary file path:", + "LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.", + "LabelCustomCertificatePath": "Custom certificate path:", + "LabelCustomCertificatePathHelp": "Supply your own ssl certificate .pfx file. If omitted, the server will create a self-signed certificate.", + "TitleNotifications": "Notifications", + "ButtonDonateWithPayPal": "Donate with PayPal", + "OptionDetectArchiveFilesAsMedia": "Detect archive files as media", + "OptionDetectArchiveFilesAsMediaHelp": "If enabled, files with .rar and .zip extensions will be detected as media files.", + "LabelEnterConnectUserName": "User name or email:", + "LabelEnterConnectUserNameHelp": "This is your Media Browser online account user name or password.", + "LabelEnableEnhancedMovies": "Enable enhanced movie displays", + "LabelEnableEnhancedMoviesHelp": "When enabled, movies will be displayed as folders to include trailers, extras, cast & crew, and other related content.", + "HeaderSyncJobInfo": "Sync Job", + "FolderTypeMixed": "Mixed content", + "FolderTypeMovies": "Movies", + "FolderTypeMusic": "Music", + "FolderTypeAdultVideos": "Adult videos", + "FolderTypePhotos": "Photos", + "FolderTypeMusicVideos": "Music videos", + "FolderTypeHomeVideos": "Home videos", + "FolderTypeGames": "Games", + "FolderTypeBooks": "Books", + "FolderTypeTvShows": "TV", + "FolderTypeInherit": "Inherit", + "LabelContentType": "Content type:", + "TitleScheduledTasks": "Scheduled Tasks", + "HeaderSetupLibrary": "\u8a2d\u7f6e\u4f60\u7684\u5a92\u9ad4\u5eab", + "ButtonAddMediaFolder": "\u6dfb\u52a0\u5a92\u9ad4\u6587\u4ef6\u593e", + "LabelFolderType": "\u5a92\u9ad4\u6587\u4ef6\u593e\u985e\u578b\uff1a", + "ReferToMediaLibraryWiki": "\u53c3\u7167\u5a92\u9ad4\u5eab\u7ef4\u57fa", + "LabelCountry": "\u570b\u5bb6\uff1a", + "LabelLanguage": "\u8a9e\u8a00\uff1a", + "LabelTimeLimitHours": "Time limit (hours):", + "ButtonJoinTheDevelopmentTeam": "Join the Development Team", + "HeaderPreferredMetadataLanguage": "\u9996\u9078\u5a92\u9ad4\u8cc7\u6599\u8a9e\u8a00\uff1a", + "LabelSaveLocalMetadata": "\u4fdd\u5b58\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5230\u5a92\u9ad4\u6a94\u6848\u6240\u5728\u7684\u6587\u4ef6\u593e", + "LabelSaveLocalMetadataHelp": "\u76f4\u63a5\u4fdd\u5b58\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5230\u5a92\u9ad4\u6240\u5728\u7684\u6587\u4ef6\u593e\u80fd\u4f7f\u7de8\u8f2f\u5de5\u4f5c\u66f4\u5bb9\u6613\u3002", + "LabelDownloadInternetMetadata": "\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599", + "LabelDownloadInternetMetadataHelp": "Media Browser\u53ef\u4ee5\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u5716\u50cf\u53ca\u8cc7\u6599\u5f9e\u800c\u63d0\u4f9b\u66f4\u8c50\u5bcc\u7684\u5a92\u9ad4\u8868\u9054\u65b9\u5f0f\u3002", + "TabPreferences": "\u504f\u597d", + "TabPassword": "\u5bc6\u78bc", + "TabLibraryAccess": "\u5a92\u9ad4\u5eab\u700f\u89bd\u6b0a\u9650", + "TabAccess": "Access", + "TabImage": "\u5716\u50cf", + "TabProfile": "\u914d\u7f6e", + "TabMetadata": "\u5a92\u9ad4\u8cc7\u6599", + "TabImages": "\u5716\u50cf", + "TabNotifications": "Notifications", + "TabCollectionTitles": "\u6a19\u984c", + "HeaderDeviceAccess": "Device Access", + "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "OptionEnableAccessToAllChannels": "Enable access to all channels", + "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", + "LabelDisplayMissingEpisodesWithinSeasons": "\u986f\u793a\u7bc0\u76ee\u5b63\u5ea6\u5167\u7f3a\u5c11\u7684\u55ae\u5143", + "LabelUnairedMissingEpisodesWithinSeasons": "\u5728\u7bc0\u76ee\u5b63\u5ea6\u5167\u986f\u793a\u9084\u672a\u767c\u4f48\u7684\u55ae\u5143", + "HeaderVideoPlaybackSettings": "\u8996\u983b\u56de\u653e\u8a2d\u7f6e", + "HeaderPlaybackSettings": "Playback Settings", + "LabelAudioLanguagePreference": "\u97f3\u983b\u8a9e\u8a00\u504f\u597d\u9078\u9805\uff1a", + "LabelSubtitleLanguagePreference": "\u5b57\u5e55\u8a9e\u8a00\u504f\u597d\u9078\u9805\uff1a", + "OptionDefaultSubtitles": "Default", + "OptionOnlyForcedSubtitles": "Only forced subtitles", + "OptionAlwaysPlaySubtitles": "Always play subtitles", + "OptionNoSubtitles": "No Subtitles", + "OptionDefaultSubtitlesHelp": "Subtitles matching the language preference will be loaded when the audio is in a foreign language.", + "OptionOnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", + "OptionAlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", + "OptionNoSubtitlesHelp": "Subtitles will not be loaded by default.", + "TabProfiles": "\u914d\u7f6e", + "TabSecurity": "\u5b89\u5168\u6027", + "ButtonAddUser": "\u6dfb\u52a0\u7528\u6236", + "ButtonAddLocalUser": "Add Local User", + "ButtonInviteUser": "Invite User", + "ButtonSave": "\u4fdd\u5b58", + "ButtonResetPassword": "\u91cd\u8a2d\u5bc6\u78bc", + "LabelNewPassword": "\u65b0\u5bc6\u78bc\uff1a", + "LabelNewPasswordConfirm": "\u78ba\u8a8d\u65b0\u5bc6\u78bc\uff1a", + "HeaderCreatePassword": "\u5275\u5efa\u5bc6\u78bc", + "LabelCurrentPassword": "\u7576\u524d\u7684\u5bc6\u78bc\uff1a", + "LabelMaxParentalRating": "\u6700\u5927\u5141\u8a31\u7684\u5bb6\u9577\u8a55\u7d1a\uff1a", + "MaxParentalRatingHelp": "\u5177\u6709\u8f03\u9ad8\u7684\u5bb6\u9577\u8a55\u7d1a\u5167\u5bb9\u5c07\u5f9e\u9019\u7528\u6236\u88ab\u96b1\u85cf", + "LibraryAccessHelp": "\u9078\u64c7\u5a92\u9ad4\u6587\u4ef6\u593e\u8207\u9019\u7528\u6236\u5171\u4eab\u3002\u7ba1\u7406\u54e1\u5c07\u53ef\u4ee5\u4f7f\u7528\u5a92\u9ad4\u8cc7\u6599\u64da\u7ba1\u7406\u5668\u7de8\u8f2f\u6240\u6709\u7684\u5a92\u9ad4\u6587\u4ef6\u593e\u3002", + "ChannelAccessHelp": "Select the channels to share with this user. Administrators will be able to edit all channels using the metadata manager.", + "ButtonDeleteImage": "\u522a\u9664\u5716\u50cf", + "LabelSelectUsers": "Select users:", + "ButtonUpload": "\u4e0a\u8f09", + "HeaderUploadNewImage": "\u4e0a\u8f09\u65b0\u5716\u50cf", + "LabelDropImageHere": "Drop image here", + "ImageUploadAspectRatioHelp": "\u63a8\u85a6\u4f7f\u67091:1\u5bec\u9ad8\u6bd4\u4f8b\u7684\u5716\u50cf\u3002\u53ea\u5141\u8a31JPG\/PNG\u683c\u5f0f", + "MessageNothingHere": "\u9019\u88e1\u6c92\u6709\u4ec0\u9ebc\u3002", + "MessagePleaseEnsureInternetMetadata": "\u8acb\u78ba\u4fdd\u5df2\u555f\u7528\u5f9e\u4e92\u806f\u7db2\u4e0b\u8f09\u5a92\u9ad4\u8cc7\u6599\u3002", + "TabSuggested": "\u5efa\u8b70", + "TabLatest": "\u6700\u65b0", + "TabUpcoming": "\u5373\u5c07\u767c\u5e03", + "TabShows": "\u7bc0\u76ee", + "TabEpisodes": "\u55ae\u5143", + "TabGenres": "\u985e\u578b", + "TabPeople": "\u4eba\u7269", + "TabNetworks": "\u7db2\u7d61", + "HeaderUsers": "\u7528\u6236", + "HeaderFilters": "\u904e\u6ffe\uff1a", + "ButtonFilter": "\u904e\u6ffe", + "OptionFavorite": "\u6211\u7684\u6700\u611b", + "OptionLikes": "\u559c\u6b61", + "OptionDislikes": "\u4e0d\u559c\u6b61", + "OptionActors": "\u6f14\u54e1", + "OptionGuestStars": "\u7279\u9080\u660e\u661f", + "OptionDirectors": "\u5c0e\u6f14", + "OptionWriters": "\u4f5c\u8005", + "OptionProducers": "\u5236\u7247\u4eba", + "HeaderResume": "Resume", + "HeaderNextUp": "\u4e0b\u4e00\u96c6", + "NoNextUpItemsMessage": "\u6c92\u6709\u627e\u5230\u3002\u958b\u59cb\u770b\u4f60\u7684\u7bc0\u76ee\uff01", + "HeaderLatestEpisodes": "\u6700\u65b0\u7bc0\u76ee\u55ae\u5143", + "HeaderPersonTypes": "\u4eba\u7269\u985e\u578b\uff1a", + "TabSongs": "\u6b4c\u66f2", + "TabAlbums": "\u5c08\u8f2f", + "TabArtists": "\u6b4c\u624b", + "TabAlbumArtists": "\u5c08\u8f2f\u6b4c\u624b", + "TabMusicVideos": "Music Videos", + "ButtonSort": "\u6392\u5e8f", + "HeaderSortBy": "\u6392\u5e8f\u65b9\u5f0f\uff1a", + "HeaderSortOrder": "\u6392\u5e8f\u6b21\u5e8f\uff1a", + "OptionPlayed": "\u5df2\u64ad\u653e", + "OptionUnplayed": "\u672a\u64ad\u653e", + "OptionAscending": "\u5347\u5e8f", + "OptionDescending": "\u964d\u5e8f", + "OptionRuntime": "\u64ad\u653e\u9577\u5ea6", + "OptionReleaseDate": "Release Date", + "OptionPlayCount": "\u64ad\u653e\u6b21\u6578", + "OptionDatePlayed": "\u64ad\u653e\u65e5\u671f", + "OptionDateAdded": "\u6dfb\u52a0\u65e5\u671f", + "OptionAlbumArtist": "\u5c08\u8f2f\u6b4c\u624b", + "OptionArtist": "\u6b4c\u624b", + "OptionAlbum": "\u5c08\u8f2f", + "OptionTrackName": "\u66f2\u76ee\u540d\u7a31", + "OptionCommunityRating": "\u793e\u5340\u8a55\u5206", + "OptionNameSort": "\u540d\u5b57", + "OptionFolderSort": "Folders", + "OptionBudget": "\u9810\u7b97", + "OptionRevenue": "\u6536\u5165", + "OptionPoster": "\u6d77\u5831", + "OptionPosterCard": "Poster card", + "OptionBackdrop": "\u80cc\u666f", + "OptionTimeline": "\u6642\u9593\u8ef8", + "OptionThumb": "\u7e2e\u7565\u5716" } \ No newline at end of file From aac044f18f11009fc4911b509f4d6dd4c0d56f56 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 17:09:48 -0400 Subject: [PATCH 164/169] updated nuget --- .../Subtitles/AssParser.cs | 46 +++++++++++++++++++ MediaBrowser.Model/ApiClient/IApiClient.cs | 6 +++ Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 6 files changed, 58 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs index f28944945..2a8c958b2 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/AssParser.cs @@ -49,6 +49,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles trackInfo.TrackEvents.Add(subEvent); } } + RemoteNativeFormatting(trackInfo); return trackInfo; } @@ -69,5 +70,50 @@ namespace MediaBrowser.MediaEncoding.Subtitles }; return result; } + + /// + /// Credit: https://github.com/SubtitleEdit/subtitleedit/blob/master/src/Logic/SubtitleFormats/AdvancedSubStationAlpha.cs + /// + private void RemoteNativeFormatting(SubtitleTrackInfo subtitle) + { + foreach (var p in subtitle.TrackEvents) + { + int indexOfBegin = p.Text.IndexOf('{'); + string pre = string.Empty; + while (indexOfBegin >= 0 && p.Text.IndexOf('}') > indexOfBegin) + { + string s = p.Text.Substring(indexOfBegin); + if (s.StartsWith("{\\an1}", StringComparison.Ordinal) || + s.StartsWith("{\\an2}", StringComparison.Ordinal) || + s.StartsWith("{\\an3}", StringComparison.Ordinal) || + s.StartsWith("{\\an4}", StringComparison.Ordinal) || + s.StartsWith("{\\an5}", StringComparison.Ordinal) || + s.StartsWith("{\\an6}", StringComparison.Ordinal) || + s.StartsWith("{\\an7}", StringComparison.Ordinal) || + s.StartsWith("{\\an8}", StringComparison.Ordinal) || + s.StartsWith("{\\an9}", StringComparison.Ordinal)) + { + pre = s.Substring(0, 6); + } + else if (s.StartsWith("{\\an1\\", StringComparison.Ordinal) || + s.StartsWith("{\\an2\\", StringComparison.Ordinal) || + s.StartsWith("{\\an3\\", StringComparison.Ordinal) || + s.StartsWith("{\\an4\\", StringComparison.Ordinal) || + s.StartsWith("{\\an5\\", StringComparison.Ordinal) || + s.StartsWith("{\\an6\\", StringComparison.Ordinal) || + s.StartsWith("{\\an7\\", StringComparison.Ordinal) || + s.StartsWith("{\\an8\\", StringComparison.Ordinal) || + s.StartsWith("{\\an9\\", StringComparison.Ordinal)) + { + pre = s.Substring(0, 5) + "}"; + } + int indexOfEnd = p.Text.IndexOf('}'); + p.Text = p.Text.Remove(indexOfBegin, (indexOfEnd - indexOfBegin) + 1); + + indexOfBegin = p.Text.IndexOf('{'); + } + p.Text = pre + p.Text; + } + } } } diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index c32155a33..ef99e444f 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1479,6 +1479,12 @@ namespace MediaBrowser.Model.ApiClient /// Task<SyncOptions>. Task GetSyncOptions(SyncJobRequest jobInfo); /// + /// Gets the synchronize options. + /// + /// The job information. + /// Task<SyncDialogOptions>. + Task GetSyncOptions(SyncJob jobInfo); + /// /// Gets the movie recommendations. /// /// The query. diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index b8eade109..5941a2a15 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.590 + 3.0.591 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 2185c2c04..dd0e8602d 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.590 + 3.0.591 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 9b9996baf..2e09e01fd 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.590 + 3.0.591 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 ad2e38ab2..ce2248e09 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.590 + 3.0.591 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 - + From c87c516ea32b8c9bdd01f76c453b65bf24f9ce86 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 18 Mar 2015 23:47:21 -0400 Subject: [PATCH 165/169] updated nuget --- .../Library/LibraryStructureService.cs | 142 ++++++++++-------- .../Sync/IServerSyncProvider.cs | 3 +- .../Library/Resolvers/Movies/MovieResolver.cs | 13 +- .../Sync/MediaSync.cs | 6 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Model.Signed.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 8 files changed, 99 insertions(+), 77 deletions(-) diff --git a/MediaBrowser.Api/Library/LibraryStructureService.cs b/MediaBrowser.Api/Library/LibraryStructureService.cs index 27944a4ea..f5fe921ce 100644 --- a/MediaBrowser.Api/Library/LibraryStructureService.cs +++ b/MediaBrowser.Api/Library/LibraryStructureService.cs @@ -212,24 +212,26 @@ namespace MediaBrowser.Api.Library File.Create(path); } - - // Need to add a delay here or directory watchers may still pick up the changes - var task = Task.Delay(1000); - // Have to block here to allow exceptions to bubble - Task.WaitAll(task); } finally { - // No need to start if scanning the library because it will handle it - if (!request.RefreshLibrary) + Task.Run(() => { - _libraryMonitor.Start(); - } - } - - if (request.RefreshLibrary) - { - _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + // No need to start if scanning the library because it will handle it + if (request.RefreshLibrary) + { + _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + } + else + { + // Need to add a delay here or directory watchers may still pick up the changes + var task = Task.Delay(1000); + // Have to block here to allow exceptions to bubble + Task.WaitAll(task); + + _libraryMonitor.Start(); + } + }); } } @@ -279,24 +281,26 @@ namespace MediaBrowser.Api.Library } Directory.Move(currentPath, newPath); - - // Need to add a delay here or directory watchers may still pick up the changes - var task = Task.Delay(1000); - // Have to block here to allow exceptions to bubble - Task.WaitAll(task); } finally { - // No need to start if scanning the library because it will handle it - if (!request.RefreshLibrary) + Task.Run(() => { - _libraryMonitor.Start(); - } - } + // No need to start if scanning the library because it will handle it + if (request.RefreshLibrary) + { + _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + } + else + { + // Need to add a delay here or directory watchers may still pick up the changes + var task = Task.Delay(1000); + // Have to block here to allow exceptions to bubble + Task.WaitAll(task); - if (request.RefreshLibrary) - { - _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + _libraryMonitor.Start(); + } + }); } } @@ -325,24 +329,26 @@ namespace MediaBrowser.Api.Library try { _fileSystem.DeleteDirectory(path, true); - - // Need to add a delay here or directory watchers may still pick up the changes - var delayTask = Task.Delay(1000); - // Have to block here to allow exceptions to bubble - Task.WaitAll(delayTask); } finally { - // No need to start if scanning the library because it will handle it - if (!request.RefreshLibrary) + Task.Run(() => { - _libraryMonitor.Start(); - } - } + // No need to start if scanning the library because it will handle it + if (request.RefreshLibrary) + { + _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + } + else + { + // Need to add a delay here or directory watchers may still pick up the changes + var task = Task.Delay(1000); + // Have to block here to allow exceptions to bubble + Task.WaitAll(task); - if (request.RefreshLibrary) - { - _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + _libraryMonitor.Start(); + } + }); } } @@ -362,24 +368,26 @@ namespace MediaBrowser.Api.Library try { LibraryHelpers.AddMediaPath(_fileSystem, request.Name, request.Path, _appPaths); - - // Need to add a delay here or directory watchers may still pick up the changes - var task = Task.Delay(1000); - // Have to block here to allow exceptions to bubble - Task.WaitAll(task); } finally { - // No need to start if scanning the library because it will handle it - if (!request.RefreshLibrary) + Task.Run(() => { - _libraryMonitor.Start(); - } - } + // No need to start if scanning the library because it will handle it + if (request.RefreshLibrary) + { + _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + } + else + { + // Need to add a delay here or directory watchers may still pick up the changes + var task = Task.Delay(1000); + // Have to block here to allow exceptions to bubble + Task.WaitAll(task); - if (request.RefreshLibrary) - { - _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + _libraryMonitor.Start(); + } + }); } } @@ -399,24 +407,26 @@ namespace MediaBrowser.Api.Library try { LibraryHelpers.RemoveMediaPath(_fileSystem, request.Name, request.Path, _appPaths); - - // Need to add a delay here or directory watchers may still pick up the changes - var task = Task.Delay(1000); - // Have to block here to allow exceptions to bubble - Task.WaitAll(task); } finally { - // No need to start if scanning the library because it will handle it - if (!request.RefreshLibrary) + Task.Run(() => { - _libraryMonitor.Start(); - } - } + // No need to start if scanning the library because it will handle it + if (request.RefreshLibrary) + { + _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + } + else + { + // Need to add a delay here or directory watchers may still pick up the changes + var task = Task.Delay(1000); + // Have to block here to allow exceptions to bubble + Task.WaitAll(task); - if (request.RefreshLibrary) - { - _libraryManager.ValidateMediaLibrary(new Progress(), CancellationToken.None); + _libraryMonitor.Start(); + } + }); } } } diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 422349b80..abf884e9d 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -60,7 +60,8 @@ namespace MediaBrowser.Controller.Sync /// /// The path. /// The target. + /// The cancellation token. /// Task<List<DeviceFileInfo>>. - Task> GetFileSystemEntries(string path, SyncTarget target); + Task> GetFileSystemEntries(string path, SyncTarget target, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 95dcee98a..71daf2b0c 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -62,6 +62,11 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies return ResolveVideos