diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-04-14 00:43:41 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-04-14 00:43:41 -0400 |
| commit | 935de313d58c7a7ba792345c16cfd1c1aad09a78 (patch) | |
| tree | 2e9334986de5864b00d4901f031b5de6a970305e /MediaBrowser.Server.Implementations | |
| parent | 71a4f2761e784513ae2f3dda03aa549903808ebb (diff) | |
| parent | bd253399c2f1913c544c93fd6927dee37f8add2f (diff) | |
Merge pull request #1079 from MediaBrowser/dev
3.0.5582.0
Diffstat (limited to 'MediaBrowser.Server.Implementations')
120 files changed, 2848 insertions, 3239 deletions
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index e22bf2e7f..6a0e1208a 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -330,7 +330,7 @@ namespace MediaBrowser.Server.Implementations.Channels { files = files.Where(i => _libraryManager.IsAudioFile(i.FullName)); } - + var file = files .FirstOrDefault(i => i.Name.StartsWith(filenamePrefix, StringComparison.OrdinalIgnoreCase)); @@ -1454,7 +1454,14 @@ namespace MediaBrowser.Server.Implementations.Channels var host = new Uri(source.Path).Host.ToLower(); var channel = GetChannel(item.ChannelId); var channelProvider = GetChannelProvider(channel); - var limit = channelProvider.GetChannelFeatures().DailyDownloadLimit; + var features = channelProvider.GetChannelFeatures(); + + if (!features.SupportsContentDownloading) + { + throw new ArgumentException("The channel does not support downloading."); + } + + var limit = features.DailyDownloadLimit; if (!ValidateDownloadLimit(host, limit)) { diff --git a/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs b/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs index 80a7c50d1..f5ddbdb78 100644 --- a/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Collections/CollectionImageProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; @@ -16,7 +17,7 @@ namespace MediaBrowser.Server.Implementations.Collections { public class CollectionImageProvider : BaseDynamicImageProvider<BoxSet> { - public CollectionImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) + public CollectionImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) { } diff --git a/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs b/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs index bbe37cb50..8f5d8fe9b 100644 --- a/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs +++ b/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs @@ -14,9 +14,7 @@ namespace MediaBrowser.Server.Implementations.Collections public override bool IsVisible(User user) { - return base.IsVisible(user) && GetChildren(user, false) - .OfType<BoxSet>() - .Any(i => i.IsVisible(user)); + return base.IsVisible(user) && GetChildren(user, false).Any(); } public override bool IsHidden diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index b1b6cd899..2d39f760e 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -517,7 +517,7 @@ namespace MediaBrowser.Server.Implementations.Connect if (!connectUser.IsActive) { - throw new ArgumentException("The Emby account has been disabled."); + throw new ArgumentException("The Emby account is not active. Please ensure the account has been activated by following the instructions within the email confirmation."); } connectUserId = connectUser.Id; diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs b/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs deleted file mode 100644 index 7117482c8..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/ImageHeader.cs +++ /dev/null @@ -1,223 +0,0 @@ -using MediaBrowser.Common.IO; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Logging; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - /// <summary> - /// Taken from http://stackoverflow.com/questions/111345/getting-image-dimensions-without-reading-the-entire-file/111349 - /// http://www.codeproject.com/Articles/35978/Reading-Image-Headers-to-Get-Width-and-Height - /// Minor improvements including supporting unsigned 16-bit integers when decoding Jfif and added logic - /// to load the image using new Bitmap if reading the headers fails - /// </summary> - public static class ImageHeader - { - /// <summary> - /// The error message - /// </summary> - const string ErrorMessage = "Could not recognize image format."; - - /// <summary> - /// The image format decoders - /// </summary> - private static readonly KeyValuePair<byte[], Func<BinaryReader, ImageSize>>[] ImageFormatDecoders = new Dictionary<byte[], Func<BinaryReader, ImageSize>> - { - { new byte[] { 0x42, 0x4D }, DecodeBitmap }, - { new byte[] { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61 }, DecodeGif }, - { new byte[] { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61 }, DecodeGif }, - { new byte[] { 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A }, DecodePng }, - { new byte[] { 0xff, 0xd8 }, DecodeJfif } - - }.ToArray(); - - private static readonly int MaxMagicBytesLength = ImageFormatDecoders.Select(i => i.Key.Length).OrderByDescending(i => i).First(); - - /// <summary> - /// Gets the dimensions of an image. - /// </summary> - /// <param name="path">The path of the image to get the dimensions of.</param> - /// <param name="logger">The logger.</param> - /// <param name="fileSystem">The file system.</param> - /// <returns>The dimensions of the specified image.</returns> - /// <exception cref="ArgumentException">The image was of an unrecognised format.</exception> - public static ImageSize GetDimensions(string path, ILogger logger, IFileSystem fileSystem) - { - using (var fs = File.OpenRead(path)) - { - using (var binaryReader = new BinaryReader(fs)) - { - return GetDimensions(binaryReader); - } - } - } - - /// <summary> - /// Gets the dimensions of an image. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>Size.</returns> - /// <exception cref="System.ArgumentException">binaryReader</exception> - /// <exception cref="ArgumentException">The image was of an unrecognized format.</exception> - private static ImageSize GetDimensions(BinaryReader binaryReader) - { - var magicBytes = new byte[MaxMagicBytesLength]; - - for (var i = 0; i < MaxMagicBytesLength; i += 1) - { - magicBytes[i] = binaryReader.ReadByte(); - - foreach (var kvPair in ImageFormatDecoders) - { - if (StartsWith(magicBytes, kvPair.Key)) - { - return kvPair.Value(binaryReader); - } - } - } - - throw new ArgumentException(ErrorMessage, "binaryReader"); - } - - /// <summary> - /// Startses the with. - /// </summary> - /// <param name="thisBytes">The this bytes.</param> - /// <param name="thatBytes">The that bytes.</param> - /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns> - private static bool StartsWith(byte[] thisBytes, byte[] thatBytes) - { - for (int i = 0; i < thatBytes.Length; i += 1) - { - if (thisBytes[i] != thatBytes[i]) - { - return false; - } - } - - return true; - } - - /// <summary> - /// Reads the little endian int16. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>System.Int16.</returns> - private static short ReadLittleEndianInt16(BinaryReader binaryReader) - { - var bytes = new byte[sizeof(short)]; - - for (int i = 0; i < sizeof(short); i += 1) - { - bytes[sizeof(short) - 1 - i] = binaryReader.ReadByte(); - } - return BitConverter.ToInt16(bytes, 0); - } - - /// <summary> - /// Reads the little endian int32. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>System.Int32.</returns> - private static int ReadLittleEndianInt32(BinaryReader binaryReader) - { - var bytes = new byte[sizeof(int)]; - for (int i = 0; i < sizeof(int); i += 1) - { - bytes[sizeof(int) - 1 - i] = binaryReader.ReadByte(); - } - return BitConverter.ToInt32(bytes, 0); - } - - /// <summary> - /// Decodes the bitmap. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>Size.</returns> - private static ImageSize DecodeBitmap(BinaryReader binaryReader) - { - binaryReader.ReadBytes(16); - int width = binaryReader.ReadInt32(); - int height = binaryReader.ReadInt32(); - return new ImageSize - { - Width = width, - Height = height - }; - } - - /// <summary> - /// Decodes the GIF. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>Size.</returns> - private static ImageSize DecodeGif(BinaryReader binaryReader) - { - int width = binaryReader.ReadInt16(); - int height = binaryReader.ReadInt16(); - return new ImageSize - { - Width = width, - Height = height - }; - } - - /// <summary> - /// Decodes the PNG. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>Size.</returns> - private static ImageSize DecodePng(BinaryReader binaryReader) - { - binaryReader.ReadBytes(8); - int width = ReadLittleEndianInt32(binaryReader); - int height = ReadLittleEndianInt32(binaryReader); - return new ImageSize - { - Width = width, - Height = height - }; - } - - /// <summary> - /// Decodes the jfif. - /// </summary> - /// <param name="binaryReader">The binary reader.</param> - /// <returns>Size.</returns> - /// <exception cref="System.ArgumentException"></exception> - private static ImageSize DecodeJfif(BinaryReader binaryReader) - { - while (binaryReader.ReadByte() == 0xff) - { - byte marker = binaryReader.ReadByte(); - short chunkLength = ReadLittleEndianInt16(binaryReader); - if (marker == 0xc0) - { - binaryReader.ReadByte(); - int height = ReadLittleEndianInt16(binaryReader); - int width = ReadLittleEndianInt16(binaryReader); - return new ImageSize - { - Width = width, - Height = height - }; - } - - if (chunkLength < 0) - { - var uchunkLength = (ushort)chunkLength; - binaryReader.ReadBytes(uchunkLength - 2); - } - else - { - binaryReader.ReadBytes(chunkLength - 2); - } - } - - throw new ArgumentException(ErrorMessage); - } - } -} diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs deleted file mode 100644 index d78d5e8ea..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs +++ /dev/null @@ -1,875 +0,0 @@ -using ImageMagickSharp; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.IO; -using MediaBrowser.Controller; -using MediaBrowser.Controller.Drawing; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Drawing; -using MediaBrowser.Model.Entities; -using MediaBrowser.Model.Logging; -using MediaBrowser.Model.Serialization; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - /// <summary> - /// Class ImageProcessor - /// </summary> - public class ImageProcessor : IImageProcessor, IDisposable - { - /// <summary> - /// The us culture - /// </summary> - protected readonly CultureInfo UsCulture = new CultureInfo("en-US"); - - /// <summary> - /// The _cached imaged sizes - /// </summary> - private readonly ConcurrentDictionary<Guid, ImageSize> _cachedImagedSizes; - - /// <summary> - /// Gets the list of currently registered image processors - /// Image processors are specialized metadata providers that run after the normal ones - /// </summary> - /// <value>The image enhancers.</value> - public IEnumerable<IImageEnhancer> ImageEnhancers { get; private set; } - - /// <summary> - /// The _logger - /// </summary> - private readonly ILogger _logger; - - private readonly IFileSystem _fileSystem; - private readonly IJsonSerializer _jsonSerializer; - private readonly IServerApplicationPaths _appPaths; - - public ImageProcessor(ILogger logger, IServerApplicationPaths appPaths, IFileSystem fileSystem, IJsonSerializer jsonSerializer) - { - _logger = logger; - _fileSystem = fileSystem; - _jsonSerializer = jsonSerializer; - _appPaths = appPaths; - - _saveImageSizeTimer = new Timer(SaveImageSizeCallback, null, Timeout.Infinite, Timeout.Infinite); - - Dictionary<Guid, ImageSize> sizeDictionary; - - try - { - sizeDictionary = jsonSerializer.DeserializeFromFile<Dictionary<Guid, ImageSize>>(ImageSizeFile) ?? - new Dictionary<Guid, ImageSize>(); - } - catch (FileNotFoundException) - { - // No biggie - sizeDictionary = new Dictionary<Guid, ImageSize>(); - } - catch (DirectoryNotFoundException) - { - // No biggie - sizeDictionary = new Dictionary<Guid, ImageSize>(); - } - catch (Exception ex) - { - logger.ErrorException("Error parsing image size cache file", ex); - - sizeDictionary = new Dictionary<Guid, ImageSize>(); - } - - _cachedImagedSizes = new ConcurrentDictionary<Guid, ImageSize>(sizeDictionary); - - LogImageMagickVersionVersion(); - } - - private string ResizedImageCachePath - { - get - { - return Path.Combine(_appPaths.ImageCachePath, "resized-images"); - } - } - - private string EnhancedImageCachePath - { - get - { - return Path.Combine(_appPaths.ImageCachePath, "enhanced-images"); - } - } - - private string CroppedWhitespaceImageCachePath - { - get - { - return Path.Combine(_appPaths.ImageCachePath, "cropped-images"); - } - } - - public void AddParts(IEnumerable<IImageEnhancer> enhancers) - { - ImageEnhancers = enhancers.ToArray(); - } - - public async Task ProcessImage(ImageProcessingOptions options, Stream toStream) - { - var file = await ProcessImage(options).ConfigureAwait(false); - - using (var fileStream = _fileSystem.GetFileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, true)) - { - await fileStream.CopyToAsync(toStream).ConfigureAwait(false); - } - } - - public ImageFormat[] GetSupportedImageOutputFormats() - { - 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<string> ProcessImage(ImageProcessingOptions options) - { - if (options == null) - { - throw new ArgumentNullException("options"); - } - - var originalImagePath = options.Image.Path; - - if (options.HasDefaultOptions(originalImagePath) && options.Enhancers.Count == 0 && !options.CropWhiteSpace) - { - // Just spit out the original file if all the options are default - return originalImagePath; - } - - var dateModified = options.Image.DateModified; - var length = options.Image.Length; - - if (options.CropWhiteSpace) - { - var tuple = await GetWhitespaceCroppedImage(originalImagePath, dateModified, length).ConfigureAwait(false); - - originalImagePath = tuple.Item1; - dateModified = tuple.Item2; - length = tuple.Item3; - } - - if (options.Enhancers.Count > 0) - { - var tuple = await GetEnhancedImage(new ItemImageInfo - { - Length = length, - DateModified = dateModified, - Type = options.Image.Type, - Path = originalImagePath - - }, options.Item, options.ImageIndex, options.Enhancers).ConfigureAwait(false); - - originalImagePath = tuple.Item1; - dateModified = tuple.Item2; - length = tuple.Item3; - } - - var originalImageSize = GetImageSize(originalImagePath, dateModified); - - // Determine the output size based on incoming parameters - var newSize = DrawingUtils.Resize(originalImageSize, options.Width, options.Height, options.MaxWidth, options.MaxHeight); - - if (options.HasDefaultOptionsWithoutSize(originalImagePath) && newSize.Equals(originalImageSize) && options.Enhancers.Count == 0) - { - // Just spit out the original file if the new size equals the old - return originalImagePath; - } - - var quality = options.Quality ?? 90; - - var outputFormat = GetOutputFormat(options.OutputFormat); - var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, length, outputFormat, options.AddPlayedIndicator, options.PercentPlayed, options.UnplayedCount, options.BackgroundColor); - - var semaphore = GetLock(cacheFilePath); - - await semaphore.WaitAsync().ConfigureAwait(false); - - try - { - CheckDisposed(); - - if (!File.Exists(cacheFilePath)) - { - var newWidth = Convert.ToInt32(newSize.Width); - var newHeight = Convert.ToInt32(newSize.Height); - - Directory.CreateDirectory(Path.GetDirectoryName(cacheFilePath)); - - if (string.IsNullOrWhiteSpace(options.BackgroundColor)) - { - using (var originalImage = new MagickWand(originalImagePath)) - { - originalImage.CurrentImage.ResizeImage(newWidth, newHeight); - - DrawIndicator(originalImage, newWidth, newHeight, options); - - originalImage.CurrentImage.CompressionQuality = quality; - - originalImage.SaveImage(cacheFilePath); - } - } - else - { - using (var wand = new MagickWand(newWidth, newHeight, options.BackgroundColor)) - { - using (var originalImage = new MagickWand(originalImagePath)) - { - originalImage.CurrentImage.ResizeImage(newWidth, newHeight); - - wand.CurrentImage.CompositeImage(originalImage, CompositeOperator.OverCompositeOp, 0, 0); - DrawIndicator(wand, newWidth, newHeight, options); - - wand.CurrentImage.CompressionQuality = quality; - - wand.SaveImage(cacheFilePath); - } - } - } - } - } - finally - { - semaphore.Release(); - } - - return cacheFilePath; - } - - private ImageFormat GetOutputFormat(ImageFormat requestedFormat) - { - if (requestedFormat == ImageFormat.Webp && !_webpAvailable) - { - return ImageFormat.Png; - } - - return requestedFormat; - } - - /// <summary> - /// Draws the indicator. - /// </summary> - /// <param name="wand">The wand.</param> - /// <param name="imageWidth">Width of the image.</param> - /// <param name="imageHeight">Height of the image.</param> - /// <param name="options">The options.</param> - private void DrawIndicator(MagickWand wand, int imageWidth, int imageHeight, ImageProcessingOptions options) - { - if (!options.AddPlayedIndicator && !options.UnplayedCount.HasValue && options.PercentPlayed.Equals(0)) - { - return; - } - - try - { - if (options.AddPlayedIndicator) - { - var currentImageSize = new ImageSize(imageWidth, imageHeight); - - new PlayedIndicatorDrawer(_appPaths).DrawPlayedIndicator(wand, currentImageSize); - } - else if (options.UnplayedCount.HasValue) - { - var currentImageSize = new ImageSize(imageWidth, imageHeight); - - new UnplayedCountIndicator(_appPaths).DrawUnplayedCountIndicator(wand, currentImageSize, options.UnplayedCount.Value); - } - - if (options.PercentPlayed > 0) - { - new PercentPlayedDrawer().Process(wand, options.PercentPlayed); - } - } - catch (Exception ex) - { - _logger.ErrorException("Error drawing indicator overlay", ex); - } - } - - /// <summary> - /// Crops whitespace from an image, caches the result, and returns the cached path - /// </summary> - private async Task<Tuple<string, DateTime, long>> GetWhitespaceCroppedImage(string originalImagePath, DateTime dateModified, long length) - { - var name = originalImagePath; - name += "datemodified=" + dateModified.Ticks; - name += "length=" + length; - - var croppedImagePath = GetCachePath(CroppedWhitespaceImageCachePath, name, Path.GetExtension(originalImagePath)); - - var semaphore = GetLock(croppedImagePath); - - await semaphore.WaitAsync().ConfigureAwait(false); - - // Check again in case of contention - if (File.Exists(croppedImagePath)) - { - semaphore.Release(); - return GetResult(croppedImagePath); - } - - try - { - Directory.CreateDirectory(Path.GetDirectoryName(croppedImagePath)); - - using (var wand = new MagickWand(originalImagePath)) - { - wand.CurrentImage.TrimImage(10); - wand.SaveImage(croppedImagePath); - } - } - catch (Exception ex) - { - // We have to have a catch-all here because some of the .net image methods throw a plain old Exception - _logger.ErrorException("Error cropping image {0}", ex, originalImagePath); - - return new Tuple<string, DateTime, long>(originalImagePath, dateModified, length); - } - finally - { - semaphore.Release(); - } - - return GetResult(croppedImagePath); - } - - private Tuple<string, DateTime, long> GetResult(string path) - { - var file = new FileInfo(path); - - return new Tuple<string, DateTime, long>(path, _fileSystem.GetLastWriteTimeUtc(file), file.Length); - } - - /// <summary> - /// Increment this when there's a change requiring caches to be invalidated - /// </summary> - private const string Version = "3"; - - /// <summary> - /// Gets the cache file path based on a set of parameters - /// </summary> - private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, long length, ImageFormat format, bool addPlayedIndicator, double percentPlayed, int? unwatchedCount, string backgroundColor) - { - var filename = originalPath; - - filename += "width=" + outputSize.Width; - - filename += "height=" + outputSize.Height; - - filename += "quality=" + quality; - - filename += "datemodified=" + dateModified.Ticks; - filename += "length=" + length; - - filename += "f=" + format; - - if (addPlayedIndicator) - { - filename += "pl=true"; - } - - if (percentPlayed > 0) - { - filename += "p=" + percentPlayed; - } - - if (unwatchedCount.HasValue) - { - filename += "p=" + unwatchedCount.Value; - } - - if (!string.IsNullOrEmpty(backgroundColor)) - { - filename += "b=" + backgroundColor; - } - - filename += "v=" + Version; - - return GetCachePath(ResizedImageCachePath, filename, "." + format.ToString().ToLower()); - } - - /// <summary> - /// Gets the size of the image. - /// </summary> - /// <param name="path">The path.</param> - /// <returns>ImageSize.</returns> - public ImageSize GetImageSize(string path) - { - return GetImageSize(path, File.GetLastWriteTimeUtc(path)); - } - - public ImageSize GetImageSize(ItemImageInfo info) - { - return GetImageSize(info.Path, info.DateModified); - } - - /// <summary> - /// Gets the size of the image. - /// </summary> - /// <param name="path">The path.</param> - /// <param name="imageDateModified">The image date modified.</param> - /// <returns>ImageSize.</returns> - /// <exception cref="System.ArgumentNullException">path</exception> - private ImageSize GetImageSize(string path, DateTime imageDateModified) - { - if (string.IsNullOrEmpty(path)) - { - throw new ArgumentNullException("path"); - } - - var name = path + "datemodified=" + imageDateModified.Ticks; - - ImageSize size; - - var cacheHash = name.GetMD5(); - - if (!_cachedImagedSizes.TryGetValue(cacheHash, out size)) - { - size = GetImageSizeInternal(path); - - _cachedImagedSizes.AddOrUpdate(cacheHash, size, (keyName, oldValue) => size); - } - - return size; - } - - /// <summary> - /// Gets the image size internal. - /// </summary> - /// <param name="path">The path.</param> - /// <returns>ImageSize.</returns> - private ImageSize GetImageSizeInternal(string path) - { - ImageSize size; - - try - { - size = ImageHeader.GetDimensions(path, _logger, _fileSystem); - } - catch - { - _logger.Info("Failed to read image header for {0}. Doing it the slow way.", path); - - CheckDisposed(); - - using (var wand = new MagickWand()) - { - wand.PingImage(path); - var img = wand.CurrentImage; - - size = new ImageSize - { - Width = img.Width, - Height = img.Height - }; - } - } - - StartSaveImageSizeTimer(); - - return size; - } - - private readonly Timer _saveImageSizeTimer; - private const int SaveImageSizeTimeout = 5000; - private readonly object _saveImageSizeLock = new object(); - private void StartSaveImageSizeTimer() - { - _saveImageSizeTimer.Change(SaveImageSizeTimeout, Timeout.Infinite); - } - - private void SaveImageSizeCallback(object state) - { - lock (_saveImageSizeLock) - { - try - { - var path = ImageSizeFile; - Directory.CreateDirectory(Path.GetDirectoryName(path)); - _jsonSerializer.SerializeToFile(_cachedImagedSizes, path); - } - catch (Exception ex) - { - _logger.ErrorException("Error saving image size file", ex); - } - } - } - - private string ImageSizeFile - { - get - { - return Path.Combine(_appPaths.DataPath, "imagesizes.json"); - } - } - - /// <summary> - /// Gets the image cache tag. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="image">The image.</param> - /// <returns>Guid.</returns> - /// <exception cref="System.ArgumentNullException">item</exception> - public string GetImageCacheTag(IHasImages item, ItemImageInfo image) - { - if (item == null) - { - throw new ArgumentNullException("item"); - } - - if (image == null) - { - throw new ArgumentNullException("image"); - } - - var supportedEnhancers = GetSupportedEnhancers(item, image.Type); - - return GetImageCacheTag(item, image, supportedEnhancers.ToList()); - } - - /// <summary> - /// Gets the image cache tag. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="image">The image.</param> - /// <param name="imageEnhancers">The image enhancers.</param> - /// <returns>Guid.</returns> - /// <exception cref="System.ArgumentNullException">item</exception> - public string GetImageCacheTag(IHasImages item, ItemImageInfo image, List<IImageEnhancer> imageEnhancers) - { - if (item == null) - { - throw new ArgumentNullException("item"); - } - - if (imageEnhancers == null) - { - throw new ArgumentNullException("imageEnhancers"); - } - - if (image == null) - { - throw new ArgumentNullException("image"); - } - - var originalImagePath = image.Path; - var dateModified = image.DateModified; - var imageType = image.Type; - var length = image.Length; - - // Optimization - if (imageEnhancers.Count == 0) - { - return (originalImagePath + dateModified.Ticks + string.Empty + length).GetMD5().ToString("N"); - } - - // Cache name is created with supported enhancers combined with the last config change so we pick up new config changes - var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList(); - cacheKeys.Add(originalImagePath + dateModified.Ticks + string.Empty + length); - - return string.Join("|", cacheKeys.ToArray()).GetMD5().ToString("N"); - } - - /// <summary> - /// Gets the enhanced image. - /// </summary> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <returns>Task{System.String}.</returns> - public async Task<string> GetEnhancedImage(IHasImages item, ImageType imageType, int imageIndex) - { - var enhancers = GetSupportedEnhancers(item, imageType).ToList(); - - var imageInfo = item.GetImageInfo(imageType, imageIndex); - - var result = await GetEnhancedImage(imageInfo, item, imageIndex, enhancers); - - return result.Item1; - } - - private async Task<Tuple<string, DateTime, long>> GetEnhancedImage(ItemImageInfo image, - IHasImages item, - int imageIndex, - List<IImageEnhancer> enhancers) - { - var originalImagePath = image.Path; - var dateModified = image.DateModified; - var imageType = image.Type; - var length = image.Length; - - try - { - var cacheGuid = GetImageCacheTag(item, image, enhancers); - - // Enhance if we have enhancers - var ehnancedImagePath = await GetEnhancedImageInternal(originalImagePath, item, imageType, imageIndex, enhancers, cacheGuid).ConfigureAwait(false); - - // If the path changed update dateModified - if (!ehnancedImagePath.Equals(originalImagePath, StringComparison.OrdinalIgnoreCase)) - { - return GetResult(ehnancedImagePath); - } - } - catch (Exception ex) - { - _logger.Error("Error enhancing image", ex); - } - - return new Tuple<string, DateTime, long>(originalImagePath, dateModified, length); - } - - /// <summary> - /// Gets the enhanced image internal. - /// </summary> - /// <param name="originalImagePath">The original image path.</param> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <param name="supportedEnhancers">The supported enhancers.</param> - /// <param name="cacheGuid">The cache unique identifier.</param> - /// <returns>Task<System.String>.</returns> - /// <exception cref="ArgumentNullException"> - /// originalImagePath - /// or - /// item - /// </exception> - private async Task<string> GetEnhancedImageInternal(string originalImagePath, - IHasImages item, - ImageType imageType, - int imageIndex, - IEnumerable<IImageEnhancer> supportedEnhancers, - string cacheGuid) - { - if (string.IsNullOrEmpty(originalImagePath)) - { - throw new ArgumentNullException("originalImagePath"); - } - - if (item == null) - { - throw new ArgumentNullException("item"); - } - - // All enhanced images are saved as png to allow transparency - var enhancedImagePath = GetCachePath(EnhancedImageCachePath, cacheGuid + ".png"); - - var semaphore = GetLock(enhancedImagePath); - - await semaphore.WaitAsync().ConfigureAwait(false); - - // Check again in case of contention - if (File.Exists(enhancedImagePath)) - { - semaphore.Release(); - return enhancedImagePath; - } - - try - { - Directory.CreateDirectory(Path.GetDirectoryName(enhancedImagePath)); - await ExecuteImageEnhancers(supportedEnhancers, originalImagePath, enhancedImagePath, item, imageType, imageIndex).ConfigureAwait(false); - } - finally - { - semaphore.Release(); - } - - return enhancedImagePath; - } - - /// <summary> - /// Executes the image enhancers. - /// </summary> - /// <param name="imageEnhancers">The image enhancers.</param> - /// <param name="inputPath">The input path.</param> - /// <param name="outputPath">The output path.</param> - /// <param name="item">The item.</param> - /// <param name="imageType">Type of the image.</param> - /// <param name="imageIndex">Index of the image.</param> - /// <returns>Task{EnhancedImage}.</returns> - private async Task ExecuteImageEnhancers(IEnumerable<IImageEnhancer> imageEnhancers, string inputPath, string outputPath, IHasImages item, ImageType imageType, int imageIndex) - { - // Run the enhancers sequentially in order of priority - foreach (var enhancer in imageEnhancers) - { - var typeName = enhancer.GetType().Name; - - try - { - await enhancer.EnhanceImageAsync(item, inputPath, outputPath, imageType, imageIndex).ConfigureAwait(false); - } - catch (Exception ex) - { - _logger.ErrorException("{0} failed enhancing {1}", ex, typeName, item.Name); - - throw; - } - - // Feed the output into the next enhancer as input - inputPath = outputPath; - } - } - - /// <summary> - /// The _semaphoreLocks - /// </summary> - private readonly ConcurrentDictionary<string, SemaphoreSlim> _semaphoreLocks = new ConcurrentDictionary<string, SemaphoreSlim>(); - - /// <summary> - /// Gets the lock. - /// </summary> - /// <param name="filename">The filename.</param> - /// <returns>System.Object.</returns> - private SemaphoreSlim GetLock(string filename) - { - return _semaphoreLocks.GetOrAdd(filename, key => new SemaphoreSlim(1, 1)); - } - - /// <summary> - /// Gets the cache path. - /// </summary> - /// <param name="path">The path.</param> - /// <param name="uniqueName">Name of the unique.</param> - /// <param name="fileExtension">The file extension.</param> - /// <returns>System.String.</returns> - /// <exception cref="System.ArgumentNullException"> - /// path - /// or - /// uniqueName - /// or - /// fileExtension - /// </exception> - public string GetCachePath(string path, string uniqueName, string fileExtension) - { - if (string.IsNullOrEmpty(path)) - { - throw new ArgumentNullException("path"); - } - if (string.IsNullOrEmpty(uniqueName)) - { - throw new ArgumentNullException("uniqueName"); - } - - if (string.IsNullOrEmpty(fileExtension)) - { - throw new ArgumentNullException("fileExtension"); - } - - var filename = uniqueName.GetMD5() + fileExtension; - - return GetCachePath(path, filename); - } - - /// <summary> - /// Gets the cache path. - /// </summary> - /// <param name="path">The path.</param> - /// <param name="filename">The filename.</param> - /// <returns>System.String.</returns> - /// <exception cref="System.ArgumentNullException"> - /// path - /// or - /// filename - /// </exception> - public string GetCachePath(string path, string filename) - { - if (string.IsNullOrEmpty(path)) - { - throw new ArgumentNullException("path"); - } - if (string.IsNullOrEmpty(filename)) - { - throw new ArgumentNullException("filename"); - } - - var prefix = filename.Substring(0, 1); - - path = Path.Combine(path, prefix); - - return Path.Combine(path, filename); - } - - public IEnumerable<IImageEnhancer> GetSupportedEnhancers(IHasImages item, ImageType imageType) - { - return ImageEnhancers.Where(i => - { - try - { - return i.Supports(item, imageType); - } - catch (Exception ex) - { - _logger.ErrorException("Error in image enhancer: {0}", ex, i.GetType().Name); - - return false; - } - - }); - } - - private bool _disposed; - public void Dispose() - { - _disposed = true; - Wand.CloseEnvironment(); - _saveImageSizeTimer.Dispose(); - } - - private void CheckDisposed() - { - if (_disposed) - { - throw new ObjectDisposedException(GetType().Name); - } - } - } -} diff --git a/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs b/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs deleted file mode 100644 index 20c2ab93b..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/PercentPlayedDrawer.cs +++ /dev/null @@ -1,40 +0,0 @@ -using ImageMagickSharp; -using System; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - public class PercentPlayedDrawer - { - private const int IndicatorHeight = 8; - - public void Process(MagickWand wand, double percent) - { - var currentImage = wand.CurrentImage; - var height = currentImage.Height; - - using (var draw = new DrawingWand()) - { - using (PixelWand pixel = new PixelWand()) - { - 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; - - 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 deleted file mode 100644 index 359065cc2..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/PlayedIndicatorDrawer.cs +++ /dev/null @@ -1,86 +0,0 @@ -using ImageMagickSharp; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.Drawing; -using System; -using System.IO; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - public class PlayedIndicatorDrawer - { - private const int FontSize = 52; - private const int OffsetFromTopRightCorner = 38; - - private readonly IApplicationPaths _appPaths; - - public PlayedIndicatorDrawer(IApplicationPaths appPaths) - { - _appPaths = appPaths; - } - - public void DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) - { - var x = imageSize.Width - OffsetFromTopRightCorner; - - using (var draw = new DrawingWand()) - { - using (PixelWand pixel = new PixelWand()) - { - 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 = ExtractFont("webdings.ttf", _appPaths); - 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); - } - } - } - - internal static string ExtractFont(string name, IApplicationPaths paths) - { - var filePath = Path.Combine(paths.ProgramDataPath, "fonts", name); - - if (File.Exists(filePath)) - { - return filePath; - } - - var namespacePath = typeof(PlayedIndicatorDrawer).Namespace + ".fonts." + name; - var tempPath = Path.Combine(paths.TempDirectory, Guid.NewGuid().ToString("N") + ".ttf"); - Directory.CreateDirectory(Path.GetDirectoryName(tempPath)); - - using (var stream = typeof(PlayedIndicatorDrawer).Assembly.GetManifestResourceStream(namespacePath)) - { - using (var fileStream = new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.Read)) - { - stream.CopyTo(fileStream); - } - } - - Directory.CreateDirectory(Path.GetDirectoryName(filePath)); - - try - { - File.Copy(tempPath, filePath, false); - } - catch (IOException) - { - - } - - return tempPath; - } - } -} diff --git a/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs b/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs deleted file mode 100644 index 71cced041..000000000 --- a/MediaBrowser.Server.Implementations/Drawing/UnplayedCountIndicator.cs +++ /dev/null @@ -1,70 +0,0 @@ -using ImageMagickSharp; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Model.Drawing; -using System.Globalization; - -namespace MediaBrowser.Server.Implementations.Drawing -{ - public class UnplayedCountIndicator - { - private const int OffsetFromTopRightCorner = 38; - - private readonly IApplicationPaths _appPaths; - - public UnplayedCountIndicator(IApplicationPaths appPaths) - { - _appPaths = appPaths; - } - - public void DrawUnplayedCountIndicator(MagickWand wand, ImageSize imageSize, int count) - { - var x = imageSize.Width - OffsetFromTopRightCorner; - var text = count.ToString(CultureInfo.InvariantCulture); - - using (var draw = new DrawingWand()) - { - using (PixelWand pixel = new PixelWand()) - { - 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 = PlayedIndicatorDrawer.ExtractFont("robotoregular.ttf", _appPaths); - 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) - { - x += 1; - } - 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/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index 8934c9c8f..c4501564f 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (byName != null && !(item is LiveTvChannel)) { - //if (options.Fields.Contains(ItemFields.ItemCounts)) + if (options.Fields.Contains(ItemFields.ItemCounts)) { var itemFilter = byName.GetItemFilter(); @@ -125,7 +125,7 @@ namespace MediaBrowser.Server.Implementations.Dto if (byName != null && !(item is LiveTvChannel)) { - //if (options.Fields.Contains(ItemFields.ItemCounts)) + if (options.Fields.Contains(ItemFields.ItemCounts)) { var itemFilter = byName.GetItemFilter(); @@ -188,7 +188,22 @@ namespace MediaBrowser.Server.Implementations.Dto return new Tuple<IEnumerable<string>, IEnumerable<string>>(result1.Items, result2.Items); } - private void FillSyncInfo(BaseItemDto dto, BaseItem item, DtoOptions options, User user) + public void FillSyncInfo(IEnumerable<IHasSyncInfo> dtos, DtoOptions options, User user) + { + if (options.Fields.Contains(ItemFields.SyncInfo)) + { + var tuple = GetItemIdsWithSyncJobs(options); + + foreach (var dto in dtos) + { + var item = _libraryManager.GetItemById(dto.Id); + + FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user); + } + } + } + + private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user) { if (options.Fields.Contains(ItemFields.SyncInfo)) { @@ -202,10 +217,20 @@ namespace MediaBrowser.Server.Implementations.Dto dto.HasSyncJob = tuple.Item1.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); dto.IsSynced = tuple.Item2.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); + + if (dto.IsSynced.Value) + { + dto.SyncStatus = SyncJobItemStatus.Synced; + } + + else if (dto.HasSyncJob.Value) + { + dto.SyncStatus = SyncJobItemStatus.Queued; + } } } - private void FillSyncInfo(BaseItemDto dto, BaseItem item, IEnumerable<string> itemIdsWithPendingSyncJobs, IEnumerable<string> syncedItemIds, DtoOptions options, User user) + private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, IEnumerable<string> itemIdsWithPendingSyncJobs, IEnumerable<string> syncedItemIds, DtoOptions options, User user) { if (options.Fields.Contains(ItemFields.SyncInfo)) { @@ -217,6 +242,16 @@ namespace MediaBrowser.Server.Implementations.Dto { dto.HasSyncJob = itemIdsWithPendingSyncJobs.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); dto.IsSynced = syncedItemIds.Contains(dto.Id, StringComparer.OrdinalIgnoreCase); + + if (dto.IsSynced.Value) + { + dto.SyncStatus = SyncJobItemStatus.Synced; + } + + else if (dto.HasSyncJob.Value) + { + dto.SyncStatus = SyncJobItemStatus.Queued; + } } } @@ -322,6 +357,8 @@ namespace MediaBrowser.Server.Implementations.Dto : item.CanDownload(user); } + + return dto; } @@ -330,7 +367,7 @@ namespace MediaBrowser.Server.Implementations.Dto { var dto = GetBaseItemDtoInternal(item, options, user); - //if (options.Fields.Contains(ItemFields.ItemCounts)) + if (options.Fields.Contains(ItemFields.ItemCounts)) { SetItemByNameInfo(item, dto, taggedItems, user); } diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs index 5c69db3e1..966e0a3e4 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller; +using System.Linq; +using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Plugins; using MediaBrowser.Model.Logging; @@ -47,7 +48,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints void _config_ConfigurationUpdated(object sender, EventArgs e) { _config.ConfigurationUpdated -= _config_ConfigurationUpdated; - + if (!string.Equals(_lastConfigIdentifier, GetConfigIdentifier(), StringComparison.OrdinalIgnoreCase)) { if (_isStarted) @@ -88,7 +89,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints NatUtility.UnhandledException += NatUtility_UnhandledException; NatUtility.StartDiscovery(); - _timer = new Timer(s => _createdRules = new List<string>(), null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5)); + _timer = new Timer(s => _createdRules = new List<string>(), null, TimeSpan.FromMinutes(3), TimeSpan.FromMinutes(3)); _lastConfigIdentifier = GetConfigIdentifier(); @@ -119,7 +120,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints CreateRules(device); } - catch (Exception) + catch (Exception ex) { // I think it could be a good idea to log the exception because // you are using permanent portmapping here (never expire) and that means that next time @@ -128,7 +129,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints // It also can fail with others like 727-ExternalPortOnlySupportsWildcard, 728-NoPortMapsAvailable // and those errors (upnp errors) could be useful for diagnosting. - //_logger.ErrorException("Error creating port forwarding rules", ex); + _logger.ErrorException("Error creating port forwarding rules", ex); } } @@ -138,25 +139,55 @@ namespace MediaBrowser.Server.Implementations.EntryPoints // On some systems the device discovered event seems to fire repeatedly // This check will help ensure we're not trying to port map the same device over and over + List<Mapping> currentMappings = null; + + try + { + currentMappings = device.GetAllMappings().ToList(); + } + catch (NotSupportedException) + { + } + var address = device.LocalAddress.ToString(); if (!_createdRules.Contains(address)) { _createdRules.Add(address); - CreatePortMap(device, _appHost.HttpPort, _config.Configuration.PublicPort); - CreatePortMap(device, _appHost.HttpsPort, _config.Configuration.PublicHttpsPort); + CreatePortMap(device, currentMappings, _appHost.HttpPort, _config.Configuration.PublicPort); + CreatePortMap(device, currentMappings, _appHost.HttpsPort, _config.Configuration.PublicHttpsPort); } } - private void CreatePortMap(INatDevice device, int privatePort, int publicPort) + private void CreatePortMap(INatDevice device, List<Mapping> currentMappings, int privatePort, int publicPort) { - _logger.Debug("Creating port map on port {0}", privatePort); + var hasMapping = false; + + if (currentMappings != null) + { + hasMapping = currentMappings.Any(i => i.PublicPort == publicPort && i.PrivatePort == privatePort); + } + else + { + try + { + var mapping = device.GetSpecificMapping(Protocol.Tcp, publicPort); + hasMapping = mapping != null; + } + catch (NotSupportedException) + { + } + } - device.CreatePortMap(new Mapping(Protocol.Tcp, privatePort, publicPort) + if (!hasMapping) { - Description = _appHost.Name - }); + _logger.Debug("Creating port map on port {0}", privatePort); + device.CreatePortMap(new Mapping(Protocol.Tcp, privatePort, publicPort) + { + Description = _appHost.Name + }); + } } // As I said before, this method will be never invoked. You can remove it. diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs index 090f1e756..03daa4c2a 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Session; @@ -69,7 +70,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> void libraryManager_ItemAdded(object sender, ItemChangeEventArgs e) { - if (e.Item.LocationType == LocationType.Virtual) + if (!FilterItem(e.Item)) { return; } @@ -102,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> void libraryManager_ItemUpdated(object sender, ItemChangeEventArgs e) { - if (e.Item.LocationType == LocationType.Virtual) + if (!FilterItem(e.Item)) { return; } @@ -130,7 +131,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> void libraryManager_ItemRemoved(object sender, ItemChangeEventArgs e) { - if (e.Item.LocationType == LocationType.Virtual) + if (!FilterItem(e.Item)) { return; } @@ -243,39 +244,39 @@ namespace MediaBrowser.Server.Implementations.EntryPoints { var user = _userManager.GetUserById(userId); - var collections = user.RootFolder.GetChildren(user, true).ToList(); - - var allRecursiveChildren = user.RootFolder - .GetRecursiveChildren(user) - .Select(i => i.Id) - .Distinct() - .ToDictionary(i => i); - return new LibraryUpdateInfo { - ItemsAdded = itemsAdded.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), + ItemsAdded = itemsAdded.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user)).Select(i => i.Id.ToString("N")).Distinct().ToList(), - ItemsUpdated = itemsUpdated.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), + ItemsUpdated = itemsUpdated.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user)).Select(i => i.Id.ToString("N")).Distinct().ToList(), - ItemsRemoved = itemsRemoved.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren, true)).Select(i => i.Id.ToString("N")).Distinct().ToList(), + ItemsRemoved = itemsRemoved.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, true)).Select(i => i.Id.ToString("N")).Distinct().ToList(), - FoldersAddedTo = foldersAddedTo.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList(), + FoldersAddedTo = foldersAddedTo.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user)).Select(i => i.Id.ToString("N")).Distinct().ToList(), - FoldersRemovedFrom = foldersRemovedFrom.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user, collections, allRecursiveChildren)).Select(i => i.Id.ToString("N")).Distinct().ToList() + FoldersRemovedFrom = foldersRemovedFrom.SelectMany(i => TranslatePhysicalItemToUserLibrary(i, user)).Select(i => i.Id.ToString("N")).Distinct().ToList() }; } + private bool FilterItem(BaseItem item) + { + if (item.LocationType == LocationType.Virtual) + { + return false; + } + + return !(item is IChannelItem); + } + /// <summary> /// Translates the physical item to user library. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="item">The item.</param> /// <param name="user">The user.</param> - /// <param name="collections">The collections.</param> - /// <param name="allRecursiveChildren">All recursive children.</param> /// <param name="includeIfNotFound">if set to <c>true</c> [include if not found].</param> /// <returns>IEnumerable{``0}.</returns> - private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, Dictionary<Guid, Guid> allRecursiveChildren, bool includeIfNotFound = false) + private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, bool includeIfNotFound = false) where T : BaseItem { // If the physical root changed, return the user root @@ -284,17 +285,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints return new[] { user.RootFolder as T }; } - // Need to find what user collection folder this belongs to - if (item.Parent is AggregateFolder) - { - if (item.LocationType == LocationType.FileSystem) - { - return collections.Where(i => i.PhysicalLocations.Contains(item.Path)).Cast<T>(); - } - } - // Return it only if it's in the user's library - if (includeIfNotFound || allRecursiveChildren.ContainsKey(item.Id) || (item.Parents.Any(i => i is BasePluginFolder) && item.IsVisibleStandalone(user))) + if (includeIfNotFound || item.IsVisibleStandalone(user)) { return new[] { item }; } diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index f91054206..dc9656f80 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -305,7 +305,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer var operationName = httpReq.OperationName; var localPath = url.LocalPath; - if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase) || + string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase)) { httpRes.RedirectToUrl(DefaultRedirectPath); return Task.FromResult(true); @@ -315,6 +316,11 @@ namespace MediaBrowser.Server.Implementations.HttpServer httpRes.RedirectToUrl("mediabrowser/" + DefaultRedirectPath); return Task.FromResult(true); } + if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase)) + { + httpRes.RedirectToUrl("emby/" + DefaultRedirectPath); + return Task.FromResult(true); + } if (string.Equals(localPath, "/", StringComparison.OrdinalIgnoreCase)) { httpRes.RedirectToUrl(DefaultRedirectPath); @@ -384,6 +390,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer foreach (var route in clone) { + routes.Add(new RouteAttribute(NormalizeEmbyRoutePath(route.Path), route.Verbs) + { + Notes = route.Notes, + Priority = route.Priority, + Summary = route.Summary + }); routes.Add(new RouteAttribute(NormalizeRoutePath(route.Path), route.Verbs) { Notes = route.Notes, @@ -398,11 +410,37 @@ namespace MediaBrowser.Server.Implementations.HttpServer Priority = route.Priority, Summary = route.Summary }); + routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs) + { + Notes = route.Notes, + Priority = route.Priority, + Summary = route.Summary + }); } return routes.ToArray(); } + private string NormalizeEmbyRoutePath(string path) + { + if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase)) + { + return "/emby" + path; + } + + return "emby/" + path; + } + + private string DoubleNormalizeEmbyRoutePath(string path) + { + if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase)) + { + return "/emby/emby" + path; + } + + return "emby/emby/" + path; + } + private string NormalizeRoutePath(string path) { if (path.StartsWith("/", StringComparison.OrdinalIgnoreCase)) diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs index 3903c62b1..b4da40702 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthService.cs @@ -140,7 +140,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security return true; } - return _config.Configuration.InsecureApps8.Contains(auth.Client ?? string.Empty, + return _config.Configuration.InsecureApps9.Contains(auth.Client ?? string.Empty, StringComparer.OrdinalIgnoreCase); } diff --git a/MediaBrowser.Server.Implementations/HttpServer/ThrottledStream.cs b/MediaBrowser.Server.Implementations/HttpServer/ThrottledStream.cs deleted file mode 100644 index 4bde30dac..000000000 --- a/MediaBrowser.Server.Implementations/HttpServer/ThrottledStream.cs +++ /dev/null @@ -1,405 +0,0 @@ -using System; -using System.IO; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Server.Implementations.HttpServer -{ - /// <summary> - /// Class for streaming data with throttling support. - /// </summary> - public class ThrottledStream : Stream - { - /// <summary> - /// A constant used to specify an infinite number of bytes that can be transferred per second. - /// </summary> - public const long Infinite = 0; - - public Func<long, long, long> ThrottleCallback { get; set; } - - #region Private members - /// <summary> - /// The base stream. - /// </summary> - private readonly Stream _baseStream; - - /// <summary> - /// The maximum bytes per second that can be transferred through the base stream. - /// </summary> - private long _maximumBytesPerSecond; - - /// <summary> - /// The number of bytes that has been transferred since the last throttle. - /// </summary> - private long _byteCount; - - /// <summary> - /// The start time in milliseconds of the last throttle. - /// </summary> - private long _start; - #endregion - - #region Properties - /// <summary> - /// Gets the current milliseconds. - /// </summary> - /// <value>The current milliseconds.</value> - protected long CurrentMilliseconds - { - get - { - return Environment.TickCount; - } - } - - /// <summary> - /// Gets or sets the maximum bytes per second that can be transferred through the base stream. - /// </summary> - /// <value>The maximum bytes per second.</value> - public long MaximumBytesPerSecond - { - get - { - return _maximumBytesPerSecond; - } - set - { - if (MaximumBytesPerSecond != value) - { - _maximumBytesPerSecond = value; - Reset(); - } - } - } - - /// <summary> - /// Gets a value indicating whether the current stream supports reading. - /// </summary> - /// <returns>true if the stream supports reading; otherwise, false.</returns> - public override bool CanRead - { - get - { - return _baseStream.CanRead; - } - } - - /// <summary> - /// Gets a value indicating whether the current stream supports seeking. - /// </summary> - /// <value></value> - /// <returns>true if the stream supports seeking; otherwise, false.</returns> - public override bool CanSeek - { - get - { - return _baseStream.CanSeek; - } - } - - /// <summary> - /// Gets a value indicating whether the current stream supports writing. - /// </summary> - /// <value></value> - /// <returns>true if the stream supports writing; otherwise, false.</returns> - public override bool CanWrite - { - get - { - return _baseStream.CanWrite; - } - } - - /// <summary> - /// Gets the length in bytes of the stream. - /// </summary> - /// <value></value> - /// <returns>A long value representing the length of the stream in bytes.</returns> - /// <exception cref="T:System.NotSupportedException">The base stream does not support seeking. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - public override long Length - { - get - { - return _baseStream.Length; - } - } - - /// <summary> - /// Gets or sets the position within the current stream. - /// </summary> - /// <value></value> - /// <returns>The current position within the stream.</returns> - /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> - /// <exception cref="T:System.NotSupportedException">The base stream does not support seeking. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - public override long Position - { - get - { - return _baseStream.Position; - } - set - { - _baseStream.Position = value; - } - } - #endregion - - public long MinThrottlePosition; - - #region Ctor - /// <summary> - /// Initializes a new instance of the <see cref="T:ThrottledStream"/> class. - /// </summary> - /// <param name="baseStream">The base stream.</param> - /// <param name="maximumBytesPerSecond">The maximum bytes per second that can be transferred through the base stream.</param> - /// <exception cref="ArgumentNullException">Thrown when <see cref="baseStream"/> is a null reference.</exception> - /// <exception cref="ArgumentOutOfRangeException">Thrown when <see cref="maximumBytesPerSecond"/> is a negative value.</exception> - public ThrottledStream(Stream baseStream, long maximumBytesPerSecond) - { - if (baseStream == null) - { - throw new ArgumentNullException("baseStream"); - } - - if (maximumBytesPerSecond < 0) - { - throw new ArgumentOutOfRangeException("maximumBytesPerSecond", - maximumBytesPerSecond, "The maximum number of bytes per second can't be negative."); - } - - _baseStream = baseStream; - _maximumBytesPerSecond = maximumBytesPerSecond; - _start = CurrentMilliseconds; - _byteCount = 0; - } - #endregion - - #region Public methods - /// <summary> - /// Clears all buffers for this stream and causes any buffered data to be written to the underlying device. - /// </summary> - /// <exception cref="T:System.IO.IOException">An I/O error occurs.</exception> - public override void Flush() - { - _baseStream.Flush(); - } - - /// <summary> - /// Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. - /// </summary> - /// <param name="buffer">An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.</param> - /// <param name="offset">The zero-based byte offset in buffer at which to begin storing the data read from the current stream.</param> - /// <param name="count">The maximum number of bytes to be read from the current stream.</param> - /// <returns> - /// The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. - /// </returns> - /// <exception cref="T:System.ArgumentException">The sum of offset and count is larger than the buffer length. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - /// <exception cref="T:System.NotSupportedException">The base stream does not support reading. </exception> - /// <exception cref="T:System.ArgumentNullException">buffer is null. </exception> - /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> - /// <exception cref="T:System.ArgumentOutOfRangeException">offset or count is negative. </exception> - public override int Read(byte[] buffer, int offset, int count) - { - Throttle(count); - - return _baseStream.Read(buffer, offset, count); - } - - /// <summary> - /// Sets the position within the current stream. - /// </summary> - /// <param name="offset">A byte offset relative to the origin parameter.</param> - /// <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"></see> indicating the reference point used to obtain the new position.</param> - /// <returns> - /// The new position within the current stream. - /// </returns> - /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> - /// <exception cref="T:System.NotSupportedException">The base stream does not support seeking, such as if the stream is constructed from a pipe or console output. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - public override long Seek(long offset, SeekOrigin origin) - { - return _baseStream.Seek(offset, origin); - } - - /// <summary> - /// Sets the length of the current stream. - /// </summary> - /// <param name="value">The desired length of the current stream in bytes.</param> - /// <exception cref="T:System.NotSupportedException">The base stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. </exception> - /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - public override void SetLength(long value) - { - _baseStream.SetLength(value); - } - - private long _bytesWritten; - - /// <summary> - /// Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. - /// </summary> - /// <param name="buffer">An array of bytes. This method copies count bytes from buffer to the current stream.</param> - /// <param name="offset">The zero-based byte offset in buffer at which to begin copying bytes to the current stream.</param> - /// <param name="count">The number of bytes to be written to the current stream.</param> - /// <exception cref="T:System.IO.IOException">An I/O error occurs. </exception> - /// <exception cref="T:System.NotSupportedException">The base stream does not support writing. </exception> - /// <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed. </exception> - /// <exception cref="T:System.ArgumentNullException">buffer is null. </exception> - /// <exception cref="T:System.ArgumentException">The sum of offset and count is greater than the buffer length. </exception> - /// <exception cref="T:System.ArgumentOutOfRangeException">offset or count is negative. </exception> - public override void Write(byte[] buffer, int offset, int count) - { - Throttle(count); - - _baseStream.Write(buffer, offset, count); - - _bytesWritten += count; - } - - public override async Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) - { - await ThrottleAsync(count, cancellationToken).ConfigureAwait(false); - - await _baseStream.WriteAsync(buffer, offset, count, cancellationToken).ConfigureAwait(false); - - _bytesWritten += count; - } - - /// <summary> - /// Returns a <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. - /// </summary> - /// <returns> - /// A <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. - /// </returns> - public override string ToString() - { - return _baseStream.ToString(); - } - #endregion - - private bool ThrottleCheck(int bufferSizeInBytes) - { - if (_bytesWritten < MinThrottlePosition) - { - return false; - } - - // Make sure the buffer isn't empty. - if (_maximumBytesPerSecond <= 0 || bufferSizeInBytes <= 0) - { - return false; - } - - if (ThrottleCallback != null) - { - var val = ThrottleCallback(_maximumBytesPerSecond, _bytesWritten); - - if (val == 0) - { - return false; - } - } - - return true; - } - - #region Protected methods - /// <summary> - /// Throttles for the specified buffer size in bytes. - /// </summary> - /// <param name="bufferSizeInBytes">The buffer size in bytes.</param> - protected void Throttle(int bufferSizeInBytes) - { - if (!ThrottleCheck(bufferSizeInBytes)) - { - return ; - } - - _byteCount += bufferSizeInBytes; - long elapsedMilliseconds = CurrentMilliseconds - _start; - - if (elapsedMilliseconds > 0) - { - // Calculate the current bps. - long bps = _byteCount * 1000L / elapsedMilliseconds; - - // If the bps are more then the maximum bps, try to throttle. - if (bps > _maximumBytesPerSecond) - { - // Calculate the time to sleep. - long wakeElapsed = _byteCount * 1000L / _maximumBytesPerSecond; - int toSleep = (int)(wakeElapsed - elapsedMilliseconds); - - if (toSleep > 1) - { - try - { - // The time to sleep is more then a millisecond, so sleep. - Thread.Sleep(toSleep); - } - catch (ThreadAbortException) - { - // Eatup ThreadAbortException. - } - - // A sleep has been done, reset. - Reset(); - } - } - } - } - - protected async Task ThrottleAsync(int bufferSizeInBytes, CancellationToken cancellationToken) - { - if (!ThrottleCheck(bufferSizeInBytes)) - { - return; - } - - _byteCount += bufferSizeInBytes; - long elapsedMilliseconds = CurrentMilliseconds - _start; - - if (elapsedMilliseconds > 0) - { - // Calculate the current bps. - long bps = _byteCount * 1000L / elapsedMilliseconds; - - // If the bps are more then the maximum bps, try to throttle. - if (bps > _maximumBytesPerSecond) - { - // Calculate the time to sleep. - long wakeElapsed = _byteCount * 1000L / _maximumBytesPerSecond; - int toSleep = (int)(wakeElapsed - elapsedMilliseconds); - - if (toSleep > 1) - { - // The time to sleep is more then a millisecond, so sleep. - await Task.Delay(toSleep, cancellationToken).ConfigureAwait(false); - - // A sleep has been done, reset. - Reset(); - } - } - } - } - - /// <summary> - /// Will reset the bytecount to 0 and reset the start time to the current time. - /// </summary> - protected void Reset() - { - long difference = CurrentMilliseconds - _start; - - // Only reset counters when a known history is available of more then 1 second. - if (difference > 1000) - { - _byteCount = 0; - _start = CurrentMilliseconds; - } - } - #endregion - } -}
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index f9fa1aae3..02c16d0d4 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -732,7 +732,12 @@ namespace MediaBrowser.Server.Implementations.Library } } - folder = GetItemById(folder.Id) as BasePluginFolder ?? folder; + var dbItem = GetItemById(folder.Id) as BasePluginFolder; + + if (dbItem != null && string.Equals(dbItem.Path, folder.Path, StringComparison.OrdinalIgnoreCase)) + { + folder = dbItem; + } rootFolder.AddVirtualChild(folder); @@ -921,10 +926,8 @@ namespace MediaBrowser.Server.Implementations.Library if (isArtist) { - var validFilename = _fileSystem.GetValidFilename(name).Trim(); - var existing = RootFolder - .GetRecursiveChildren(i => i is T && string.Equals(_fileSystem.GetValidFilename(i.Name).Trim(), validFilename, StringComparison.OrdinalIgnoreCase)) + .GetRecursiveChildren(i => i is T && NameExtensions.AreEqual(i.Name, name)) .Cast<T>() .FirstOrDefault(); @@ -1510,7 +1513,7 @@ namespace MediaBrowser.Server.Implementations.Library return GetUserRootFolder().Children .OfType<Folder>() - .Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path)); + .Where(i => string.Equals(i.Path, item.Path, StringComparison.OrdinalIgnoreCase) || i.PhysicalLocations.Contains(item.Path, StringComparer.OrdinalIgnoreCase)); } public string GetContentType(BaseItem item) diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index 4fab95263..71fd4127b 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -129,29 +129,19 @@ namespace MediaBrowser.Server.Implementations.Library return list; } - public Task<IEnumerable<MediaSourceInfo>> GetPlayackMediaSources(string id, bool enablePathSubstitution, CancellationToken cancellationToken) - { - return GetPlayackMediaSources(id, null, enablePathSubstitution, cancellationToken); - } - - public async Task<IEnumerable<MediaSourceInfo>> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, CancellationToken cancellationToken) + public async Task<IEnumerable<MediaSourceInfo>> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, string[] supportedLiveMediaTypes, CancellationToken cancellationToken) { var item = _libraryManager.GetItemById(id); - IEnumerable<MediaSourceInfo> mediaSources; var hasMediaSources = (IHasMediaSources)item; User user = null; - if (string.IsNullOrWhiteSpace(userId)) - { - mediaSources = hasMediaSources.GetMediaSources(enablePathSubstitution); - } - else + if (!string.IsNullOrWhiteSpace(userId)) { user = _userManager.GetUserById(userId); - mediaSources = GetStaticMediaSources(hasMediaSources, enablePathSubstitution, user); } + var mediaSources = GetStaticMediaSources(hasMediaSources, enablePathSubstitution, user); var dynamicMediaSources = await GetDynamicMediaSources(hasMediaSources, cancellationToken).ConfigureAwait(false); var list = new List<MediaSourceInfo>(); @@ -166,9 +156,11 @@ namespace MediaBrowser.Server.Implementations.Library } if (source.Protocol == MediaProtocol.File) { - source.SupportsDirectStream = File.Exists(source.Path); - // TODO: Path substitution + if (!File.Exists(source.Path)) + { + source.SupportsDirectStream = false; + } } else if (source.Protocol == MediaProtocol.Http) { @@ -183,6 +175,27 @@ namespace MediaBrowser.Server.Implementations.Library list.Add(source); } + foreach (var source in list) + { + if (user != null) + { + if (string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase)) + { + if (!user.Policy.EnableAudioPlaybackTranscoding) + { + source.SupportsTranscoding = false; + } + } + else if (string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase)) + { + if (!user.Policy.EnableVideoPlaybackTranscoding) + { + source.SupportsTranscoding = false; + } + } + } + } + return SortMediaSources(list).Where(i => i.Type != MediaSourceType.Placeholder); } @@ -230,27 +243,15 @@ namespace MediaBrowser.Server.Implementations.Library } } - public MediaSourceInfo GetStaticMediaSource(IHasMediaSources item, string mediaSourceId, bool enablePathSubstitution) + public async Task<MediaSourceInfo> GetMediaSource(IHasMediaSources item, string mediaSourceId, bool enablePathSubstitution) { - return GetStaticMediaSources(item, enablePathSubstitution).FirstOrDefault(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase)); - } - - public IEnumerable<MediaSourceInfo> GetStaticMediaSources(IHasMediaSources item, bool enablePathSubstitution) - { - if (item == null) - { - throw new ArgumentNullException("item"); - } - - if (!(item is Video)) - { - return item.GetMediaSources(enablePathSubstitution); - } + var sources = await GetPlayackMediaSources(item.Id.ToString("N"), null, enablePathSubstitution, new[] { MediaType.Audio, MediaType.Video }, + CancellationToken.None).ConfigureAwait(false); - return item.GetMediaSources(enablePathSubstitution); + return sources.FirstOrDefault(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase)); } - public IEnumerable<MediaSourceInfo> GetStaticMediaSources(IHasMediaSources item, bool enablePathSubstitution, User user) + public IEnumerable<MediaSourceInfo> GetStaticMediaSources(IHasMediaSources item, bool enablePathSubstitution, User user = null) { if (item == null) { @@ -262,16 +263,14 @@ namespace MediaBrowser.Server.Implementations.Library return item.GetMediaSources(enablePathSubstitution); } - if (user == null) - { - throw new ArgumentNullException("user"); - } - var sources = item.GetMediaSources(enablePathSubstitution).ToList(); - foreach (var source in sources) + if (user != null) { - SetUserProperties(source, user); + foreach (var source in sources) + { + SetUserProperties(source, user); + } } return sources; @@ -360,6 +359,7 @@ namespace MediaBrowser.Server.Implementations.Library } var json = _jsonSerializer.SerializeToString(mediaSource); + _logger.Debug("Live stream opened: " + json); var clone = _jsonSerializer.DeserializeFromString<MediaSourceInfo>(json); if (!string.IsNullOrWhiteSpace(request.UserId)) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 71daf2b0c..f88293b2a 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -64,7 +64,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies if (string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) { - return ResolveVideos<Video>(parent, files, directoryService, collectionType, false); + //return ResolveVideos<Video>(parent, files, directoryService, collectionType, false); } if (string.IsNullOrEmpty(collectionType)) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs index acae5b801..e7f239780 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoAlbumResolver.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; @@ -10,6 +11,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers { public class PhotoAlbumResolver : FolderResolver<PhotoAlbum> { + private readonly IImageProcessor _imageProcessor; + public PhotoAlbumResolver(IImageProcessor imageProcessor) + { + _imageProcessor = imageProcessor; + } + /// <summary> /// Resolves the specified args. /// </summary> @@ -32,9 +39,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers return null; } - private static bool HasPhotos(ItemResolveArgs args) + private bool HasPhotos(ItemResolveArgs args) { - return args.FileSystemChildren.Any(i => ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) && PhotoResolver.IsImageFile(i.FullName)); + return args.FileSystemChildren.Any(i => ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) && PhotoResolver.IsImageFile(i.FullName, _imageProcessor)); } public override ResolverPriority Priority diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs index b714e968b..407aac53d 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/PhotoResolver.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; using System; @@ -9,6 +10,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers { public class PhotoResolver : ItemResolver<Photo> { + private readonly IImageProcessor _imageProcessor; + public PhotoResolver(IImageProcessor imageProcessor) + { + _imageProcessor = imageProcessor; + } + /// <summary> /// Resolves the specified args. /// </summary> @@ -19,7 +26,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers // Must be an image file within a photo collection if (string.Equals(args.GetCollectionType(), CollectionType.Photos, StringComparison.OrdinalIgnoreCase) && !args.IsDirectory && - IsImageFile(args.Path)) + IsImageFile(args.Path, _imageProcessor)) { return new Photo { @@ -30,9 +37,6 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers return null; } - // Some common file name extensions for RAW picture files include: .cr2, .crw, .dng, .nef, .orf, .rw2, .pef, .arw, .sr2, .srf, and .tif. - protected static string[] ImageExtensions = { ".tiff", ".jpeg", ".jpg", ".png", ".aiff", ".cr2", ".crw", ".dng", ".nef", ".orf", ".pef", ".arw", ".webp" }; - private static readonly string[] IgnoreFiles = { "folder", @@ -43,12 +47,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers "poster" }; - internal static bool IsImageFile(string path) + internal static bool IsImageFile(string path, IImageProcessor imageProcessor) { var filename = Path.GetFileNameWithoutExtension(path) ?? string.Empty; return !IgnoreFiles.Contains(filename, StringComparer.OrdinalIgnoreCase) - && ImageExtensions.Contains(Path.GetExtension(path) ?? string.Empty, StringComparer.OrdinalIgnoreCase); + && imageProcessor.SupportedInputFormats.Contains((Path.GetExtension(path) ?? string.Empty).TrimStart('.'), StringComparer.OrdinalIgnoreCase); } } diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 51cad7a35..72bbefae4 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -122,7 +122,7 @@ namespace MediaBrowser.Server.Implementations.Library var artists = items.OfType<Audio>() .SelectMany(i => i.AllArtists) .Where(i => !string.IsNullOrWhiteSpace(i)) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); foreach (var item in artists) diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index b101f6ae1..03471a8e9 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -166,11 +166,6 @@ namespace MediaBrowser.Server.Implementations.Library var users = Users.ToList(); - foreach (var user in users) - { - await DoPolicyMigration(user).ConfigureAwait(false); - } - // If there are no local users with admin rights, make them all admins if (!users.Any(i => i.Policy.IsAdministrator)) { @@ -286,10 +281,10 @@ namespace MediaBrowser.Server.Implementations.Library if (newValue >= maxCount) { - //_logger.Debug("Disabling user {0} due to {1} unsuccessful login attempts.", user.Name, newValue.ToString(CultureInfo.InvariantCulture)); - //user.Policy.IsDisabled = true; + _logger.Debug("Disabling user {0} due to {1} unsuccessful login attempts.", user.Name, newValue.ToString(CultureInfo.InvariantCulture)); + user.Policy.IsDisabled = true; - //fireLockout = true; + fireLockout = true; } await UpdateUserPolicy(user, user.Policy, false).ConfigureAwait(false); @@ -366,19 +361,6 @@ namespace MediaBrowser.Server.Implementations.Library return users; } - private async Task DoPolicyMigration(User user) - { - if (!user.Configuration.HasMigratedToPolicy) - { - user.Policy.IsAdministrator = user.Configuration.IsAdministrator; - - await UpdateUserPolicy(user, user.Policy, false); - - user.Configuration.HasMigratedToPolicy = true; - await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false); - } - } - public UserDto GetUserDto(User user, string remoteEndPoint = null) { if (user == null) @@ -953,8 +935,6 @@ namespace MediaBrowser.Server.Implementations.Library user.Policy = userPolicy; } - user.Configuration.IsAdministrator = user.Policy.IsAdministrator; - await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false); } diff --git a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs index a964738e6..c9440bb27 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/ArtistsValidator.cs @@ -49,7 +49,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators .ToList(); var allArtists = allSongs.SelectMany(i => i.AllArtists) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs index 757936aa7..fe2e6a114 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators { var items = _libraryManager.RootFolder.GetRecursiveChildren(i => (i is Game)) .SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs index 3a06fac1b..fac5cfc35 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators { var items = _libraryManager.RootFolder.GetRecursiveChildren(i => !(i is IHasMusicGenres) && !(i is Game)) .SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs index 25eddb48a..e3be75e9b 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs @@ -36,7 +36,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators { var items = _libraryManager.RootFolder.GetRecursiveChildren(i => (i is IHasMusicGenres)) .SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs index 5feebab9c..066b96853 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs @@ -35,7 +35,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators { var items = _libraryManager.RootFolder.GetRecursiveChildren() .SelectMany(i => i.Studios) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .ToList(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 401cf8765..61017ffb3 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -8,12 +8,12 @@ using MediaBrowser.Controller.LiveTv; using MediaBrowser.Model.Entities; using MediaBrowser.Model.LiveTv; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Querying; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.LiveTv { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index a39781d6a..3f164ee6f 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -761,6 +761,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(p => p.IsMovie == query.IsMovie); } + if (query.IsSports.HasValue) + { + programs = programs.Where(p => p.IsSports == query.IsSports); + } + programs = _libraryManager.Sort(programs, user, query.SortBy, query.SortOrder ?? SortOrder.Ascending) .Cast<LiveTvProgram>(); @@ -826,10 +831,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv programs = programs.Where(p => p.IsMovie == query.IsMovie.Value); } + if (query.IsSports.HasValue) + { + programs = programs.Where(p => p.IsSports == query.IsSports.Value); + } + var programList = programs.ToList(); var genres = programList.SelectMany(i => i.Genres) - .Distinct(StringComparer.OrdinalIgnoreCase) + .DistinctNames() .Select(i => _libraryManager.GetGenre(i)) .ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); @@ -996,6 +1006,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv innerProgress = new ActionableProgress<double>(); innerProgress.RegisterAction(p => progress.Report(90 + (p * .1))); await CleanDatabaseInternal(progress, cancellationToken).ConfigureAwait(false); + + foreach (var program in _programs.Values + .Where(i => (i.StartDate - DateTime.UtcNow).TotalDays <= 1) + .ToList()) + { + RefreshIfNeeded(program); + } } finally { @@ -1128,8 +1145,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv _refreshedPrograms.Clear(); progress.Report(90); + RefreshIfNeeded(programs.Take(500)); + // Load these now which will prefetch metadata - await GetRecordings(new RecordingQuery(), cancellationToken).ConfigureAwait(false); + var dtoOptions = new DtoOptions(); + dtoOptions.Fields.Remove(ItemFields.SyncInfo); + await GetRecordings(new RecordingQuery(), dtoOptions, cancellationToken).ConfigureAwait(false); progress.Report(100); } @@ -1195,8 +1216,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv var days = Math.Round(((double)maxPrograms) / programsPerDay); - // No less than 2, no more than 7 - return Math.Max(2, Math.Min(days, 7)); + return Math.Max(3, Math.Min(days, 14)); } private async Task<IEnumerable<Tuple<string, ChannelInfo>>> GetChannels(ILiveTvService service, CancellationToken cancellationToken) @@ -1304,7 +1324,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv }; } - public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, CancellationToken cancellationToken) + public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, DtoOptions options, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); @@ -1320,6 +1340,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv }) .ToArray(); + if (user != null) + { + _dtoService.FillSyncInfo(returnArray, new DtoOptions(), user); + } + return new QueryResult<RecordingInfoDto> { Items = returnArray, @@ -1392,7 +1417,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task DeleteRecording(string recordingId) { - var recording = await GetRecording(recordingId, CancellationToken.None).ConfigureAwait(false); + var dtoOptions = new DtoOptions(); + dtoOptions.Fields.Remove(ItemFields.SyncInfo); + + var recording = await GetRecording(recordingId, dtoOptions, CancellationToken.None).ConfigureAwait(false); if (recording == null) { @@ -1432,14 +1460,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv await service.CancelSeriesTimerAsync(timer.ExternalId, CancellationToken.None).ConfigureAwait(false); } - public async Task<RecordingInfoDto> GetRecording(string id, CancellationToken cancellationToken, User user = null) + public async Task<RecordingInfoDto> GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null) { var results = await GetRecordings(new RecordingQuery { UserId = user == null ? null : user.Id.ToString("N"), Id = id - }, cancellationToken).ConfigureAwait(false); + }, options, cancellationToken).ConfigureAwait(false); return results.Items.FirstOrDefault(); } @@ -1719,11 +1747,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<QueryResult<RecordingGroupDto>> GetRecordingGroups(RecordingGroupQuery query, CancellationToken cancellationToken) { + var dtoOptions = new DtoOptions(); + dtoOptions.Fields.Remove(ItemFields.SyncInfo); + var recordingResult = await GetRecordings(new RecordingQuery { UserId = query.UserId - }, cancellationToken).ConfigureAwait(false); + }, dtoOptions, cancellationToken).ConfigureAwait(false); var recordings = recordingResult.Items; diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index d549cad46..84b4053a1 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -1,6 +1,8 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; @@ -18,12 +20,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly IJsonSerializer _jsonSerializer; private readonly ILogger _logger; private readonly IMediaSourceManager _mediaSourceManager; + private readonly IMediaEncoder _mediaEncoder; - public LiveTvMediaSourceProvider(ILiveTvManager liveTvManager, IJsonSerializer jsonSerializer, ILogManager logManager, IMediaSourceManager mediaSourceManager) + public LiveTvMediaSourceProvider(ILiveTvManager liveTvManager, IJsonSerializer jsonSerializer, ILogManager logManager, IMediaSourceManager mediaSourceManager, IMediaEncoder mediaEncoder) { _liveTvManager = liveTvManager; _jsonSerializer = jsonSerializer; _mediaSourceManager = mediaSourceManager; + _mediaEncoder = mediaEncoder; _logger = logManager.GetLogger(GetType().Name); } @@ -90,14 +94,93 @@ namespace MediaBrowser.Server.Implementations.LiveTv public async Task<MediaSourceInfo> OpenMediaSource(string openToken, CancellationToken cancellationToken) { + MediaSourceInfo stream; + var isAudio = false; + var keys = openToken.Split(new[] { '|' }, 2); if (string.Equals(keys[0], typeof(LiveTvChannel).Name, StringComparison.OrdinalIgnoreCase)) { - return await _liveTvManager.GetChannelStream(keys[1], cancellationToken).ConfigureAwait(false); + stream = await _liveTvManager.GetChannelStream(keys[1], cancellationToken).ConfigureAwait(false); + } + else + { + stream = await _liveTvManager.GetRecordingStream(keys[1], cancellationToken).ConfigureAwait(false); + } + + try + { + await AddMediaInfo(stream, isAudio, cancellationToken).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error probing live tv stream", ex); + } + + return stream; + } + + private async Task AddMediaInfo(MediaSourceInfo mediaSource, bool isAudio, CancellationToken cancellationToken) + { + var inputPaths = new[] { mediaSource.Path }; + + var info = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest + { + InputPath = mediaSource.Path, + Protocol = mediaSource.Protocol, + MediaType = isAudio ? DlnaProfileType.Audio : DlnaProfileType.Video, + ExtractChapters = false + + }, cancellationToken) + .ConfigureAwait(false); + + mediaSource.Bitrate = info.Bitrate; + mediaSource.Container = info.Container; + mediaSource.Formats = info.Formats; + mediaSource.MediaStreams = info.MediaStreams; + mediaSource.RunTimeTicks = info.RunTimeTicks; + mediaSource.Size = info.Size; + mediaSource.Timestamp = info.Timestamp; + mediaSource.Video3DFormat = info.Video3DFormat; + mediaSource.VideoType = info.VideoType; + + mediaSource.DefaultSubtitleStreamIndex = null; + + var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Audio); + + if (audioStream == null || audioStream.Index == -1) + { + mediaSource.DefaultAudioStreamIndex = null; + } + else + { + mediaSource.DefaultAudioStreamIndex = audioStream.Index; } - return await _liveTvManager.GetRecordingStream(keys[1], cancellationToken).ConfigureAwait(false); + // Try to estimate this + if (!mediaSource.Bitrate.HasValue) + { + var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == Model.Entities.MediaStreamType.Video); + if (videoStream != null) + { + var width = videoStream.Width ?? 1920; + + if (width >= 1900) + { + mediaSource.Bitrate = 10000000; + } + + else if (width >= 1260) + { + mediaSource.Bitrate = 6000000; + } + + else if (width >= 700) + { + mediaSource.Bitrate = 4000000; + } + } + } } public Task CloseMediaSource(string liveStreamId, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs index d29b67a8a..b01dddb94 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.LiveTv { - public class ProgramImageProvider : IDynamicImageProvider, IHasItemChangeMonitor + public class ProgramImageProvider : IDynamicImageProvider, IHasItemChangeMonitor, IHasOrder { private readonly ILiveTvManager _liveTvManager; private readonly IHttpClient _httpClient; @@ -100,7 +100,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv public int Order { - get { return 0; } + get + { + // Let the better providers run first + return 100; + } } public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService) diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json index 856a88501..07b0022c8 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u0627\u0644\u062e\u0645\u064a\u0633", "OptionFriday": "\u0627\u0644\u062c\u0645\u0639\u0629", "OptionSaturday": "\u0627\u0644\u0633\u0628\u062a", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json index 5b036d4d0..e7cad3695 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/bg_BG.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "\u041f\u043e\u0434\u043a\u0440\u0435\u043f\u0435\u0442\u0435 Emby \u041e\u0442\u0431\u043e\u0440\u044a\u0442", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u0422V \u043d\u0430 \u0436\u0438\u0432\u043e", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u0427\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", "OptionFriday": "\u041f\u0435\u0442\u044a\u043a", "OptionSaturday": "\u0421\u044a\u0431\u043e\u0442\u0430", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json index ecf55bdb0..335dbd3df 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json index 67b9ca26f..ea141645c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Potvrzen\u00ed", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u017div\u00e1 TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u010ctvrtek", "OptionFriday": "P\u00e1tek", "OptionSaturday": "Sobota", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Potvrdit smaz\u00e1n\u00ed", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Aktualizace dostupn\u00e1)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Chyba", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json index 0d4d1bbfa..f4983f8dd 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Direkte TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -62,10 +67,10 @@ "LabelMovie": "Movie", "LabelMusicVideo": "Music Video", "LabelEpisode": "Episode", - "LabelSeries": "Series", + "LabelSeries": "Serier", "LabelStopping": "Stopping", "LabelCancelled": "(cancelled)", - "LabelFailed": "(failed)", + "LabelFailed": "(fejlede)", "ButtonHelp": "Help", "ButtonSave": "Gem", "ButtonDownload": "Download", @@ -79,8 +84,8 @@ "SyncJobStatusCompletedWithError": "Synced with errors", "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", "LabelCollection": "Collection", - "HeaderAddToCollection": "Add to Collection", - "NewCollectionNameExample": "Example: Star Wars Collection", + "HeaderAddToCollection": "Tilf\u00f8j til samling", + "NewCollectionNameExample": "Eksempel: Star Wars Collection", "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", "LabelSelectCollection": "Select collection:", "HeaderDevices": "Devices", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -138,7 +143,7 @@ "ButtonPlay": "Afspil", "ButtonEdit": "Rediger", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", + "ButtonPlayTrailer": "Afspil trailer", "ButtonPlaylist": "Playlist", "ButtonPreviousTrack": "Previous Track", "LabelEnabled": "Enabled", @@ -174,6 +179,9 @@ "OptionThursday": "Torsdag", "OptionFriday": "Fredag", "OptionSaturday": "L\u00f8rdag", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", @@ -394,7 +403,7 @@ "TabAdvanced": "Advanceret", "TabHelp": "Help", "TabScheduledTasks": "Scheduled Tasks", - "ButtonFullscreen": "Fullscreen", + "ButtonFullscreen": "Fuld sk\u00e6rm", "ButtonAudioTracks": "Audio Tracks", "ButtonSubtitles": "Undertekster", "ButtonScenes": "Scener", @@ -467,7 +476,7 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", + "OptionReleaseDate": "Udgivelsesdato", "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", @@ -496,14 +505,14 @@ "LabelContentTypeValue": "Content type: {0}", "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", "FolderTypeUnset": "Unset (mixed content)", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", + "FolderTypeMovies": "FIlm", + "FolderTypeMusic": "Musik", + "FolderTypeAdultVideos": "Voksenfilm", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Musikvideoer", + "FolderTypeHomeVideos": "Hjemmevideoer", + "FolderTypeGames": "Spil", + "FolderTypeBooks": "B\u00f8ger", "FolderTypeTvShows": "TV", "TabMovies": "Film", "TabSeries": "Serier", @@ -611,7 +620,7 @@ "HeaderAlbums": "Albums", "HeaderGames": "Games", "HeaderBooks": "Books", - "HeaderEpisodes": "Episodes", + "HeaderEpisodes": "Afsnit", "HeaderSeasons": "Seasons", "HeaderTracks": "Tracks", "HeaderItems": "Items", @@ -649,7 +658,7 @@ "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", "MediaInfoRefFrames": "Ref frames", "TabPlayback": "Playback", - "TabNotifications": "Notifications", + "TabNotifications": "Notifikationer", "TabExpert": "Expert", "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", "HeaderRateAndReview": "Rate and Review", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json index 9431bf07f..1a68eed35 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/de.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Best\u00e4tigung", "MessageKeyUpdated": "Danke. Dein Unterst\u00fctzerschl\u00fcssel wurde aktualisiert.", "MessageKeyRemoved": "Danke. Ihr Unterst\u00fctzerschl\u00fcssel wurde entfernt.", + "HeaderSupportTheTeam": "Unterst\u00fctzen Sie das Emby Team", + "TextEnjoyBonusFeatures": "Erleben Sie Bonus Funktionen", "TitleLiveTV": "Live-TV", "TitleSync": "Synchronisation", + "ButtonDonate": "Spenden", + "HeaderMyMedia": "Meine Medien", + "TitleNotifications": "Benachrichtigungen", "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": "Verbinden Sie Ihren Unterst\u00fctzer-Schl\u00fcssel mit bis zu {0} Emby Connect Benutzern um kostenfreien Zugriff auf die folgenden Apps zu erhalten:", @@ -120,7 +125,7 @@ "MessagePlaybackErrorNotAllowed": "Sie sind nicht befugt diese Inhalte wiederzugeben. Bitte kontaktieren Sie Ihren Systemadministrator f\u00fcr weitere Details.", "MessagePlaybackErrorNoCompatibleStream": "Es sind aktuell keine kompatiblen Streams verf\u00fcgbar. Bitte versuchen Sie es sp\u00e4ter erneut.", "MessagePlaybackErrorRateLimitExceeded": "Ihr Wiedergabelimit wurde \u00fcberschritten. Bitte kontaktieren Sie Ihren Systemadministrator f\u00fcr weitere Details.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "MessagePlaybackErrorPlaceHolder": "Der gew\u00e4hlte Inhalt kann auf diesem Ger\u00e4t nicht abgespielt werden.", "HeaderSelectAudio": "W\u00e4hle Audio", "HeaderSelectSubtitles": "W\u00f6hle Untertitel", "ButtonMarkForRemoval": "Entferne von Ger\u00e4t", @@ -174,6 +179,9 @@ "OptionThursday": "Donnerstag", "OptionFriday": "Freitag", "OptionSaturday": "Samstag", + "OptionEveryday": "T\u00e4glich", + "OptionWeekend": "Wochenenden", + "OptionWeekday": "Wochentage", "HeaderConfirmDeletion": "Best\u00e4tige L\u00f6schung", "MessageConfirmPathSubstitutionDeletion": "Bist du dir sicher die Pfadsubstitution l\u00f6schen zu wollen?", "LiveTvUpdateAvailable": "(Update verf\u00fcgbar)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Trenne Medien ab", "MessageConfirmSplitMedia": "Bist du dir sicher, dass du die Medienquellen in separate Elemente aufteilen m\u00f6chtest?", "HeaderError": "Fehler", + "MessageChromecastConnectionError": "Ihr Chromecast kann keine Verbindung mit dem Emby Server herstellen. Bitte \u00fcberpr\u00fcfen Sie die Verbindung und probieren Sie es erneut.", "MessagePleaseSelectOneItem": "Bitte w\u00e4hle mindestens eine Option aus.", "MessagePleaseSelectTwoItems": "Bitte w\u00e4hle mindestens zwei Optionen aus.", "MessageTheFollowingItemsWillBeGrouped": "Die folgenden Titel werden zu einem Element gruppiert:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json index 336e311e6..70fdf8e25 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json @@ -23,8 +23,8 @@ "PasswordSaved": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5", "PasswordMatchError": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03b5\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03bf\u03c5\u03bd", "OptionRelease": "\u0397 \u03b5\u03c0\u03af\u03c3\u03b7\u03bc\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7", - "OptionBeta": "\u03b2\u03ae\u03c4\u03b1", - "OptionDev": "\u03b1\u03bd\u03ac\u03c0\u03c4\u03c5\u03be\u03b7 (\u03b1\u03c3\u03c4\u03b1\u03b8\u03ae\u03c2)", + "OptionBeta": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae", + "OptionDev": "\u0391\u03bd\u03ac\u03c0\u03c4\u03c5\u03be\u03b7 (\u03b1\u03c3\u03c4\u03b1\u03b8\u03ae\u03c2)", "UninstallPluginHeader": "\u03b1\u03c0\u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b7\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf plugin", "UninstallPluginConfirmation": "\u0395\u03af\u03c3\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5;", "NoPluginConfigurationMessage": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf plugin \u03ad\u03c7\u03b5\u03b9 \u03c4\u03af\u03c0\u03bf\u03c4\u03b1 \u03bd\u03b1 \u03b4\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5", @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", "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} Emby Connect members to enjoy free access to the following apps:", @@ -62,12 +67,12 @@ "LabelMovie": "Movie", "LabelMusicVideo": "Music Video", "LabelEpisode": "Episode", - "LabelSeries": "Series", + "LabelSeries": "\u03a3\u03b5\u03b9\u03c1\u03ad\u03c2", "LabelStopping": "Stopping", "LabelCancelled": "(cancelled)", - "LabelFailed": "(failed)", - "ButtonHelp": "Help", - "ButtonSave": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03c4\u03b5", + "LabelFailed": "\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1", + "ButtonHelp": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1", + "ButtonSave": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "ButtonDownload": "Download", "SyncJobStatusQueued": "Queued", "SyncJobStatusConverting": "Converting", @@ -79,10 +84,10 @@ "SyncJobStatusCompletedWithError": "Synced with errors", "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", "LabelCollection": "Collection", - "HeaderAddToCollection": "Add to Collection", - "NewCollectionNameExample": "Example: Star Wars Collection", - "OptionSearchForInternetMetadata": "Search the internet for artwork and metadata", - "LabelSelectCollection": "Select collection:", + "HeaderAddToCollection": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5 \u03c3\u03c4\u03b7\u03bd \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", + "NewCollectionNameExample": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1: \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae \"\u03a0\u03cc\u03bb\u03b5\u03bc\u03bf\u03c2 \u03c4\u03c9\u03bd \u0386\u03c3\u03c4\u03c1\u03c9\u03bd\"", + "OptionSearchForInternetMetadata": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf \u03b3\u03b9\u03b1 \u03b5\u03be\u03ce\u03c6\u03c5\u03bb\u03bb\u03bf \u03ba\u03b1\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2", + "LabelSelectCollection": "\u0395\u03c0\u03ad\u03bb\u03b5\u03be\u03b5 \u03c3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae:", "HeaderDevices": "Devices", "ButtonScheduledTasks": "Scheduled tasks", "MessageItemsAdded": "Items added", @@ -93,14 +98,14 @@ "LabelSyncNoTargetsHelp": "It looks like you don't currently have any apps that support sync.", "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", - "ButtonTakeTheTour": "Take the tour", + "ButtonTakeTheTour": "\u039a\u03ac\u03bd\u03c4\u03b5 \u03c4\u03b7\u03bd \u039e\u03b5\u03bd\u03ac\u03b3\u03b7\u03c3\u03b7", "HeaderWelcomeBack": "Welcome back!", - "TitlePlugins": "Plugins", + "TitlePlugins": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1", "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.", "HeaderLibraryAccess": "Library Access", "HeaderChannelAccess": "Channel Access", - "HeaderDeviceAccess": "Device Access", + "HeaderDeviceAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2", "HeaderSelectDevices": "Select Devices", "ButtonCancelItem": "Cancel item", "ButtonQueueForRetry": "Queue for retry", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -133,14 +138,14 @@ "ButtonMute": "Mute", "ButtonUnmute": "Unmute", "ButtonStop": "Stop", - "ButtonNextTrack": "Next Track", + "ButtonNextTrack": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf \u039a\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9", "ButtonPause": "Pause", "ButtonPlay": "Play", "ButtonEdit": "Edit", "ButtonQueue": "Queue", - "ButtonPlayTrailer": "Play trailer", + "ButtonPlayTrailer": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae trailer", "ButtonPlaylist": "Playlist", - "ButtonPreviousTrack": "Previous Track", + "ButtonPreviousTrack": "\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf \u039a\u03bf\u03bc\u03bc\u03ac\u03c4\u03b9", "LabelEnabled": "Enabled", "LabelDisabled": "Disabled", "ButtonMoreInformation": "More Information", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,11 +199,12 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", - "HeaderResume": "\u03a3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03b9 ", + "HeaderResume": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7", "HeaderMyViews": "My Views", "HeaderLibraryFolders": "Media Folders", "HeaderLatestMedia": "Latest Media", @@ -219,7 +228,7 @@ "HeaderSelectChannelDownloadPath": "Select Channel Download Path", "HeaderSelectChannelDownloadPathHelp": "Browse or enter the path to use for storing channel cache files. The folder must be writeable.", "OptionNewCollection": "New...", - "ButtonAdd": "Add", + "ButtonAdd": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5", "ButtonRemove": "Remove", "LabelChapterDownloaders": "Chapter downloaders:", "LabelChapterDownloadersHelp": "Enable and rank your preferred chapter downloaders in order of priority. Lower priority downloaders will only be used to fill in missing information.", @@ -266,7 +275,7 @@ "MessageAreYouSureDeleteSubtitles": "Are you sure you wish to delete this subtitle file?", "ButtonRemoteControl": "Remote Control", "HeaderLatestTvRecordings": "Latest Recordings", - "ButtonOk": "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", + "ButtonOk": "\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", "ButtonCancel": "\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 ", "ButtonRefresh": "Refresh", "LabelCurrentPath": "Current path:", @@ -280,7 +289,7 @@ "ButtonShuffle": "Shuffle", "ButtonInstantMix": "Instant mix", "ButtonResume": "Resume", - "HeaderScenes": "Scenes", + "HeaderScenes": "\u03a3\u03ba\u03b7\u03bd\u03ad\u03c2", "HeaderAudioTracks": "Audio Tracks", "HeaderLibraries": "Libraries", "HeaderSubtitles": "Subtitles", @@ -298,8 +307,8 @@ "HeaderArtist": "Artist", "LabelAddedOnDate": "Added {0}", "ButtonStart": "Start", - "HeaderChannels": "Channels", - "HeaderMediaFolders": "Media Folders", + "HeaderChannels": "\u039a\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1", + "HeaderMediaFolders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", "HeaderBlockItemsWithNoRating": "Block content with no rating information:", "OptionBlockOthers": "Others", "OptionBlockTvShows": "TV Shows", @@ -383,7 +392,7 @@ "LabelPackageInstallCompleted": "{0} installation completed.", "LabelPackageInstallFailed": "{0} installation failed.", "LabelPackageInstallCancelled": "{0} installation cancelled.", - "TabServer": "Server", + "TabServer": "\u0394\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2", "TabUsers": "Users", "TabLibrary": "Library", "TabMetadata": "Metadata", @@ -394,20 +403,20 @@ "TabAdvanced": "Advanced", "TabHelp": "Help", "TabScheduledTasks": "Scheduled Tasks", - "ButtonFullscreen": "Fullscreen", - "ButtonAudioTracks": "Audio Tracks", + "ButtonFullscreen": "\u039f\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03b7 \u03bf\u03b8\u03cc\u03bd\u03b7", + "ButtonAudioTracks": "\u0397\u03c7\u03b7\u03c4\u03b9\u03ba\u03ac \u039a\u03cc\u03bc\u03bc\u03ac\u03c4\u03b9\u03b1", "ButtonSubtitles": "Subtitles", "ButtonScenes": "Scenes", "ButtonQuality": "Quality", "HeaderNotifications": "Notifications", "HeaderSelectPlayer": "Select Player:", - "ButtonSelect": "Select", - "ButtonNew": "New", + "ButtonSelect": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae", + "ButtonNew": "\u039d\u03ad\u03bf", "MessageInternetExplorerWebm": "For best results with Internet Explorer please install the WebM playback plugin.", "HeaderVideoError": "Video Error", "ButtonAddToPlaylist": "Add to playlist", "HeaderAddToPlaylist": "Add to Playlist", - "LabelName": "Name:", + "LabelName": "\u038c\u03bd\u03bf\u03bc\u03b1:", "ButtonSubmit": "Submit", "LabelSelectPlaylist": "Playlist:", "OptionNewPlaylist": "New playlist...", @@ -418,9 +427,9 @@ "ButtonRemoveFromPlaylist": "Remove from playlist", "HeaderSpecials": "Specials", "HeaderTrailers": "Trailers", - "HeaderAudio": "Audio", + "HeaderAudio": "\u0389\u03c7\u03bf\u03c2", "HeaderResolution": "Resolution", - "HeaderVideo": "Video", + "HeaderVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf", "HeaderRuntime": "Runtime", "HeaderCommunityRating": "Community rating", "HeaderParentalRating": "Parental rating", @@ -436,11 +445,11 @@ "HeaderEmbeddedImage": "Embedded image", "HeaderTrack": "Track", "HeaderDisc": "Disc", - "OptionMovies": "Movies", + "OptionMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", "OptionCollections": "Collections", "OptionSeries": "Series", "OptionSeasons": "Seasons", - "OptionEpisodes": "Episodes", + "OptionEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", "OptionGames": "Games", "OptionGameSystems": "Game systems", "OptionMusicArtists": "Music artists", @@ -467,7 +476,7 @@ "PersonTypePerson": "Person", "LabelTitleDisplayOrder": "Title display order:", "OptionSortName": "Sort name", - "OptionReleaseDate": "Release date", + "OptionReleaseDate": "\u03a0\u03c1\u03ce\u03c4\u03b7 \u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae", "LabelSeasonNumber": "Season number:", "LabelDiscNumber": "Disc number", "LabelParentNumber": "Parent number", @@ -496,22 +505,22 @@ "LabelContentTypeValue": "Content type: {0}", "LabelPathSubstitutionHelp": "Optional: Path substitution can map server paths to network shares that clients can access for direct playback.", "FolderTypeUnset": "Unset (mixed content)", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "TabMovies": "Movies", + "FolderTypeMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "FolderTypeMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", + "FolderTypeAdultVideos": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2 \u0395\u03bd\u03b7\u03bb\u03af\u03ba\u03c9\u03bd", + "FolderTypePhotos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", + "FolderTypeMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeHomeVideos": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "FolderTypeBooks": "\u0392\u03b9\u03b2\u03bb\u03af\u03b1", + "FolderTypeTvShows": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", + "TabMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", "TabSeries": "Series", "TabEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", "TabTrailers": "Trailers", - "TabGames": "Games", - "TabAlbums": "\u03ac\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", - "TabSongs": "\u03c4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "TabGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "TabAlbums": "\u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "TabSongs": "\u03a4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", "TabMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u03b2\u03af\u03bd\u03c4\u03b5\u03bf", "BirthPlaceValue": "Birth place: {0}", "DeathDateValue": "Died: {0}", @@ -611,7 +620,7 @@ "HeaderAlbums": "Albums", "HeaderGames": "Games", "HeaderBooks": "Books", - "HeaderEpisodes": "Episodes", + "HeaderEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", "HeaderSeasons": "Seasons", "HeaderTracks": "Tracks", "HeaderItems": "Items", @@ -649,7 +658,7 @@ "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", "MediaInfoRefFrames": "Ref frames", "TabPlayback": "Playback", - "TabNotifications": "Notifications", + "TabNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", "TabExpert": "Expert", "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", "HeaderRateAndReview": "Rate and Review", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json index e6509b9da..b18eb9d40 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json index bc6c5aaf1..227de4f26 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json index 981286e12..9568be9b3 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmaci\u00f3n", "MessageKeyUpdated": "Gracias. Su clave de seguidor ha sido actualizada.", "MessageKeyRemoved": "Gracias. Su clave de seguidor ha sido eliminada.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Tv en vivo", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Libre", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Seleccionar Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Jueves", "OptionFriday": "Viernes", "OptionSaturday": "S\u00e1bado", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirmar borrado", "MessageConfirmPathSubstitutionDeletion": "\u00bfEst\u00e1 seguro que desea borrar esta ruta de sustituci\u00f3n?", "LiveTvUpdateAvailable": "(Actualizaci\u00f3n disponible)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Divisi\u00f3n de medios", "MessageConfirmSplitMedia": "\u00bfEst\u00e1 seguro que desea dividir los medios en partes separadas?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Seleccione al menos un elemento.", "MessagePleaseSelectTwoItems": "Seleccione al menos dos elementos.", "MessageTheFollowingItemsWillBeGrouped": "Los siguientes t\u00edtulos se agrupar\u00e1n en un elemento.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json index b0700c49c..21e9d4188 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmaci\u00f3n", "MessageKeyUpdated": "Gracias. Su clave de aficionado ha sido actualizada.", "MessageKeyRemoved": "Gracias. Su clave de aficionado ha sido eliminada.", + "HeaderSupportTheTeam": "Apoye al equipo de Emby", + "TextEnjoyBonusFeatures": "Disfruta de Caracter\u00edsticas Premium", "TitleLiveTV": "TV en Vivo", "TitleSync": "Sinc", + "ButtonDonate": "Donar", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notificaciones", "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": "Enlaza tu clave de aficionado con hasta {0} miembros de Emby Connect para disfrutar de acceso gratuito a la siguientes aplicaciones:", @@ -118,9 +123,9 @@ "LabelFree": "Gratis", "HeaderPlaybackError": "Error de Reproducci\u00f3n", "MessagePlaybackErrorNotAllowed": "Actualmente no esta autorizado para reproducir este contenido. Por favor contacte a su administrador de sistema para mas informaci\u00f3n.", - "MessagePlaybackErrorNoCompatibleStream": "No hay streams compatibles en este en este momento. Por favor intente de nuevo mas tarde.", + "MessagePlaybackErrorNoCompatibleStream": "No hay streams compatibles en este en este momento. Por favor intente de nuevo mas tarde o contacte a su administrador de sistema para mas detalles.", "MessagePlaybackErrorRateLimitExceeded": "Su limite de transferencia ha sido excedido. Por favor contacte a su administrador de sistema para mas informaci\u00f3n.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "MessagePlaybackErrorPlaceHolder": "No es posible reproducir el contenido seleccionado en este dispositivo.", "HeaderSelectAudio": "Seleccionar Audio", "HeaderSelectSubtitles": "Seleccionar Subtitulos", "ButtonMarkForRemoval": "Remover de dispositivo", @@ -174,6 +179,9 @@ "OptionThursday": "Jueves", "OptionFriday": "Viernes", "OptionSaturday": "S\u00e1bado", + "OptionEveryday": "Todos los d\u00edas", + "OptionWeekend": "Fines de Semana", + "OptionWeekday": "D\u00edas de semana", "HeaderConfirmDeletion": "Confirmar Eliminaci\u00f3n", "MessageConfirmPathSubstitutionDeletion": "\u00bfEst\u00e1 seguro de querer eliminar esta ruta alternativa?", "LiveTvUpdateAvailable": "(Actualizaci\u00f3n disponible)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Dividir y Separar Medios", "MessageConfirmSplitMedia": "\u00bfEst\u00e1 seguro de querer dividir y separar estos medios en elementos individuales?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Su receptor Chromecast no puede conectarse con su Servidor Emby. Por favor revise las conexiones e intent\u00e9lo nuevamente.", "MessagePleaseSelectOneItem": "Por favor selecciona al menos un elemento.", "MessagePleaseSelectTwoItems": "Por favor selecciona al menos dos elementos.", "MessageTheFollowingItemsWillBeGrouped": "Los siguientes t\u00edtulos ser\u00e1n agrupados en un solo elemento.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json index 7fcd26b32..f980dda8f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fi.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json index 48b51da03..12ad2a595 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "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.", + "HeaderSupportTheTeam": "Aidez l'\u00e9quipe Emby", + "TextEnjoyBonusFeatures": "Profitez bien des fonctionnalit\u00e9s bonus", "TitleLiveTV": "TV en direct", "TitleSync": "Sync.", + "ButtonDonate": "Faire un don", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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 un maximum de {0} membres Emby Connect pour b\u00e9n\u00e9ficier de l'acc\u00e8s gratuit aux applications suivantes :", @@ -118,9 +123,9 @@ "LabelFree": "Gratuit", "HeaderPlaybackError": "Erreur de lecture", "MessagePlaybackErrorNotAllowed": "Vous n'\u00eates pas autoris\u00e9 \u00e0 lire ce contenu. Veuillez contacter votre administrateur syst\u00e8me pour plus de d\u00e9tails.", - "MessagePlaybackErrorNoCompatibleStream": "Aucun flux compatible n'est actuellement disponible. Veuillez r\u00e9essayer plus tard.", + "MessagePlaybackErrorNoCompatibleStream": "Aucun flux compatible n'est actuellement disponible. Veuillez r\u00e9essayer plus tard ou contactez votre administrateur pour plus de d\u00e9tails.", "MessagePlaybackErrorRateLimitExceeded": "Vous avez d\u00e9pass\u00e9 votre limite de lecture. Veuillez contacter votre administrateur syst\u00e8me pour plus de d\u00e9tails.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "MessagePlaybackErrorPlaceHolder": "Impossible de lire le contenu choisi sur cet appareil", "HeaderSelectAudio": "S\u00e9lectionner audio", "HeaderSelectSubtitles": "S\u00e9lectionner sous-titres", "ButtonMarkForRemoval": "Supprimer de l'appareil", @@ -174,6 +179,9 @@ "OptionThursday": "Jeudi", "OptionFriday": "Vendredi", "OptionSaturday": "Samedi", + "OptionEveryday": "Tous les jours", + "OptionWeekend": "Week-ends", + "OptionWeekday": "Jours de semaine", "HeaderConfirmDeletion": "Confirmer la suppression", "MessageConfirmPathSubstitutionDeletion": "\u00cates-vous s\u00fbr de vouloir supprimer cette substitution de chemin d'acc\u00e8s?", "LiveTvUpdateAvailable": "(Mise \u00e0 jour disponible)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "S\u00e9parer les m\u00e9dias", "MessageConfirmSplitMedia": "\u00cates vous s\u00fbrs de vouloir diviser les sources de m\u00e9dia dans des items s\u00e9par\u00e9s ?", "HeaderError": "Erreur", + "MessageChromecastConnectionError": "Votre cl\u00e9 Chromecast ne peut pas se connecter \u00e0 votre serveur Emby. Veuillez v\u00e9rifier les connections et recommencer.", "MessagePleaseSelectOneItem": "Veuillez s\u00e9lectionner au moins un item.", "MessagePleaseSelectTwoItems": "Veuillez s\u00e9lectionner au moins deux items.", "MessageTheFollowingItemsWillBeGrouped": "Les titres suivants seront group\u00e9s en un seul item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json index a92346cb2..3c461177f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u05d8\u05dc\u05d5\u05d5\u05d9\u05d6\u05d9\u05d4 \u05d7\u05d9\u05d9\u05d4", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u05d7\u05de\u05d9\u05e9\u05d9", "OptionFriday": "\u05e9\u05d9\u05e9\u05d9", "OptionSaturday": "\u05e9\u05d1\u05ea", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json index 3d2255b83..64b518013 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hr.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u010cetvrtak", "OptionFriday": "Petak", "OptionSaturday": "Subota", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json index f9ddac88f..9a98b1951 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/hu.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json index 76d29661b..8ccad5645 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json @@ -6,8 +6,8 @@ "Administrator": "Amministratore", "Password": "Password", "DeleteImage": "Elimina immagine", - "MessageThankYouForSupporting": "Thank you for supporting Emby.", - "MessagePleaseSupportProject": "Please support Emby.", + "MessageThankYouForSupporting": "Grazie per il tuo sostegno a Emby.", + "MessagePleaseSupportProject": "Per favore, sostieni Emby.", "DeleteImageConfirmation": "Sei sicuro di voler eliminare questa immagine?", "FileReadCancelled": "Il file letto \u00e8 stato cancellato.", "FileNotFound": "File non trovato", @@ -35,14 +35,19 @@ "HeaderConfirmation": "Conferma", "MessageKeyUpdated": "Grazie. La vostra chiave supporter \u00e8 stato aggiornato.", "MessageKeyRemoved": "Grazie. La vostra chiave supporter \u00e8 stata rimossa.", + "HeaderSupportTheTeam": "Supporta il Team di Emby", + "TextEnjoyBonusFeatures": "Goditi le caratteristiche aggiuntive", "TitleLiveTV": "Tv in diretta", "TitleSync": "Sincronizza", + "ButtonDonate": "Donazione", + "HeaderMyMedia": "I mei media", + "TitleNotifications": "Notifiche", "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.", + "MessageErrorLoadingSupporterInfo": "Si \u00e8 verificato un errore caricando le informazioni sui supporter. Si prega di riprovare pi\u00f9 tardi.", "MessageLinkYourSupporterKey": "Link your supporter key with up to {0} Emby Connect members to enjoy free access to the following apps:", - "HeaderConfirmRemoveUser": "Remove User", + "HeaderConfirmRemoveUser": "Cancellazione utente", "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?", + "MessageConfirmRemoveConnectSupporter": "Sei sicuro di voler rimuovere da questo utente i benefici aggiuntivi da supporter?", "ValueTimeLimitSingleHour": "Tempo limite: 1 ora", "ValueTimeLimitMultiHour": "Tempo limite: {0} ore", "HeaderUsers": "Utenti", @@ -89,18 +94,18 @@ "ButtonAddToCollection": "Aggiungi alla collezione", "HeaderSelectCertificatePath": "Seleziona il percorso del Certificato", "ConfirmMessageScheduledTaskButton": "L'operazione viene normalmente eseguita come operazione pianificata. Pu\u00f2 anche essere avviata manualmente da qui. Per configurare le operazioni pianificate, vedi:", - "HeaderSupporterBenefit": "L'iscrizione come supporter da benefici addizionali, come l'accesso alla sincronizzazione, i plugin premium, canali con contenuto internet, e altro. {0}Scopri di pi\u00f9{1}.", + "HeaderSupporterBenefit": "L'iscrizione come supporter garantisce benefici aggiuntivi, come l'accesso alla sincronizzazione, i plugin premium, canali con contenuto internet, e altro ancora. {0}Scopri di pi\u00f9{1}.", "LabelSyncNoTargetsHelp": "Sembra che al momento non avete applicazioni che supportano la sincronizzazione.", - "HeaderWelcomeToProjectServerDashboard": "Welcome to the Emby Server Dashboard", - "HeaderWelcomeToProjectWebClient": "Welcome to the Emby Web Client", - "ButtonTakeTheTour": "Fai il tour", + "HeaderWelcomeToProjectServerDashboard": "Benvenuto nel Pannello di controllo del Server Emby", + "HeaderWelcomeToProjectWebClient": "Benvenuto nel client web Emby", + "ButtonTakeTheTour": "Fai una visita", "HeaderWelcomeBack": "Ben tornato!", "TitlePlugins": "Plugins", "ButtonTakeTheTourToSeeWhatsNew": "Fai un tour per vedere cosa \u00e8 cambiato", "MessageNoSyncJobsFound": "Nessuna sincronizzazione pianificata. Creane una utilizzando i pulsanti sull'interfaccia web", "HeaderLibraryAccess": "Accesso libreria", "HeaderChannelAccess": "Accesso canali", - "HeaderDeviceAccess": "Accesso dispositivo", + "HeaderDeviceAccess": "Accesso al dispositivo", "HeaderSelectDevices": "Seleziona periferiche", "ButtonCancelItem": "Cancella oggetto", "ButtonQueueForRetry": "In attesa di riprovare", @@ -118,9 +123,9 @@ "LabelFree": "Gratis", "HeaderPlaybackError": "Errore di riproduzione", "MessagePlaybackErrorNotAllowed": "Al momento non sei autorizzato a riprodurre questo contenuto. Per favore contatta l'amministratore del sistema per ulteriori dettagli", - "MessagePlaybackErrorNoCompatibleStream": "Nessuna trasmissione compatibile \u00e8 al momento disponibile. Per favore riprova in seguito", + "MessagePlaybackErrorNoCompatibleStream": "Nessuna trasmissione compatibile \u00e8 al momento disponibile. Per favore riprova in seguito o contatta il tuo Amministratore di sistema per chiarimenti", "MessagePlaybackErrorRateLimitExceeded": "La tua quota di riproduzione \u00e8 stata raggiunta. Per favore contatta l'amministratore del sistema per ulteriori dettagli", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "MessagePlaybackErrorPlaceHolder": "Il contenuto scelto non pu\u00f2 essere riprodotto su questo dispositivo", "HeaderSelectAudio": "Seleziona audio", "HeaderSelectSubtitles": "Seleziona sottotitoli", "ButtonMarkForRemoval": "Rimuovi dal dispositivo", @@ -174,6 +179,9 @@ "OptionThursday": "Gioved\u00ec", "OptionFriday": "Venerd\u00ec", "OptionSaturday": "Sabato", + "OptionEveryday": "Tutti i giorni", + "OptionWeekend": "weekend", + "OptionWeekday": "Giorni feriali", "HeaderConfirmDeletion": "Conferma Cancellazione", "MessageConfirmPathSubstitutionDeletion": "Sei sicuro di voler cancellare questa sostituzione percorso?", "LiveTvUpdateAvailable": "(Aggiornamento disponibile)", @@ -191,10 +199,11 @@ "HeaderSplitMedia": "Dividi Media", "MessageConfirmSplitMedia": "Sei sicuro di voler dividere le fonti dei media in voci separate?", "HeaderError": "Errore", + "MessageChromecastConnectionError": "Il tuo ricevitore Chromecast non \u00e8 in grado di collegarsi al tuo Server Emby. Si prega di verificare la connessione e provare di nuovo", "MessagePleaseSelectOneItem": "Si prega di selezionare almeno un elemento.", "MessagePleaseSelectTwoItems": "Seleziona almeno due elementi.", "MessageTheFollowingItemsWillBeGrouped": "I seguenti titoli saranno raggruppati in un unico elemento:", - "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", + "MessageConfirmItemGrouping": "Le app Emby scieglieranno automaticamente la versione ottimale per la riproduzione basandosi sulle prestazioni del dispositivo e della rete. Sei sicuro di voler continuare?", "HeaderResume": "Riprendi", "HeaderMyViews": "Mie viste", "HeaderLibraryFolders": "Cartelle dei mediati", @@ -242,8 +251,8 @@ "OrganizePatternResult": "Risultati: {0}", "HeaderRestart": "Riavvia", "HeaderShutdown": "Spegni", - "MessageConfirmRestart": "Are you sure you wish to restart Emby Server?", - "MessageConfirmShutdown": "Are you sure you wish to shutdown Emby Server?", + "MessageConfirmRestart": "Sei sicuro di voler riavviare il Server Emby?", + "MessageConfirmShutdown": "Sei sicuro di voler spegnere il Server Emby?", "ButtonUpdateNow": "Aggiorna Adesso", "ValueItemCount": "{0} elemento", "ValueItemCountPlural": "{0} elementi", @@ -288,7 +297,7 @@ "MessageErrorPlayingVideo": "Si \u00e8 verificato un errore nella riproduzione del video.", "MessageEnsureOpenTuner": "Si prega di assicurarsi che ci sia un sintonizzatore disponibile.", "ButtonHome": "Home", - "ButtonDashboard": "Dashboard", + "ButtonDashboard": "Pannello", "ButtonReports": "Reports", "ButtonMetadataManager": "Manager Metadati", "HeaderTime": "Tempo", @@ -312,7 +321,7 @@ "OptionBlockLiveTvChannels": "Canali TV in onda", "OptionBlockChannelContent": "Contenuto di Canali Internet", "ButtonRevoke": "Revocare", - "MessageConfirmRevokeApiKey": "Are you sure you wish to revoke this api key? The application's connection to Emby Server will be abruptly terminated.", + "MessageConfirmRevokeApiKey": "Sei sicuro di voler revocare questa chiave api? La connessione dell'applicazione al Server Emby terminer\u00e0 immediatamente", "HeaderConfirmRevokeApiKey": "Revocare Chiave Api", "ValueContainer": "Contenitore: {0}", "ValueAudioCodec": "Audio Codec: {0}", @@ -526,17 +535,17 @@ "MessageInstallPluginFromApp": "Questo Plugin deve essere installato dall'app in cui vuoi farlo funzionare", "ValuePriceUSD": "Prezzo: {0} (USD)", "MessageFeatureIncludedWithSupporter": "Siete registrati per questa funzione, e sarete in grado di continuare ad usarlo con un abbonamento attivo sostenitore.", - "MessageChangeRecurringPlanConfirm": "After completing this transaction you will need to cancel your previous recurring donation from within your PayPal account. Thank you for supporting Emby.", + "MessageChangeRecurringPlanConfirm": "Dopo aver completato questa transazione dovrai cancellare dal tuo account PayPal la tua precedente donazione ricorrente. Grazie per aver sostenuto Emby.", "MessageSupporterMembershipExpiredOn": "La tua iscrizione supporter scaduto il {0}.", - "MessageYouHaveALifetimeMembership": "You have a lifetime supporter membership. You can provide additional donations on a one-time or recurring basis using the options below. Thank you for supporting Emby.", + "MessageYouHaveALifetimeMembership": "Tu hai un abbonamento come Supporter che non ha scadenza. Puoi fare ulteriori donazioni, singole o ricorrenti, scegliendo le opzioni sottostanti. Grazie per il tuo sostegno a Emby", "MessageYouHaveAnActiveRecurringMembership": "Si dispone di un attivo {0} appartenenza. \u00c8 possibile aggiornare il vostro piano utilizzando le opzioni di seguito.", "ButtonDelete": "Elimina", - "HeaderEmbyAccountAdded": "Emby Account Added", - "MessageEmbyAccountAdded": "The Emby account has been added to this user.", - "MessagePendingEmbyAccountAdded": "The Emby account has been added to this user. An email will be sent to the owner of the account. The invitation will need to be confirmed by clicking a link within the email.", - "HeaderEmbyAccountRemoved": "Emby Account Removed", - "MessageEmbyAccontRemoved": "The Emby account has been removed from this user.", - "TooltipLinkedToEmbyConnect": "Linked to Emby Connect", + "HeaderEmbyAccountAdded": "Account Emby aggiunto", + "MessageEmbyAccountAdded": "L'account Emby \u00e8 stato aggiunto a questo utente", + "MessagePendingEmbyAccountAdded": "L'account Emby \u00e8 stato aggiunto a questo utente. Un'email sar\u00e0 inviata al proprietario dell'account. L'invito dovr\u00e0 essere confermato selezionando il link contenuto nell'email", + "HeaderEmbyAccountRemoved": "Account Emby rimosso", + "MessageEmbyAccontRemoved": "L'account Emby \u00e8 stato rimosso da questo utente", + "TooltipLinkedToEmbyConnect": "Collegato ad Emby Connect", "HeaderUnrated": "Non votato", "ValueDiscNumber": "Disco {0}", "HeaderUnknownDate": "Data Sconosciuta", @@ -584,7 +593,7 @@ "ValuePremieres": "Debuttato {0}", "ValueStudio": "Studio: {0}", "ValueStudios": "Studi: {0}", - "ValueStatus": "Status: {0}", + "ValueStatus": "Stato {0}", "ValueSpecialEpisodeName": "Speciali - {0}", "LabelLimit": "Limite:", "ValueLinks": "Collegamenti: {0}", @@ -666,12 +675,12 @@ "WebClientTourMetadataManager": "Fare clic su Modifica per aprire la gestione dei metadati", "WebClientTourPlaylists": "Facile creazione di playlist , e riprodurli su qualsiasi dispositivo", "WebClientTourCollections": "Creare collezioni di film di casella di gruppo imposta insieme", - "WebClientTourUserPreferences1": "User preferences allow you to customize the way your library is presented in all of your Emby apps", - "WebClientTourUserPreferences2": "Configure your audio and subtitle language settings once, for every Emby app", + "WebClientTourUserPreferences1": "Le Preferenze Utente consentono di personalizzare il modo in cui la tua libreria viene presentata in tutte le app Emby", + "WebClientTourUserPreferences2": "Configura le impostazioni audio e la lingua dei sottotitoli valide per tutte le app Emby", "WebClientTourUserPreferences3": "Progettare la home page del client web a proprio piacimento", "WebClientTourUserPreferences4": "Configurare fondali, sigle e lettori esterni", "WebClientTourMobile1": "Il client web funziona alla grande su smartphone e tablet ...", - "WebClientTourMobile2": "and easily controls other devices and Emby apps", + "WebClientTourMobile2": "e controlla facilmente altri dispositivi e app Emby", "WebClientTourMySync": "Sincronizza il tuo personal media per i dispositivi per la visualizzazione offline.", "MessageEnjoyYourStay": "Godetevi il vostro soggiorno", "DashboardTourDashboard": "Il pannello di controllo del server consente di monitorare il vostro server e gli utenti. Potrai sempre sapere chi sta facendo cosa e dove sono.", @@ -683,7 +692,7 @@ "DashboardTourPlugins": "Installare il plugin come canali internet video, live tv, scanner metadati e altro ancora.", "DashboardTourNotifications": "Inviare automaticamente notifiche di eventi server al vostro dispositivo mobile, e-mail e altro ancora.", "DashboardTourScheduledTasks": "Gestire facilmente le operazioni di lunga esecuzione con le operazioni pianificate. Decidere quando corrono, e con quale frequenza.", - "DashboardTourMobile": "The Emby Server dashboard works great on smartphones and tablets. Manage your server from the palm of your hand anytime, anywhere.", + "DashboardTourMobile": "Il Pannello di Controllo del Server Emby funziona bene su smartphone e tablet. Gestisci il tuo server con il palmo della tua mano, quando vuoi, dove vuoi", "DashboardTourSync": "Sincronizza il tuo personal media per i dispositivi per la visualizzazione offline.", "MessageRefreshQueued": "Aggiornamento programmato", "TabDevices": "Dispositivi", @@ -693,13 +702,13 @@ "DeleteDeviceConfirmation": "Sei sicuro di voler cancellare questo dispositivo? Esso riapparir\u00e0 la prossima volta che un utente accede con esso.", "LabelEnableCameraUploadFor": "Abilita caricamento macchina fotografica per:", "HeaderSelectUploadPath": "Seleziona cartella upload", - "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "LabelEnableCameraUploadForHelp": "Gli upload saranno eseguiti automaticamente in background quando sei collegato a Emby", "ErrorMessageStartHourGreaterThanEnd": "Ora di fine deve essere maggiore del tempo di avvio.", "ButtonLibraryAccess": "Accesso biblioteca", "ButtonParentalControl": "Controllo parentale", "HeaderInvitationSent": "Invito inviato", "MessageInvitationSentToUser": "Una e-mail \u00e8 stata inviata a {0}, invitandoli ad accettare l'invito di condivisione.", - "MessageInvitationSentToNewUser": "An email has been sent to {0} inviting them to sign up with Emby.", + "MessageInvitationSentToNewUser": "Un'email \u00e8 stata inviata a {0} invitandolo a registrarsi a Emby", "HeaderConnectionFailure": "Errore di connessione", "MessageUnableToConnectToServer": "Non siamo in grado di connettersi al server selezionato al momento. Per favore assicurati che sia in esecuzione e riprova.", "ButtonSelectServer": "Selezionare il server", @@ -716,12 +725,12 @@ "MessageInvalidForgotPasswordPin": "Un pin Invalido o scaduto \u00e8 stato inserito. Riprova.", "MessagePasswordResetForUsers": "Le password per i seguenti utenti sono state rimosse:", "HeaderInviteGuest": "Invita Ospite", - "ButtonLinkMyEmbyAccount": "Link my account now", - "MessageConnectAccountRequiredToInviteGuest": "In order to invite guests you need to first link your Emby account to this server.", + "ButtonLinkMyEmbyAccount": "Collega il mio account ora", + "MessageConnectAccountRequiredToInviteGuest": "Per invitare gli amici \u00e8 necessario innanzitutto collegare l'account Emby a questo server.", "ButtonSync": "Sinc.", "SyncMedia": "Sync media", "HeaderCancelSyncJob": "Cancel Sync", - "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": "La cancellazione dell'attivit\u00e0 di sincronizzazione causer\u00e0 la rimozione dal dispositivo dei media sincronizzati durante il prossimo processo di sincronizzazione. Sei sicuro di voler comunque procedere?", "TabSync": "Sinc", "MessagePleaseSelectDeviceToSyncTo": "Selezionare un dispositivo per la sincronizzazione", "MessageSyncJobCreated": "Attivit\u00e0 di Sincronizz. Creata", @@ -745,6 +754,6 @@ "SyncJobItemStatusFailed": "Fallito", "SyncJobItemStatusRemovedFromDevice": "Rimosso dal dispositivo", "SyncJobItemStatusCancelled": "Cancellato", - "LabelProfile": "Profile:", + "LabelProfile": "Profilo:", "LabelBitrateMbps": "Bitrate (Mbps):" }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json index ae20fafba..49ca737fe 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -175,6 +180,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -192,6 +200,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json index 596a9bdd7..ecdd36c0e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "\u0420\u0430\u0441\u0442\u0430\u0443", "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.", + "HeaderSupportTheTeam": "Emby \u0442\u043e\u0431\u044b\u043d \u049b\u043e\u043b\u0434\u0430\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", "TitleLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", "TitleSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "ButtonDonate": "\u049a\u0430\u0439\u044b\u0440\u043c\u0430\u043b\u0430\u0443", + "HeaderMyMedia": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c", + "TitleNotifications": "\u0425\u0430\u0431\u0430\u0440\u043b\u0430\u043d\u0434\u044b\u0440\u0443\u043b\u0430\u0440", "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 {0} Emby Connect \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.", @@ -66,7 +71,7 @@ "LabelStopping": "\u0422\u043e\u049b\u0442\u0430\u0442\u044b\u043b\u0443\u0434\u0430", "LabelCancelled": "(\u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b)", "LabelFailed": "(\u0441\u04d9\u0442\u0441\u0456\u0437)", - "ButtonHelp": "\u0410\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", + "ButtonHelp": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u0433\u0456 \u0430\u043d\u044b\u049b\u0442\u0430\u043c\u0430\u0493\u0430", "ButtonSave": "\u0421\u0430\u049b\u0442\u0430\u0443", "ButtonDownload": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443", "SyncJobStatusQueued": "\u041a\u0435\u0437\u0435\u043a\u0442\u0435", @@ -81,7 +86,7 @@ "LabelCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b", "HeaderAddToCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u049b\u0430 \u04af\u0441\u0442\u0435\u0443", "NewCollectionNameExample": "\u041c\u044b\u0441\u0430\u043b: \u0416\u04b1\u043b\u0434\u044b\u0437 \u0441\u043e\u0493\u044b\u0441\u0442\u0430\u0440\u044b (\u0436\u0438\u044b\u043d\u0442\u044b\u049b)", - "OptionSearchForInternetMetadata": "\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 \u0456\u0437\u0434\u0435\u0443", + "OptionSearchForInternetMetadata": "\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 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u0456\u0437\u0434\u0435\u0443", "LabelSelectCollection": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u044b \u0442\u0430\u04a3\u0434\u0430\u0443:", "HeaderDevices": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440", "ButtonScheduledTasks": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430\u043b\u0430\u0440\u0493\u0430 \u04e9\u0442\u0443", @@ -117,9 +122,9 @@ "LabelNumberReviews": "{0} \u043f\u0456\u043a\u0456\u0440", "LabelFree": "\u0422\u0435\u0433\u0456\u043d", "HeaderPlaybackError": "\u041e\u0439\u043d\u0430\u0442\u0443 \u049b\u0430\u0442\u0435\u0441\u0456", - "MessagePlaybackErrorNotAllowed": "\u041e\u0441\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0430\u0493\u044b\u043c\u0434\u0430 \u0441\u0456\u0437\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d. \u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", - "MessagePlaybackErrorNoCompatibleStream": "\u0410\u0493\u044b\u043c\u0434\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0441\u044b\u0439\u044b\u0441\u044b\u043c\u0434\u044b \u0430\u0493\u044b\u043d\u0434\u0430\u0440 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u0435\u043c\u0435\u0441. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", - "MessagePlaybackErrorRateLimitExceeded": "\u041e\u0439\u043d\u0430\u0442\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u04a3\u044b\u0437 \u0448\u0435\u043a\u0442\u0435\u043d \u0430\u0441\u044b\u043f \u043a\u0435\u0442\u043a\u0435\u043d. \u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", + "MessagePlaybackErrorNotAllowed": "\u041e\u0441\u044b \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0430\u0493\u044b\u043c\u0434\u0430 \u0441\u0456\u0437\u0433\u0435 \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d. \u0422\u043e\u043b\u044b\u049b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", + "MessagePlaybackErrorNoCompatibleStream": "\u0410\u0493\u044b\u043c\u0434\u0430 \u0435\u0448\u049b\u0430\u043d\u0434\u0430\u0439 \u0441\u044b\u0439\u044b\u0441\u044b\u043c\u0434\u044b \u0430\u0493\u044b\u043d\u0434\u0430\u0440 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u043b\u044b \u0435\u043c\u0435\u0441. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u0442\u043e\u043b\u044b\u049b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", + "MessagePlaybackErrorRateLimitExceeded": "\u041e\u0439\u043d\u0430\u0442\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u04a3\u044b\u0437 \u0448\u0435\u043a\u0442\u0435\u043d \u0430\u0441\u044b\u043f \u043a\u0435\u0442\u043a\u0435\u043d. \u0422\u043e\u043b\u044b\u049b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", "MessagePlaybackErrorPlaceHolder": "\u0422\u0430\u04a3\u0434\u0430\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u04b1\u043b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0430\u0442\u044b\u043d \u0435\u043c\u0435\u0441.", "HeaderSelectAudio": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0430\u04a3\u0434\u0430\u0443", "HeaderSelectSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0442\u0430\u04a3\u0434\u0430\u0443", @@ -174,6 +179,9 @@ "OptionThursday": "\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456", "OptionFriday": "\u0436\u04b1\u043c\u0430", "OptionSaturday": "\u0441\u0435\u043d\u0431\u0456", + "OptionEveryday": "\u041a\u04af\u043d \u0441\u0430\u0439\u044b\u043d", + "OptionWeekend": "\u0414\u0435\u043c\u0430\u043b\u044b\u0441 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", + "OptionWeekday": "\u0410\u043f\u0442\u0430 \u043a\u04af\u043d\u0434\u0435\u0440\u0456", "HeaderConfirmDeletion": "\u0416\u043e\u044e\u0434\u044b \u0440\u0430\u0441\u0442\u0430\u0443", "MessageConfirmPathSubstitutionDeletion": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043e\u0441\u044b \u0436\u043e\u043b \u0430\u043b\u043c\u0430\u0441\u0442\u044b\u0440\u0443\u0434\u044b \u0436\u043e\u044e \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "LiveTvUpdateAvailable": "(\u0416\u0430\u04a3\u0430\u0440\u0442\u0443 \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u043d\u044b \u0431\u04e9\u043b\u0435\u043a\u0442\u0435\u043f \u0431\u04e9\u043b\u0443", "MessageConfirmSplitMedia": "\u0428\u044b\u043d\u044b\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448 \u043a\u04e9\u0437\u0434\u0435\u0440\u0456\u043d \u0431\u04e9\u043b\u0435\u043a \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u0493\u0430 \u0431\u04e9\u043b\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "HeaderError": "\u049a\u0430\u0442\u0435", + "MessageChromecastConnectionError": "Chromecast \u049b\u0430\u0431\u044b\u043b\u0434\u0430\u0493\u044b\u0448\u044b Emby Server \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u044b\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u0435\u043c\u0435\u0441. \u041e\u043b\u0430\u0440\u0434\u044b\u04a3 \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u0434\u0430\u0440\u044b\u043d \u0442\u0435\u043a\u0441\u0435\u0440\u0456\u04a3\u0456\u0437 \u0434\u0435 \u0436\u04d9\u043d\u0435 \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", "MessagePleaseSelectOneItem": "\u0415\u04a3 \u043a\u0435\u043c\u0456\u043d\u0434\u0435 \u0431\u0456\u0440 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "MessagePleaseSelectTwoItems": "\u0415\u04a3 \u043a\u0435\u043c\u0456\u043d\u0434\u0435 \u0435\u043a\u0456 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "MessageTheFollowingItemsWillBeGrouped": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0442\u0443\u044b\u043d\u0434\u044b\u043b\u0430\u0440 \u0431\u0456\u0440 \u0442\u0430\u0440\u043c\u0430\u049b\u049b\u0430 \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u044b\u043b\u0430\u0434\u044b:", @@ -705,12 +714,12 @@ "ButtonSelectServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", "MessagePluginConfigurationRequiresLocalAccess": "\u041e\u0441\u044b \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0456 \u0442\u0435\u04a3\u0448\u0435\u0443 \u04af\u0448\u0456\u043d \u0436\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u0442\u0456\u043a\u0435\u043b\u0435\u0439 \u043a\u0456\u0440\u0456\u04a3\u0456\u0437.", "MessageLoggedOutParentalControl": "\u0410\u0493\u044b\u043c\u0434\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u0448\u0435\u043a\u0442\u0435\u043b\u0433\u0435\u043d. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u0435\u0439\u0456\u043d \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", - "DefaultErrorMessage": "\u0421\u0430\u0443\u0430\u043b\u0434\u044b \u04e9\u04a3\u0434\u0435\u0442\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.", + "DefaultErrorMessage": "\u0421\u0430\u0443\u0430\u043b \u04e9\u04a3\u0434\u0435\u043b\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.", "ButtonAccept": "\u049a\u0430\u0431\u044b\u043b\u0434\u0430\u0443", "ButtonReject": "\u049a\u0430\u0431\u044b\u043b\u0434\u0430\u043c\u0430\u0443", "HeaderForgotPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u04b1\u043c\u044b\u0442\u044b\u04a3\u044b\u0437 \u0431\u0430?", "MessageContactAdminToResetPassword": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456\u04a3\u0456\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443 \u04af\u0448\u0456\u043d \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u04d9\u043a\u0456\u043c\u0448\u0456\u04a3\u0456\u0437\u0433\u0435 \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437.", - "MessageForgotPasswordInNetworkRequired": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443 \u04af\u0434\u0435\u0440\u0456\u0441\u0456 \u04af\u0448\u0456\u043d \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u04af\u0439\u043b\u0456\u043a \u0436\u0435\u043b\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u0456\u0448\u0456\u043d\u0434\u0435 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", + "MessageForgotPasswordInNetworkRequired": "\u049a\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0434\u0456 \u044b\u0441\u044b\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u04af\u0448\u0456\u043d \u04d9\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u04af\u0439\u043b\u0456\u043a \u0436\u0435\u043b\u0456\u04a3\u0456\u0437\u0434\u0456\u04a3 \u0456\u0448\u0456\u043d\u0434\u0435 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", "MessageForgotPasswordFileCreated": "\u041a\u0435\u043b\u0435\u0441\u0456 \u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0435 \u0436\u0430\u0441\u0430\u043b\u0434\u044b \u0436\u04d9\u043d\u0435 \u049b\u0430\u043b\u0430\u0439 \u043a\u0456\u0440\u0456\u0441\u0443 \u0442\u0443\u0440\u0430\u043b\u044b \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u0430\u0440 \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0430\u0440:", "MessageForgotPasswordFileExpiration": "PIN \u044b\u0441\u044b\u0440\u0443 \u043c\u0435\u0437\u0433\u0456\u043b\u0456 {0} \u0431\u0456\u0442\u0435\u0434\u0456.", "MessageInvalidForgotPasswordPin": "\u0416\u0430\u0440\u0430\u043c\u0441\u044b\u0437 \u043d\u0435\u043c\u0435\u0441\u0435 \u043c\u0435\u0440\u0437\u0456\u043c\u0456 \u0430\u044f\u049b\u0442\u0430\u043b\u0493\u0430\u043d PIN \u0435\u043d\u0433\u0456\u0437\u0456\u043b\u0434\u0456. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", @@ -721,7 +730,7 @@ "ButtonSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "SyncMedia": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "HeaderCancelSyncJob": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u0434\u0456 \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", - "CancelSyncJobConfirmation": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443 \u043a\u0435\u043b\u0435\u0441\u0456 \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0434\u0435\u0440\u0456\u0441\u0456\u043d\u0434\u0435 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044e\u0493\u0430 \u04d9\u043a\u0435\u043b\u0435\u0434\u0456. \u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043a\u0456\u0440\u0456\u0441\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", + "CancelSyncJobConfirmation": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443\u044b \u043a\u0435\u043b\u0435\u0441\u0456 \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0434\u0430\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u043e\u044f\u0434\u044b. \u0428\u044b\u043d\u044b\u043c\u0435\u043d \u043a\u0456\u0440\u0456\u0441\u0443 \u049b\u0430\u0436\u0435\u0442 \u043f\u0435?", "TabSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "MessagePleaseSelectDeviceToSyncTo": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0456\u043b\u0435\u0442\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043d\u044b \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437.", "MessageSyncJobCreated": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u0436\u04b1\u043c\u044b\u0441\u044b \u0436\u0430\u0441\u0430\u043b\u0434\u044b.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json index 4da140d1d..92c83e8c7 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json index b2c86d218..31c6ec66c 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nb.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Bekreftelse", "MessageKeyUpdated": "Takk. Din supportern\u00f8kkel har blitt oppdatert.", "MessageKeyRemoved": "Takk. Din supportern\u00f8kkel har blitt fjernet.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Synk", + "ButtonDonate": "Don\u00e9r", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Beskjeder", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Gratis", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Velg Lyd", @@ -174,6 +179,9 @@ "OptionThursday": "Torsdag", "OptionFriday": "Fredag", "OptionSaturday": "L\u00f8rdag", + "OptionEveryday": "Hver dag", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Bekreft Kansellering", "MessageConfirmPathSubstitutionDeletion": "Er du sikker p\u00e5 at du vil slette sti erstatter?", "LiveTvUpdateAvailable": "(Oppdatering tilgjengelig)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Del Media Fra Hverandre", "MessageConfirmSplitMedia": "Er du sikker at du vil splitte mediakilden i separerte elementer?", "HeaderError": "Feil", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Vennligst velg minst ett element.", "MessagePleaseSelectTwoItems": "Vennligst velg minst to elementer.", "MessageTheFollowingItemsWillBeGrouped": "F\u00f8lgende titler vil bli gruppert til ett element:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json index 3709b6bc2..9020d9232 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Bevestiging", "MessageKeyUpdated": "Dank u. Uw supporter sleutel is bijgewerkt.", "MessageKeyRemoved": "Dank u. Uw supporter sleutel is verwijderd.", + "HeaderSupportTheTeam": "Ondersteun het Emby Team", + "TextEnjoyBonusFeatures": "Geniet van Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Synchroniseer", + "ButtonDonate": "Doneren", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Meldingen", "ErrorLaunchingChromecast": "Er is een fout opgetreden bij het starten van chromecast. Zorg ervoor dat uw apparaat is aangesloten op uw draadloze netwerk.", "MessageErrorLoadingSupporterInfo": "Er is een fout opgetreden bij het laden van uw supporter informatie. Probeer het later opnieuw.", "MessageLinkYourSupporterKey": "Koppel uw supporters sleutel met maximaal {0} Emby Connect leden om te genieten van gratis toegang tot de volgende apps:", @@ -119,8 +124,8 @@ "HeaderPlaybackError": "Afspeel Fout", "MessagePlaybackErrorNotAllowed": "U bent niet bevoegd om deze content af te spelen. Neem contact op met uw systeembeheerder voor meer informatie.", "MessagePlaybackErrorNoCompatibleStream": "Geen compatibele streams beschikbaar. Probeer het later opnieuw.", - "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", - "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", + "MessagePlaybackErrorRateLimitExceeded": "Je afspeel rate limiet is overschreden. Neem contact op met de beheerder van de server voor details.", + "MessagePlaybackErrorPlaceHolder": "De gekozen content is niet af te spelen vanaf dit apparaat.", "HeaderSelectAudio": "Selecteer Audio", "HeaderSelectSubtitles": "Selecteer Ondertitels", "ButtonMarkForRemoval": "Van apparaat verwijderen", @@ -174,6 +179,9 @@ "OptionThursday": "Donderdag", "OptionFriday": "Vrijdag", "OptionSaturday": "Zaterdag", + "OptionEveryday": "Elke dag", + "OptionWeekend": "Weekenden", + "OptionWeekday": "Weekdagen", "HeaderConfirmDeletion": "Bevestigen Verwijdering", "MessageConfirmPathSubstitutionDeletion": "Weet u zeker dat u dit pad vervanging wilt verwijderen?", "LiveTvUpdateAvailable": "(Update beschikbaar)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Splits Media Apart", "MessageConfirmSplitMedia": "Weet u zeker dat u de media bronnen wilt splitsen in afzonderlijke items?", "HeaderError": "Fout", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Selecteer ten minste een item.", "MessagePleaseSelectTwoItems": "Selecteer ten minste twee items.", "MessageTheFollowingItemsWillBeGrouped": "De volgende titels worden gegroepeerd in \u00e9\u00e9n item:", @@ -693,7 +702,7 @@ "DeleteDeviceConfirmation": "Weet u zeker dat u dit apparaat wilt verwijderen? Het zal opnieuw verschijnen als een gebruiker zich hiermee aanmeldt.", "LabelEnableCameraUploadFor": "Schakel camera upload in voor:", "HeaderSelectUploadPath": "Kies upload pad", - "LabelEnableCameraUploadForHelp": "Uploads will occur automatically in the background when signed into Emby.", + "LabelEnableCameraUploadForHelp": "Uploads zullen automatisch op de achtergrond plaatsvinden wanneer bij Emby aangemeld is.", "ErrorMessageStartHourGreaterThanEnd": "Eind tijd moet na de start tijd liggen.", "ButtonLibraryAccess": "Bibliotheek toegang", "ButtonParentalControl": "Ouderlijk toezicht", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json index da54b8c1d..6d15e132b 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Czwartek", "OptionFriday": "Pi\u0105tek", "OptionSaturday": "Sobota", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json index 0f7e35454..facd1f79d 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirma\u00e7\u00e3o", "MessageKeyUpdated": "Obrigado. Sua chave de colaborador foi atualizada.", "MessageKeyRemoved": "Obrigado. Sua chave de colaborador foi removida.", + "HeaderSupportTheTeam": "Colabore com o Time do Emby", + "TextEnjoyBonusFeatures": "Aproveite Funcionalidades Extras", "TitleLiveTV": "TV ao Vivo", "TitleSync": "Sinc", + "ButtonDonate": "Doar", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifica\u00e7\u00f5es", "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": "Associe sua chave de colaborador com at\u00e9 {0} membros do Emby Connect para desfrutar acesso gr\u00e1tis \u00e0s seguintes apps:", @@ -118,7 +123,7 @@ "LabelFree": "Gr\u00e1tis", "HeaderPlaybackError": "Erro na Reprodu\u00e7\u00e3o", "MessagePlaybackErrorNotAllowed": "Voc\u00ea n\u00e3o est\u00e1 autorizado a reproduzir este conte\u00fado. Por favor, entre em contato com o administrador do sistema para mais detalhes.", - "MessagePlaybackErrorNoCompatibleStream": "N\u00e3o existem streams compat\u00edveis dispon\u00edveis. Por favor, tente novamente mais tarde.", + "MessagePlaybackErrorNoCompatibleStream": "N\u00e3o existem streams compat\u00edveis. Por favor, tente novamente mais tarde ou contate o administrador do sistema para mais detalhes.", "MessagePlaybackErrorRateLimitExceeded": "Seu limite da taxa de reprodu\u00e7\u00e3o foi excedido. Por favor, entre em contato com o administrador do sistema para mais detalhes.", "MessagePlaybackErrorPlaceHolder": "O conte\u00fado escolhido n\u00e3o \u00e9 reproduz\u00edvel neste dispositivo.", "HeaderSelectAudio": "Selecione \u00c1udio", @@ -174,6 +179,9 @@ "OptionThursday": "Quinta-feira", "OptionFriday": "Sexta-feira", "OptionSaturday": "S\u00e1bado", + "OptionEveryday": "Todos os dias", + "OptionWeekend": "Fins-de-semana", + "OptionWeekday": "Dias da semana", "HeaderConfirmDeletion": "Confirmar Exclus\u00e3o", "MessageConfirmPathSubstitutionDeletion": "Deseja realmente excluir esta substitui\u00e7\u00e3o de caminho?", "LiveTvUpdateAvailable": "(Atualiza\u00e7\u00e3o dispon\u00edvel)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Separar M\u00eddia", "MessageConfirmSplitMedia": "Deseja realmente dividir as fontes de m\u00eddia em itens separados?", "HeaderError": "Erro", + "MessageChromecastConnectionError": "Seu receptor Chromecast n\u00e3o pode se conectar com seu Servidor Emby. Por favor, verifique suas conex\u00f5es e tente novamente.", "MessagePleaseSelectOneItem": "Por favor selecione pelo menos um item.", "MessagePleaseSelectTwoItems": "Por favor selecione pelo menos dois itens.", "MessageTheFollowingItemsWillBeGrouped": "Os seguintes t\u00edtulos ser\u00e3o agrupados em um \u00fanico item:", @@ -380,7 +389,7 @@ "ButtonMyPreferences": "Minhas Prefer\u00eancias", "MessageBrowserDoesNotSupportWebSockets": "Este navegador n\u00e3o suporta web sockets. Para uma melhor experi\u00eancia, tente um navegador mais atual como o Chrome, Firefox, IE10+, Safari (iOS) ou Opera.", "LabelInstallingPackage": "Instalando {0}", - "LabelPackageInstallCompleted": "Instala\u00e7\u00e3o de {0} completa.", + "LabelPackageInstallCompleted": "Instala\u00e7\u00e3o de {0} conclu\u00edda.", "LabelPackageInstallFailed": "Instala\u00e7\u00e3o de {0} falhou.", "LabelPackageInstallCancelled": "Instala\u00e7\u00e3o de {0} cancelada.", "TabServer": "Servidor", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json index 6a1092c89..525bd440e 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_PT.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "TV ao Vivo", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -79,7 +84,7 @@ "SyncJobStatusCompletedWithError": "Synced with errors", "SyncJobItemStatusReadyToTransfer": "Ready to Transfer", "LabelCollection": "Collection", - "HeaderAddToCollection": "Add to Collection", + "HeaderAddToCollection": "Adicionar \u00e0 Cole\u00e7\u00e3o", "NewCollectionNameExample": "Exemplo: Cole\u00e7\u00e3o Guerra das Estrelas", "OptionSearchForInternetMetadata": "Procurar na internet por imagens e metadados", "LabelSelectCollection": "Select collection:", @@ -116,9 +121,9 @@ "LabelVersionInstalled": "{0} installed", "LabelNumberReviews": "{0} Reviews", "LabelFree": "Free", - "HeaderPlaybackError": "Playback Error", - "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "HeaderPlaybackError": "Erro na Reprodu\u00e7\u00e3o", + "MessagePlaybackErrorNotAllowed": "N\u00e3o est\u00e1 autorizado a reproduzir este conte\u00fado. Por favor, contacte o administrador do sistema para mais detalhes.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Quinta", "OptionFriday": "Sexta", "OptionSaturday": "S\u00e1bado", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,13 +199,14 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", "MessageConfirmItemGrouping": "Emby apps will automatically choose the optimal version to play based on device and network performance. Are you sure you wish to continue?", "HeaderResume": "Resumir", "HeaderMyViews": "My Views", - "HeaderLibraryFolders": "Media Folders", + "HeaderLibraryFolders": "Pastas multim\u00e9dia", "HeaderLatestMedia": "Latest Media", "ButtonMoreItems": "More...", "ButtonMore": "More", @@ -385,7 +394,7 @@ "LabelPackageInstallCancelled": "{0} installation cancelled.", "TabServer": "Servidor", "TabUsers": "Users", - "TabLibrary": "Library", + "TabLibrary": "Biblioteca", "TabMetadata": "Metadados", "TabDLNA": "DLNA", "TabLiveTV": "Live TV", @@ -648,7 +657,7 @@ "MediaInfoStreamTypeSubtitle": "Subtitle", "MediaInfoStreamTypeEmbeddedImage": "Embedded Image", "MediaInfoRefFrames": "Ref frames", - "TabPlayback": "Playback", + "TabPlayback": "Reprodu\u00e7\u00e3o", "TabNotifications": "Notifica\u00e7\u00f5es", "TabExpert": "Expert", "HeaderSelectCustomIntrosPath": "Select Custom Intros Path", @@ -677,7 +686,7 @@ "DashboardTourDashboard": "O Painel Principal do servidor permite monitorizar o seu servidor e os seus utilizadores. Poder\u00e1 sempre saber onde est\u00e3o e o que est\u00e3o a fazer.", "DashboardTourHelp": "In-app help provides easy buttons to open wiki pages relating to the on-screen content.", "DashboardTourUsers": "Easily create user accounts for your friends and family, each with their own permissions, library access, parental controls and more.", - "DashboardTourCinemaMode": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "DashboardTourCinemaMode": "O modo cinema traz a experi\u00eancia do cinema para a sua sala, possibilitando reproduzir trailers e introdu\u00e7\u00f5es personalizadas antes da longa-metragem.", "DashboardTourChapters": "Enable chapter image generation for your videos for a more pleasing presentation while viewing.", "DashboardTourSubtitles": "Automatically download subtitles for your videos in any language.", "DashboardTourPlugins": "Install plugins such as internet video channels, live tv, metadata scanners, and more.", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json index 4718e8930..383fc7355 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json @@ -35,8 +35,13 @@ "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.", + "HeaderSupportTheTeam": "\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 Emby", + "TextEnjoyBonusFeatures": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438", "TitleLiveTV": "\u0422\u0412-\u044d\u0444\u0438\u0440", "TitleSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", + "ButtonDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u0442\u044c", + "HeaderMyMedia": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "TitleNotifications": "\u0423\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f", "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 \u0441\u043e \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e {0} \u0447\u043b\u0435\u043d\u043e\u0432 Emby 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:", @@ -66,7 +71,7 @@ "LabelStopping": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430", "LabelCancelled": "(\u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e)", "LabelFailed": "(\u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e)", - "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435", + "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "ButtonSave": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", "ButtonDownload": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c", "SyncJobStatusQueued": "\u0412 \u043e\u0447\u0435\u0440\u0435\u0434\u0438", @@ -81,7 +86,7 @@ "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)", - "OptionSearchForInternetMetadata": "\u0418\u0441\u043a\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 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", + "OptionSearchForInternetMetadata": "\u0418\u0441\u043a\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 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "LabelSelectCollection": "\u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438:", "HeaderDevices": "\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "ButtonScheduledTasks": "\u041a \u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0443", @@ -117,10 +122,10 @@ "LabelNumberReviews": "\u041e\u0442\u0437\u044b\u0432\u044b: {0}", "LabelFree": "\u0411\u0435\u0441\u043f\u043b.", "HeaderPlaybackError": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", - "MessagePlaybackErrorNotAllowed": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b \u043d\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u0414\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.", - "MessagePlaybackErrorNoCompatibleStream": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", - "MessagePlaybackErrorRateLimitExceeded": "\u0412\u0430\u0448\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0430. \u0414\u043b\u044f \u0434\u0435\u0442\u0430\u043b\u0435\u0439 \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.", - "MessagePlaybackErrorPlaceHolder": "\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.", + "MessagePlaybackErrorNotAllowed": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u044b \u043d\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.", + "MessagePlaybackErrorNoCompatibleStream": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435 \u0438\u043b\u0438 \u0437\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.", + "MessagePlaybackErrorRateLimitExceeded": "\u0412\u0430\u0448\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0430. \u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c.", + "MessagePlaybackErrorPlaceHolder": "\u0412\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043d\u0435\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e \u0441 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.", "HeaderSelectAudio": "\u0412\u044b\u0431\u043e\u0440 \u0430\u0443\u0434\u0438\u043e", "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", @@ -174,6 +179,9 @@ "OptionThursday": "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", "OptionFriday": "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", "OptionSaturday": "\u0441\u0443\u0431\u0431\u043e\u0442\u0430", + "OptionEveryday": "\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e", + "OptionWeekend": "\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435", + "OptionWeekday": "\u0414\u043d\u0438 \u043d\u0435\u0434\u0435\u043b\u0438", "HeaderConfirmDeletion": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f", "MessageConfirmPathSubstitutionDeletion": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0443\u0442\u0438?", "LiveTvUpdateAvailable": "(\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435)", @@ -191,11 +199,12 @@ "HeaderSplitMedia": "\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0440\u043e\u0437\u044c", "MessageConfirmSplitMedia": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c?", "HeaderError": "\u041e\u0448\u0438\u0431\u043a\u0430", + "MessageChromecastConnectionError": "\u041f\u0440\u0438\u0435\u043c\u043d\u0438\u043a Chromecast \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a Emby Server. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u043f\u043e\u0437\u0436\u0435.", "MessagePleaseSelectOneItem": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442.", "MessagePleaseSelectTwoItems": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0442\u044f \u0431\u044b \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.", "MessageTheFollowingItemsWillBeGrouped": "\u0412 \u0435\u0434\u0438\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0431\u0443\u0434\u0443\u0442 \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f :", "MessageConfirmItemGrouping": "\u0412 Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?", - "HeaderResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", + "HeaderResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", "HeaderMyViews": "\u041c\u043e\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u044b", "HeaderLibraryFolders": "\u041c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0438", "HeaderLatestMedia": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", @@ -287,7 +296,7 @@ "HeaderVideoQuality": "\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u0435\u043e", "MessageErrorPlayingVideo": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e.", "MessageEnsureOpenTuner": "\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0442\u044e\u043d\u0435\u0440.", - "ButtonHome": "\u041a \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443", + "ButtonHome": "\u041a\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443", "ButtonDashboard": "\u041a \u0418\u043d\u0444\u043e\u043f\u0430\u043d\u0435\u043b\u0438", "ButtonReports": "\u041a \u043e\u0442\u0447\u0451\u0442\u0430\u043c", "ButtonMetadataManager": "\u041a \u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440\u0443 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", @@ -678,7 +687,7 @@ "DashboardTourHelp": "\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u043a\u0438-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u044d\u043a\u0440\u0430\u043d\u0430.", "DashboardTourUsers": "\u0421\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0447\u0451\u0442\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0434\u0440\u0443\u0437\u0435\u0439 \u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u0441\u0435\u043c\u044c\u0438, \u043a\u0430\u0436\u0434\u0443\u044e \u0441 \u0438\u0445 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0430\u043c\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c \u0438 \u0442.\u0434.", "DashboardTourCinemaMode": "\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043d\u043e\u0442\u0435\u0430\u0442\u0440\u0430 \u043f\u0440\u0438\u0432\u043d\u043e\u0441\u0438\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u0438\u043d\u043e\u0437\u0430\u043b\u0430 \u043f\u0440\u044f\u043c\u0438\u043a\u043e\u043c \u0432\u043e \u0432\u0430\u0448\u0443 \u0433\u043e\u0441\u0442\u0438\u043d\u0443\u044e, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0440\u0435\u0439\u043b\u0435\u0440\u044b \u0438 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0437\u0430\u0441\u0442\u0430\u0432\u043a\u0438 \u043f\u0435\u0440\u0435\u0434 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u043c.", - "DashboardTourChapters": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043a \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \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 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.", + "DashboardTourChapters": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0441\u0446\u0435\u043d \u043a \u0432\u0438\u0434\u0435\u043e, \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430.", "DashboardTourSubtitles": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0439\u0442\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435.", "DashboardTourPlugins": "\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0439\u0442\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0432\u0438\u0434\u0435\u043e, \u0422\u0412-\u044d\u0444\u0438\u0440\u0430, \u0441\u043a\u0430\u043d\u043d\u0435\u0440\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442.\u043f.", "DashboardTourNotifications": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445 \u043d\u0430 \u0432\u0430\u0448\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u044d-\u043f\u043e\u0447\u0442\u0443 \u0438 \u0442.\u043f.", @@ -693,7 +702,7 @@ "DeleteDeviceConfirmation": "\u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e? \u041e\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043d\u043e\u0432\u0430 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u043e\u0439\u0434\u0451\u0442 \u0441 \u043d\u0435\u0433\u043e.", "LabelEnableCameraUploadFor": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0441 \u043a\u0430\u043c\u0435\u0440\u044b \u0434\u043b\u044f:", "HeaderSelectUploadPath": "\u0412\u044b\u0431\u043e\u0440 \u043f\u0443\u0442\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e", - "LabelEnableCameraUploadForHelp": "\u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 Emby.", + "LabelEnableCameraUploadForHelp": "\u0412\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043e \u0444\u043e\u043d\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u0440\u0438 \u0432\u0445\u043e\u0434\u0435 \u0432 Emby.", "ErrorMessageStartHourGreaterThanEnd": "\u041a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.", "ButtonLibraryAccess": "\u041a \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043a \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", "ButtonParentalControl": "\u041a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u043c", @@ -719,7 +728,7 @@ "ButtonLinkMyEmbyAccount": "\u0421\u0432\u044f\u0437\u0430\u0442\u044c \u043c\u043e\u044e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c", "MessageConnectAccountRequiredToInviteGuest": "\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c \u0433\u043e\u0441\u0442\u0435\u0439, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0432\u0430\u0448\u0443 \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c Emby \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", + "SyncMedia": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", "HeaderCancelSyncJob": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438", "CancelSyncJobConfirmation": "\u041e\u0442\u043c\u0435\u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u0412\u044b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c?", "TabSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", @@ -741,10 +750,10 @@ "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\u0432\u043e\u0434\u0438\u0442\u0441\u044f", - "SyncJobItemStatusSynced": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e", + "SyncJobItemStatusSynced": "\u0421\u0438\u043d\u0445\u0440-\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", "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):" + "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 16df937c9..0dd275cd5 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sl_SI.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json index 458890307..182d21653 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/sv.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Bekr\u00e4ftelse", "MessageKeyUpdated": "Tack. Din donationskod har uppdaterats.", "MessageKeyRemoved": "Tack. Din donationskod har raderats.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live-TV", "TitleSync": "Sync", + "ButtonDonate": "Donera", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Gratis", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "V\u00e4lj ljudsp\u00e5r", @@ -174,6 +179,9 @@ "OptionThursday": "Torsdag", "OptionFriday": "Fredag", "OptionSaturday": "L\u00f6rdag", + "OptionEveryday": "Varje dag", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Bekr\u00e4fta radering", "MessageConfirmPathSubstitutionDeletion": "Vill du verkligen ta bort detta s\u00f6kv\u00e4gsutbyte?", "LiveTvUpdateAvailable": "(Uppdatering tillg\u00e4nglig)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Dela upp media", "MessageConfirmSplitMedia": "\u00c4r du s\u00e4ker p\u00e5 att du vill dela upp dessa media i separata objekt?", "HeaderError": "Fel", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Var god v\u00e4lj minst ett objekt.", "MessagePleaseSelectTwoItems": "Var god v\u00e4lj minst tv\u00e5 objekt.", "MessageTheFollowingItemsWillBeGrouped": "F\u00f6ljande titlar kommer att grupperas till ett enda objekt:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json index 2e2f58a77..f52e9a425 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/tr.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Canl\u0131 TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Per\u015fembe", "OptionFriday": "Cuma", "OptionSaturday": "Cumartesi", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json index 9a8f4b57a..b15a0005f 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/uk.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "\u041f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044f", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Saturday", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json index 71e353329..b449590a6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "Live TV", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "Thursday", "OptionFriday": "Friday", "OptionSaturday": "Th\u1ee9 B\u1ea3y", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json index bfa2b3e24..2a29a8f49 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_CN.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "\u786e\u8ba4", "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", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "\u4eab\u53d7\u5956\u52b1\u529f\u80fd", "TitleLiveTV": "\u7535\u89c6\u76f4\u64ad", "TitleSync": "\u540c\u6b65", + "ButtonDonate": "\u6350\u8d60", + "HeaderMyMedia": "My Media", + "TitleNotifications": "\u901a\u77e5", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "\u514d\u8d39", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "\u9009\u62e9\u97f3\u9891", @@ -174,6 +179,9 @@ "OptionThursday": "\u661f\u671f\u56db", "OptionFriday": "\u661f\u671f\u4e94", "OptionSaturday": "\u661f\u671f\u516d", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "\u786e\u8ba4\u5220\u9664", "MessageConfirmPathSubstitutionDeletion": "\u4f60\u786e\u5b9a\u5e0c\u671b\u5220\u9664\u6b64\u8def\u5f84\u66ff\u4ee3\uff1f", "LiveTvUpdateAvailable": "(\u66f4\u65b0\u53ef\u7528)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "\u62c6\u5206\u5a92\u4f53", "MessageConfirmSplitMedia": "\u60a8\u786e\u5b9a\u8981\u628a\u5a92\u4f53\u6e90\u62c6\u5206\u4e3a\u5355\u72ec\u7684\u9879\u76ee\uff1f", "HeaderError": "\u9519\u8bef", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "\u8bf7\u81f3\u5c11\u9009\u62e9\u4e00\u4e2a\u9879\u76ee\u3002", "MessagePleaseSelectTwoItems": "\u8bf7\u81f3\u5c11\u9009\u62e92\u4e2a\u9879\u76ee\u3002", "MessageTheFollowingItemsWillBeGrouped": "\u4ee5\u4e0b\u6807\u9898\u5c06\u88ab\u5f52\u5165\u4e00\u4e2a\u9879\u76ee\uff1a", diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json index 68437bb68..bdd3b6cf6 100644 --- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json @@ -35,8 +35,13 @@ "HeaderConfirmation": "Confirmation", "MessageKeyUpdated": "Thank you. Your supporter key has been updated.", "MessageKeyRemoved": "Thank you. Your supporter key has been removed.", + "HeaderSupportTheTeam": "Support the Emby Team", + "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "TitleLiveTV": "\u96fb\u8996\u529f\u80fd", "TitleSync": "Sync", + "ButtonDonate": "Donate", + "HeaderMyMedia": "My Media", + "TitleNotifications": "Notifications", "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} Emby Connect members to enjoy free access to the following apps:", @@ -118,7 +123,7 @@ "LabelFree": "Free", "HeaderPlaybackError": "Playback Error", "MessagePlaybackErrorNotAllowed": "You're currently not authorized to play this content. Please contact your system administrator for details.", - "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later.", + "MessagePlaybackErrorNoCompatibleStream": "No compatible streams are currently available. Please try again later or contact your system administrator for details.", "MessagePlaybackErrorRateLimitExceeded": "Your playback rate limit has been exceeded. Please contact your system administrator for details.", "MessagePlaybackErrorPlaceHolder": "The content chosen is not playable from this device.", "HeaderSelectAudio": "Select Audio", @@ -174,6 +179,9 @@ "OptionThursday": "\u661f\u671f\u56db", "OptionFriday": "\u661f\u671f\u4e94", "OptionSaturday": "\u661f\u671f\u516d", + "OptionEveryday": "Every day", + "OptionWeekend": "Weekends", + "OptionWeekday": "Weekdays", "HeaderConfirmDeletion": "Confirm Deletion", "MessageConfirmPathSubstitutionDeletion": "Are you sure you wish to delete this path substitution?", "LiveTvUpdateAvailable": "(Update available)", @@ -191,6 +199,7 @@ "HeaderSplitMedia": "Split Media Apart", "MessageConfirmSplitMedia": "Are you sure you wish to split the media sources into separate items?", "HeaderError": "Error", + "MessageChromecastConnectionError": "Your Chromecast receiver is unable to connect to your Emby Server. Please check their connections and try again.", "MessagePleaseSelectOneItem": "Please select at least one item.", "MessagePleaseSelectTwoItems": "Please select at least two items.", "MessageTheFollowingItemsWillBeGrouped": "The following titles will be grouped into one item:", diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json index 61aaea0f8..38179123b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "\u0645\u0648\u0627\u0641\u0642", "ButtonCancel": "\u0627\u0644\u063a\u0627\u0621", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "\u0644\u0627 \u0634\u0649\u0621 \u0647\u0646\u0627.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "\u0645\u0642\u062a\u0631\u062d", + "TabSuggestions": "Suggestions", "TabLatest": "\u0627\u0644\u0627\u062e\u064a\u0631", "TabUpcoming": "\u0627\u0644\u0642\u0627\u062f\u0645", "TabShows": "\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 5831f3d10..a40e1520c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/bg_BG.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "\u0417\u0430 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b \u043a\u043e\u0439\u0442\u043e \u043d\u0435 \u0435 \u0432 \u043b\u0438\u0441\u0442\u0438\u0442\u0435, \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u043f\u044a\u0440\u0432\u043e \u0434\u0430 \u0437\u0430\u043a\u0430\u0447\u0438\u0442\u0435 \u0442\u0435\u0445\u043d\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b \u043a\u044a\u043c Emby Connect \u043e\u0442 \u0442\u044f\u0445\u043d\u0430\u0442\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "\u041e\u043a", "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "Suggestions", "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", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u0432\u0430\u0439 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u0438", "OptionRecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u0432\u0430\u0439 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043f\u043e \u0432\u0441\u044f\u043a\u043e \u0432\u0440\u0435\u043c\u0435", "OptionRecordOnlyNewEpisodes": "\u0417\u0430\u043f\u0438\u0441\u0432\u0430\u0439 \u0441\u0430\u043c\u043e \u043d\u043e\u0432\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "\u0414\u043d\u0438", "HeaderActiveRecordings": "\u0410\u043a\u0442\u0438\u0432\u043d\u0438 \u0417\u0430\u043f\u0438\u0441\u0438", "HeaderLatestRecordings": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0417\u0430\u043f\u0438\u0441\u0438", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "TCP \u043f\u043e\u0440\u0442\u044a\u0442 \u043d\u0430 \u043a\u043e\u0439\u0442\u043e HTTPS \u0441\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u043d\u0430 Emby \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0437\u0430\u043a\u0430\u0447\u0438.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 65f8df592..7845573fa 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 8d9ccff49..da5f5c9c4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Zru\u0161it", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Tady nic nen\u00ed.", "MessagePleaseEnsureInternetMetadata": "Pros\u00edm zkontrolujte, zda m\u00e1te povoleno stahov\u00e1n\u00ed metadat z internetu.", "TabSuggested": "Doporu\u010den\u00e9", + "TabSuggestions": "Suggestions", "TabLatest": "Posledn\u00ed", "TabUpcoming": "Nadch\u00e1zej\u00edc\u00ed", "TabShows": "Seri\u00e1ly", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Nahr\u00e1vat program na v\u0161ech kan\u00e1lech", "OptionRecordAnytime": "Nahr\u00e1vat program v jak\u00fdkoliv \u010das", "OptionRecordOnlyNewEpisodes": "Nahr\u00e1vat pouze nov\u00e9 epizody", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dny", "HeaderActiveRecordings": "Aktivn\u00ed nahr\u00e1v\u00e1n\u00ed", "HeaderLatestRecordings": "Posledn\u00ed nahr\u00e1v\u00e1n\u00ed", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "\u010c\u00edslo portu web socketu:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Pokra\u010dovat", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Nejsledovan\u011bj\u0161\u00ed", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 0dda45289..82bf80c7f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/da.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json @@ -4,7 +4,7 @@ "LabelGithub": "Github", "LabelSwagger": "Swagger", "LabelStandard": "Standard", - "LabelApiDocumentation": "Api Documentation", + "LabelApiDocumentation": "Api dokumentation", "LabelDeveloperResources": "Developer Resources", "LabelBrowseLibrary": "Gennemse biblitek", "LabelConfigureServer": "Configure Emby", @@ -15,7 +15,7 @@ "LabelFinish": "Slut", "LabelNext": "N\u00e6ste", "LabelYoureDone": "Du er f\u00e6rdig!", - "WelcomeToProject": "Welcome to Emby!", + "WelcomeToProject": "Velkommen til Emby!", "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", @@ -49,17 +49,19 @@ "ButtonOrganize": "Organize", "LinkedToEmbyConnect": "Linked to Emby Connect", "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", + "HeaderAddUser": "Tilf\u00f8j bruger", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", + "LabelPinCode": "Pin kode:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Annuller", - "ButtonExit": "Exit", + "ButtonExit": "Afslut", "ButtonNew": "Ny", "HeaderTV": "TV", "HeaderAudio": "Audio", "HeaderVideo": "Video", - "HeaderPaths": "Paths", + "HeaderPaths": "Stier", "CategorySync": "Sync", "TabPlaylist": "Playlist", "HeaderEasyPinCode": "Easy Pin Code", @@ -80,23 +82,23 @@ "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", + "ButtonDonateWithPayPal": "Doner via 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:", + "LabelEnterConnectUserName": "Brugernavn eller e-mail:", "LabelEnterConnectUserNameHelp": "This is your Emby 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", + "FolderTypeMovies": "FIlm", + "FolderTypeMusic": "Musik", + "FolderTypeAdultVideos": "Voksenfilm", + "FolderTypePhotos": "Fotos", + "FolderTypeMusicVideos": "Musikvideoer", + "FolderTypeHomeVideos": "Hjemmevideoer", + "FolderTypeGames": "Spil", + "FolderTypeBooks": "B\u00f8ger", "FolderTypeTvShows": "TV", "FolderTypeInherit": "Inherit", "LabelContentType": "Content type:", @@ -122,7 +124,7 @@ "TabProfile": "Profil", "TabMetadata": "Metadata", "TabImages": "Billeder", - "TabNotifications": "Notifications", + "TabNotifications": "Notifikationer", "TabCollectionTitles": "Titler", "HeaderDeviceAccess": "Device Access", "OptionEnableAccessFromAllDevices": "Enable access from all devices", @@ -146,8 +148,8 @@ "TabProfiles": "Profiler", "TabSecurity": "Sikkerhed", "ButtonAddUser": "Tilf\u00f8j bruger", - "ButtonAddLocalUser": "Add Local User", - "ButtonInviteUser": "Invite User", + "ButtonAddLocalUser": "Tilf\u00f8j lokal bruger", + "ButtonInviteUser": "Inviter bruger", "ButtonSave": "Gem", "ButtonResetPassword": "Nulstil kode", "LabelNewPassword": "Ny kode:", @@ -159,7 +161,7 @@ "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:", + "LabelSelectUsers": "V\u00e6lg brugere:", "ButtonUpload": "Upload", "HeaderUploadNewImage": "Upload Nyt Billede", "LabelDropImageHere": "Drop image here", @@ -167,6 +169,7 @@ "MessageNothingHere": "Her er ingenting.", "MessagePleaseEnsureInternetMetadata": "V\u00e6r venligst sikker p\u00e5 at hentning af internet metadata er aktiveret.", "TabSuggested": "Foresl\u00e5et", + "TabSuggestions": "Suggestions", "TabLatest": "Seneste", "TabUpcoming": "Kommende", "TabShows": "Shows", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Optag program p\u00e5 alle kanaler", "OptionRecordAnytime": "Optag program uanset tidpunkt", "OptionRecordOnlyNewEpisodes": "Optag kun nye episoder", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dage", "HeaderActiveRecordings": "Aktive Optagelser", "HeaderLatestRecordings": "Seneste Optagelse", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 d69bede29..0e560651a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/de.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json @@ -29,7 +29,7 @@ "WizardCompleted": "Das ist alles was wir bis jetzt brauchen. Emby hat nun angefangen Informationen \u00fcber Ihre Medienbibliothek zu sammeln. Schauen Sie sich ein paar unserer Apps an, dann Klicken Sie auf <b>Fertig<\/b> um das <b>Server Dashboard<\/b> anzuzeigen.", "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.", + "VideoImageExtractionHelp": "F\u00fcr Videos die noch keinen Bilder haben, und f\u00fcr die wir keine Internetbilder finden k\u00f6nnen. Hierdurch wird der erste Bibliotheken scan 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", @@ -52,6 +52,8 @@ "HeaderAddUser": "Benutzer hinzuf\u00fcgen", "LabelAddConnectSupporterHelp": "Um einen Benutzer hinzuzuf\u00fcgen, der nicht angezeigt wird, m\u00fcssen Sie diesen erst mit Emby Connect von seinem Benutzerprofil verbinden.", "LabelPinCode": "PIN Code:", + "OptionHideWatchedContentFromLatestMedia": "Verberge gesehene Inhalte von zuletzt hinzugef\u00fcgten.", + "HeaderSync": "Synchronisiere", "ButtonOk": "Ok", "ButtonCancel": "Abbrechen", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nichts hier.", "MessagePleaseEnsureInternetMetadata": "Bitte sicherstellen, dass das Herunterladen von Internet Metadaten aktiviert ist.", "TabSuggested": "Vorgeschlagen", + "TabSuggestions": "Empfehlungen", "TabLatest": "Neueste", "TabUpcoming": "Bevorstehend", "TabShows": "Serien", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Nehme Programm auf allen Kan\u00e4len auf", "OptionRecordAnytime": "Neme Programm zu jeder Zeit auf", "OptionRecordOnlyNewEpisodes": "Nehme nur neue Episoden auf", + "HeaderRepeatingOptions": "Wiederholungs Einstellungen", "HeaderDays": "Tage", "HeaderActiveRecordings": "Aktive Aufnahmen", "HeaderLatestRecordings": "Neueste Aufnahmen", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Startseite Bereich 2:", "LabelHomePageSection3": "Startseite Bereich 3:", "LabelHomePageSection4": "Startseite Bereich 4:", - "OptionMyViewsButtons": "Meine Ansichten (Tasten)", - "OptionMyViews": "Meine Ansichten", - "OptionMyViewsSmall": "Meine Ansichten (Klein)", + "OptionMyMediaButtons": "Meine Medien (Schaltfl\u00e4chen)", + "OptionMyMedia": "Meine Medien", + "OptionMyMediaSmall": "Meine Medien (Klein)", "OptionResumablemedia": "Wiederhole", "OptionLatestMedia": "Neuste Medien", "OptionLatestChannelMedia": "Neueste Channel Inhalte:", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Meistgesehen", "TabNextUp": "Als N\u00e4chstes", + "PlaceholderUsername": "Benutzername", "HeaderBecomeProjectSupporter": "Werden Sie Emby Unterst\u00fctzer", - "TextEnjoyBonusFeatures": "Erleben Sie Bonus Funktionen", "MessageNoMovieSuggestionsAvailable": "Momentan sind keine Filmvorschl\u00e4ge verf\u00fcgbar. Schaue und bewerte zuerst deine Filme. Komme danach zur\u00fcck, um deine Filmvorschl\u00e4ge anzuschauen.", "MessageNoCollectionsAvailable": "Sammlungen erlauben Ihnen eine personalisierte Gruppierung von Filmen, Serien, Alben, B\u00fcchern und Spielen. Klicken Sie die + Schaltfl\u00e4che um Sammlungen zu erstellen.", "MessageNoPlaylistsAvailable": "Wiedergabeliste erlauben es dir eine Liste mit Inhalt zu erstellen der fortlaufend abgespielt wird. Um einer Wiedergabeliste Inhalte hinzuzuf\u00fcgen klicke rechts oder mache einen langen Tap und w\u00e4hle daraufhin \"Zur Wiedergabeliste hinzuf\u00fcgen\" aus.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Lade Internet Metadaten f\u00fcr:", "OptionTVMovies": "TV Filme", "HeaderUpcomingMovies": "Bevorstehende Filme", + "HeaderUpcomingSports": "Folgende Sportveranstaltungen", "HeaderUpcomingPrograms": "Bevorstehende Programme", "ButtonMoreItems": "Mehr...", "LabelShowLibraryTileNames": "Zeige Bibliothek Kachelnamen.", "LabelShowLibraryTileNamesHelp": "Legen Sie fest, ob Beschriftungen unter den Kacheln der Startseite angezeigt werden sollen.", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottle": "aktiviere Drosselung", + "OptionEnableTranscodingThrottleHelp": "Die Drosselung justiert die Transkodier-Geschwindigkeit, um die Server CPU Auslastung w\u00e4hrend der Wiedergabe zu minimieren.", + "LabelUploadSpeedLimit": "Upload Geschwindigkeitslimit (mbps):", + "OptionAllowSyncTranscoding": "Erlaube Synchronisation die Transkodierung ben\u00f6tigen", + "HeaderPlayback": "Medien Wiedergabe", + "OptionAllowAudioPlaybackTranscoding": "Erlaube Audio-Wiedergabe die Transkodierung ben\u00f6tigt", + "OptionAllowVideoPlaybackTranscoding": "Erlaube Video-Wiedergabe die Transkodierung ben\u00f6tigt", + "OptionAllowMediaPlaybackTranscodingHelp": "Benutzer erhalten aussagekr\u00e4ftige Fehlermeldungen gem\u00e4\u00df den Einstellungen, wenn Medien nicht wiedergegeben werden k\u00f6nnen.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Limitierte Client-Fernzugriff Datenrate (in mbps):", + "LabelRemoteClientBitrateLimitHelp": "Eine optionale Streaming Datengrenze f\u00fcr alle Clients mit Fernzugriff. Dies verhindert, dass Clients eine h\u00f6here Bandbreite als die zur Verf\u00fcgung stehende Verbindung, anfragen.", + "LabelConversionCpuCoreLimit": "CPU Kerne Limit:", + "LabelConversionCpuCoreLimitHelp": "Begrenzt die Anzahl der verwendeten CPU Kerne w\u00e4hrend der Konvertierung f\u00fcr die Synchronisation.", + "OptionEnableFullSpeedConversion": "Aktiviere Hochleistung-Konvertierung.", + "OptionEnableFullSpeedConversionHelp": "In der Grundeinstellung wird die Konvertierung f\u00fcr die Synchronisation mit niedriger Geschwindigkeit durchgef\u00fchrt und spart damit System Ressourcen.", + "HeaderPlaylists": "Wiedergabeliste", + "HeaderSelectDate": "Datum w\u00e4hlen", + "HeaderWelcomeExclamation": "Willkommen!", + "HeaderMyPreferences": "Meine Einstellungen", + "ButtonMyPreferencesWelcomeYes": "Ja, ich m\u00f6chte meine Einstellungen nun festlegen.", + "ButtonMyPreferencesWelcomeNo": "Nein danke, das mache ich sp\u00e4ter.", + "MyPreferencesWelcomeMessage1": "Wir pr\u00e4sentieren Ihnen Ihre Bibliothek in einer Art, wie wir denken, dass es Ihnen gefallen d\u00fcrfte. Die Darstellung und Gruppierung des Inhaltes kann jederzeit in Ihren Einstellungen angepasst werden. Ihre Einstellungen werden auf alle Empy Apps \u00fcbertragen.", + "MyPreferencesWelcomeMessage2": "M\u00f6chten Sie Ihre Einstellungen nun festlegen?", + "ToAccessPreferencesHelp": "Um Ihre Einstellungen sp\u00e4ter zu \u00e4ndern, klicken Sie ihr Benutzer-Icon im oberen rechten Bereich oder w\u00e4hlen Sie \"Meine Einstellungen\"." }
\ 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 96b67ae6e..2522765ca 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/el.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json @@ -1,113 +1,115 @@ { - "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", + "LabelExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", + "LabelVisitCommunity": "\u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", "LabelGithub": "Github", "LabelSwagger": "Swagger", - "LabelStandard": "\u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf", + "LabelStandard": "\u03a0\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", - "LabelConfigureServer": "Configure Emby", + "LabelDeveloperResources": "\u03a0\u03b7\u03b3\u03ad\u03c2 \u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ae", + "LabelBrowseLibrary": "\u03a0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", + "LabelConfigureServer": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 Emby", "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", + "LabelRestartServer": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", + "LabelShowLogWindow": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", "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", - "WelcomeToProject": "Welcome to Emby!", + "LabelFinish": "\u03a4\u03ad\u03bb\u03bf\u03c2", + "LabelNext": "\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf", + "LabelYoureDone": "\u0395\u03af\u03c3\u03c4\u03b5 \u0388\u03c4\u03bf\u03b9\u03bc\u03bf\u03b9!", + "WelcomeToProject": "\u039a\u03b1\u03bb\u03c9\u03c2 \u03ae\u03c1\u03b8\u03b1\u03c4\u03b5 \u03c3\u03c4\u03bf Emby!", "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", + "ButtonQuickStartGuide": "\u039f\u03b4\u03b7\u03b3\u03cc\u03c2 \u03b3\u03c1\u03ae\u03b3\u03bf\u03c1\u03b7\u03c2 \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7\u03c2", "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": "Emby includes built-in support for user profiles, enabling each user to have their own display settings, playstate and parental controls.", - "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": "Emby 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.", + "LabelWindowsService": "\u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows", + "AWindowsServiceHasBeenInstalled": "\u039c\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 Windows \u03ad\u03c7\u03b5\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af", + "WindowsServiceIntro1": "\u039f \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c2 Emby \u03ba\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ac \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03b5\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ae \u03bc\u03b5 \u03b5\u03b9\u03ba\u03bf\u03bd\u03af\u03b4\u03b9\u03bf, \u03b1\u03bb\u03bb\u03ac \u03b1\u03bd \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ac\u03c4\u03b5 \u03bd\u03b1 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03c3\u03c4\u03bf \u03b2\u03ac\u03b8\u03bf\u03c2, \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03ba\u03ba\u03b9\u03bd\u03b7\u03b8\u03b5\u03af \u03b1\u03c0\u03cc \u03c4\u03bf\u03bd \u03c0\u03af\u03bd\u03b1\u03ba\u03b1 \u03b5\u03bb\u03ad\u03b3\u03c7\u03bf\u03c5 \u03c4\u03c9\u03bd \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03b9\u03ce\u03bd \u03c4\u03c9\u03bd 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. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>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", + "LabelConfigureSettings": "\u0394\u03b9\u03b1\u03bc\u03bf\u03c1\u03c6\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b9\u03c2 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", + "LabelEnableVideoImageExtraction": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "VideoImageExtractionHelp": "\u0393\u03b9\u03b1 \u03c4\u03b1 \u03b2\u03af\u03bd\u03c4\u03b5\u03bf \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03ad\u03c7\u03bf\u03c5\u03bd \u03ae\u03b4\u03b7 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2, \u03ba\u03b1\u03b9 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03b2\u03c1\u03bf\u03cd\u03bc\u03b5 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf. \u0391\u03c5\u03c4\u03cc \u03b8\u03b1 \u03ba\u03b1\u03b8\u03c5\u03c3\u03c4\u03b5\u03c1\u03ae\u03c3\u03b5\u03b9 \u03bb\u03af\u03b3\u03bf \u03c4\u03b7\u03bd \u03b1\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b7 \u03c3\u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03b9\u03ba\u03ae \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b1\u03bb\u03bb\u03b1 \u03b8\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b7 \u03c4\u03b5\u03bb\u03b9\u03ba\u03ae \u03bc\u03bf\u03c1\u03c6\u03ae \u03c0\u03b9\u03bf \u03cc\u03bc\u03bf\u03c1\u03c6\u03b7.", + "LabelEnableChapterImageExtractionForMovies": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u039a\u03b5\u03c6\u03b1\u03bb\u03bb\u03b1\u03af\u03c9\u03bd \u03b3\u03b9\u03b1 \u03c4\u03b9\u03c2 \u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", "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.", + "LabelEnableAutomaticPortMapping": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7\u03c2 \u03ba\u03b1\u03c4\u03b1\u03c7\u03ce\u03c1\u03b7\u03c3\u03b7\u03c2 \u0398\u03c5\u03c1\u03ce\u03bd", + "LabelEnableAutomaticPortMappingHelp": "To UPnP \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c4\u03b7\u03bd \u03b1\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ae \u03b3\u03b9\u03b1 \u03b5\u03cd\u03ba\u03bf\u03bb\u03b7 \u03b1\u03c0\u03bf\u03bc\u03b1\u03ba\u03c1\u03c5\u03c3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7. \u0391\u03c5\u03c4\u03ae \u03b7 \u03c1\u03cd\u03b8\u03bc\u03b9\u03c3\u03b7 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b4\u03bf\u03c5\u03bb\u03ad\u03c8\u03b5\u03b9 \u03bc\u03b5 \u03ba\u03ac\u03c0\u03bf\u03b9\u03b1 \u03bc\u03bf\u03bd\u03c4\u03ad\u03bb\u03b1 \u03b4\u03c1\u03bf\u03bc\u03bf\u03bb\u03bf\u03b3\u03b7\u03c4\u03ce\u03bd", "HeaderTermsOfService": "Emby 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", + "MessagePleaseAcceptTermsOfService": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03c0\u03bf\u03b4\u03b5\u03c7\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2 \u03ba\u03b1\u03b9 \u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03c0\u03c1\u03b9\u03bd \u03c0\u03c1\u03bf\u03c7\u03c9\u03c1\u03ae\u03c3\u03b5\u03c4\u03b5.", + "OptionIAcceptTermsOfService": "\u0391\u03c0\u03cc\u03b4\u03b5\u03c7\u03bf\u03bc\u03b1\u03b9 \u03c4\u03bf\u03c5\u03c2 \u038c\u03c1\u03bf\u03c5\u03c2 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", + "ButtonPrivacyPolicy": "\u03a0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1 \u0394\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd", + "ButtonTermsOfService": "\u038c\u03c1\u03bf\u03b9 \u03a7\u03c1\u03ae\u03c3\u03b7\u03c2", "HeaderDeveloperOptions": "Developer Options", - "OptionEnableWebClientResponseCache": "Enable web client response caching", + "OptionEnableWebClientResponseCache": "Ene", "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", + "ButtonOrganize": "\u039f\u03c1\u03b3\u03ac\u03bd\u03c9\u03c3\u03b7", "LinkedToEmbyConnect": "Linked to Emby Connect", "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", + "HeaderAddUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", - "ButtonOk": "\u03b5\u03bd\u03c4\u03ac\u03be\u03b5\u03b9", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", + "ButtonOk": "\u0395\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", + "ButtonExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", + "ButtonNew": "\u039d\u03ad\u03bf", + "HeaderTV": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", + "HeaderAudio": "\u0389\u03c7\u03bf\u03c2", + "HeaderVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderPaths": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae", + "CategorySync": "\u03a3\u03c5\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", + "TabPlaylist": "\u039b\u03af\u03c3\u03c4\u03b1", "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", + "HeaderGrownupsOnly": "\u0395\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03bc\u03cc\u03bd\u03bf!", + "DividerOr": "--\u03ae--", + "HeaderInstalledServices": "\u0395\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", + "HeaderAvailableServices": "\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b5\u03c2 \u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b5\u03c2", + "MessageNoServicesInstalled": "\u039a\u03b1\u03bc\u03af\u03b1 \u03c5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7.", + "HeaderToAccessPleaseEnterEasyPinCode": "\u0393\u03b9\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03ce\u03c3\u03c4\u03b5 \u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c3\u03b1\u03c2", "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", + "HeaderAdultsReadHere": "\u039f\u03b9 \u03b5\u03bd\u03ae\u03bb\u03b9\u03ba\u03bf\u03b9 \u03b4\u03b9\u03b1\u03b2\u03ac\u03c3\u03c4\u03b5!", + "RegisterWithPayPal": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03bc\u03b5 Paypal", "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership", - "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial", - "LabelSyncTempPath": "Temporary file path:", + "HeaderEnjoyDayTrial": "\u0391\u03c0\u03bf\u03bb\u03b1\u03cd\u03c3\u03c4\u03b5 14 \u039c\u03ad\u03c1\u03b5\u03c2 \u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae\u03c2 \u03a0\u03b5\u03c1\u03b9\u03cc\u03b4\u03bf\u03c5", + "LabelSyncTempPath": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03a0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03ce\u03bd \u0391\u03c1\u03c7\u03b5\u03af\u03c9\u03bd", "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:", + "TitleNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", + "ButtonDonateWithPayPal": "\u0394\u03c9\u03c1\u03b5\u03ac \u03bc\u03ad\u03c3\u03c9 Paypal", + "OptionDetectArchiveFilesAsMedia": "\u0391\u03bd\u03b1\u03b3\u03bd\u03ce\u03c1\u03b9\u03c3\u03b5 \u03a3\u03c5\u03bc\u03c0\u03b9\u03b5\u03c3\u03bc\u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c9\u03c2 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03b1.", + "OptionDetectArchiveFilesAsMediaHelp": "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03bc\u03b5 .rar \u03ba\u03b1\u03b9 .zip \u03ba\u03b1\u03c4\u03b1\u03bb\u03ae\u03be\u03b5\u03b9\u03c2 \u03b8\u03b1 \u03b1\u03bd\u03b1\u03b3\u03bd\u03c9\u03c1\u03af\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c9\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03c0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd.", + "LabelEnterConnectUserName": "\u038c\u03bd\u03bf\u03bc\u03b1 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7 \u03ae email:", "LabelEnterConnectUserNameHelp": "This is your Emby 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", + "HeaderSyncJobInfo": "\u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03a3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd", + "FolderTypeMixed": "\u0391\u03bd\u03ac\u03bc\u03b5\u03b9\u03ba\u03c4\u03bf \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf", + "FolderTypeMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "FolderTypeMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", + "FolderTypeAdultVideos": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2 \u0395\u03bd\u03b7\u03bb\u03af\u03ba\u03c9\u03bd", + "FolderTypePhotos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", + "FolderTypeMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeHomeVideos": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "FolderTypeGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "FolderTypeBooks": "\u0392\u03b9\u03b2\u03bb\u03af\u03b1", + "FolderTypeTvShows": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", "FolderTypeInherit": "Inherit", - "LabelContentType": "Content type:", - "TitleScheduledTasks": "Scheduled Tasks", + "LabelContentType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd:", + "TitleScheduledTasks": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b5\u03c2", "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 ", + "LabelFolderType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \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):", + "LabelCountry": "\u03a7\u03ce\u03c1\u03b1", + "LabelLanguage": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1", + "LabelTimeLimitHours": "\u038c\u03c1\u03b9\u03bf \u03a7\u03c1\u03cc\u03bd\u03bf\u03c5 (\u038f\u03c1\u03b5\u03c2)", "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", @@ -115,59 +117,60 @@ "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": "Emby Server can download information about your media to enable rich presentations.", "TabPreferences": "\u03a0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ae\u03c3\u03b5\u03b9\u03c2 ", - "TabPassword": "\u03c4\u03bf\u03bd \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc", + "TabPassword": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2", "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 ", + "TabAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7", + "TabImage": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b1", + "TabProfile": "\u03a0\u03c1\u03bf\u03c6\u03af\u03bb", "TabMetadata": "Metadata", - "TabImages": "Images", - "TabNotifications": "Notifications", - "TabCollectionTitles": "Titles", - "HeaderDeviceAccess": "Device Access", - "OptionEnableAccessFromAllDevices": "Enable access from all devices", + "TabImages": "\u0395\u03b9\u03ba\u03cc\u03bd\u03b5\u03c2", + "TabNotifications": "\u0395\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2", + "TabCollectionTitles": "\u03a4\u03af\u03c4\u03bb\u03bf\u03b9", + "HeaderDeviceAccess": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03a3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ae\u03c2", + "OptionEnableAccessFromAllDevices": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03b1\u03c0\u03cc \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u03c3\u03c5\u03c3\u03ba\u03b5\u03c5\u03ad\u03c2", "OptionEnableAccessToAllChannels": "Enable access to all channels", - "OptionEnableAccessToAllLibraries": "Enable access to all libraries", + "OptionEnableAccessToAllLibraries": "\u03a0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03cc\u03bb\u03b5\u03c2 \u03c4\u03b9\u03c2 \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b5\u03c2", "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", + "LabelDisplayMissingEpisodesWithinSeasons": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03c9\u03bd \u03c0\u03bf\u03c5 \u03bb\u03b5\u03af\u03c0\u03bf\u03c5\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03b1\u03b9\u03b6\u03cc\u03bd", + "LabelUnairedMissingEpisodesWithinSeasons": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03ac\u03c0\u03b1\u03b9\u03c7\u03c4\u03c9\u03bd \u03b5\u03c0\u03b5\u03b9\u03c3\u03bf\u03b4\u03af\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03b7\u03bd \u03c3\u03b1\u03b9\u03b6\u03cc\u03bd", + "HeaderVideoPlaybackSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderPlaybackSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", + "LabelAudioLanguagePreference": "\u03a0\u03c1\u03bf\u03c4\u03af\u03bc\u03b7\u03c3\u03b7 \u0393\u03bb\u03ce\u03c3\u03c3\u03b1\u03c2 \u0389\u03c7\u03bf\u03c5", "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", + "OptionDefaultSubtitles": "\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae", "OptionOnlyForcedSubtitles": "Only forced subtitles", - "OptionAlwaysPlaySubtitles": "Always play subtitles", - "OptionNoSubtitles": "No Subtitles", + "OptionAlwaysPlaySubtitles": "\u03a0\u03ac\u03bd\u03c4\u03b1 \u03b1\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae \u03a5\u03c0\u03bf\u03c4\u03af\u03c4\u03bb\u03c9\u03bd", + "OptionNoSubtitles": "\u03a7\u03c9\u03c1\u03af\u03c2 \u03a5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03bf\u03c5\u03c2", "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", + "TabProfiles": "\u03a0\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", + "ButtonAddLocalUser": "\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03a4\u03bf\u03c0\u03b9\u03ba\u03bf\u03cd \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", + "ButtonInviteUser": "\u03a0\u03c1\u03cc\u03c3\u03ba\u03bb\u03b7\u03c3\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", + "ButtonSave": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", "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 ", + "LabelNewPassword": "\u039d\u03ad\u03bf\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2", + "LabelNewPasswordConfirm": "\u0395\u03c0\u03b9\u03b2\u03b5\u03b2\u03b1\u03af\u03c9\u03c3\u03b7 \u03bd\u03ad\u03bf\u03c5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03bf\u03cd \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", + "LabelCurrentPassword": "\u03a4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03b1\u03c2 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \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:", + "LabelSelectUsers": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03a7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd:", "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", + "LabelDropImageHere": "\u0391\u03c0\u03bf\u03b8\u03ad\u03c3\u03c4\u03b5 \u03b5\u03b9\u03ba\u03cc\u03bd\u03b1 \u03b5\u03b4\u03ce", + "ImageUploadAspectRatioHelp": "\u03a0\u03c1\u03bf\u03c4\u03b5\u03b9\u03bd\u03cc\u03bc\u03b5\u03bd\u03bf 1:1 Aspect Ratio. JPG\/PNG \u03bc\u03cc\u03bd\u03bf", "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", + "TabSuggestions": "Suggestions", + "TabLatest": "\u03a4\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", @@ -176,88 +179,88 @@ "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", + "ButtonFilter": "\u03a6\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", + "OptionGuestStars": "\u03a6\u03b9\u03bb\u03b9\u03ba\u03ae \u03a3\u03c5\u03bc\u03bc\u03b5\u03c4\u03bf\u03c7\u03ae", "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 ", + "OptionProducers": "\u03a0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03bf\u03af", + "HeaderResume": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7", "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", + "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 \u03c4\u03b9\u03c2 \u03b5\u03ba\u03c0\u03bf\u03bc\u03c0\u03ad\u03c2 \u03c3\u03b1\u03c2!", + "HeaderLatestEpisodes": "\u03a4\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", + "TabSongs": "\u03a4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "TabAlbums": "\u0386\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", + "TabAlbumArtists": "\u0386\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 ", + "ButtonSort": "\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7", + "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": "\u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03ac\u03c7\u03b8\u03b7\u03ba\u03b5", + "OptionUnplayed": "\u0394\u03b5\u03bd \u03c0\u03b1\u03af\u03c7\u03b8\u03b7\u03ba\u03b5", + "OptionAscending": "\u0391\u03cd\u03be\u03bf\u03c5\u03c3\u03b1", + "OptionDescending": "\u03a6\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", + "OptionReleaseDate": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae\u03c2", + "OptionPlayCount": "\u03a6\u03bf\u03c1\u03ad\u03c2 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", + "OptionDatePlayed": "\u0397\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2", + "OptionDateAdded": "\u0397\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", + "OptionAlbum": "\u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "OptionTrackName": "\u038c\u03bd\u03bf\u03bc\u03b1 \u0391\u03c1\u03c7\u03b5\u03af\u03bf\u03c5", + "OptionCommunityRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1\u03c2", + "OptionNameSort": "\u038c\u03bd\u03bf\u03bc\u03b1", + "OptionFolderSort": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9", + "OptionBudget": "\u03a0\u03c1\u03bf\u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03bc\u03cc\u03c2", "OptionRevenue": "Revenue", - "OptionPoster": "Poster", + "OptionPoster": "\u0391\u03c6\u03af\u03c3\u03b1", "OptionPosterCard": "Poster card", "OptionBackdrop": "Backdrop", - "OptionTimeline": "Timeline", + "OptionTimeline": "\u03a7\u03c1\u03bf\u03bd\u03bf\u03b4\u03b9\u03ac\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1", "OptionThumb": "Thumb", "OptionThumbCard": "Thumb card", "OptionBanner": "Banner", - "OptionCriticRating": "Critic Rating", + "OptionCriticRating": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1 \u03ba\u03c1\u03b9\u03c4\u03b9\u03ba\u03ce\u03bd", "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", + "ScheduledTasksHelp": "\u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1", + "ScheduledTasksTitle": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u0395\u03c1\u03b3\u03b1\u03c3\u03af\u03b5\u03c2", + "TabMyPlugins": "\u03a4\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 \u03bc\u03bf\u03c5", + "TabCatalog": "\u039a\u03b1\u03c4\u03ac\u03bb\u03bf\u03b3\u03bf\u03c2", + "TitlePlugins": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1", + "HeaderAutomaticUpdates": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b5\u03c2 \u0391\u03bd\u03b1\u03bd\u03b5\u03ce\u03c3\u03b5\u03b9\u03c2", + "HeaderNowPlaying": "\u03a4\u03ce\u03c1\u03b1 \u03a0\u03b1\u03af\u03b6\u03b5\u03b9:", + "HeaderLatestAlbums": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u0386\u03bb\u03bc\u03c0\u03bf\u03c5\u03bc", + "HeaderLatestSongs": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03a4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", "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:", + "LabelVideoType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u0392\u03af\u03bd\u03c4\u03b5\u03bf:", "OptionBluray": "Bluray", "OptionDvd": "Dvd", "OptionIso": "Iso", "Option3D": "3D", "LabelFeatures": "Features:", - "LabelService": "Service:", - "LabelStatus": "Status:", - "LabelVersion": "Version:", - "LabelLastResult": "Last result:", - "OptionHasSubtitles": "Subtitles", - "OptionHasTrailer": "Trailer", + "LabelService": "\u03a5\u03c0\u03b7\u03c1\u03b5\u03c3\u03af\u03b1:", + "LabelStatus": "\u039a\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7:", + "LabelVersion": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7:", + "LabelLastResult": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1:", + "OptionHasSubtitles": "\u03a5\u03c0\u03cc\u03c4\u03b9\u03c4\u03bb\u03bf\u03b9", + "OptionHasTrailer": "\u03a4\u03c1\u03ad\u03ca\u03bb\u03b5\u03c1", "OptionHasThemeSong": "Theme Song", "OptionHasThemeVideo": "Theme Video", - "TabMovies": "Movies", - "TabStudios": "Studios", + "TabMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "TabStudios": "\u03a3\u03c4\u03bf\u03cd\u03bd\u03c4\u03b9\u03bf", "TabTrailers": "Trailers", - "LabelArtists": "Artists:", + "LabelArtists": "\u039a\u03b1\u03bb\u03bb\u03b9\u03c4\u03ad\u03c7\u03bd\u03b5\u03c2", "LabelArtistsHelp": "Separate multiple using ;", - "HeaderLatestMovies": "Latest Movies", + "HeaderLatestMovies": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 \u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", "HeaderLatestTrailers": "Latest Trailers", "OptionHasSpecialFeatures": "Special Features", "OptionImdbRating": "IMDb Rating", @@ -284,23 +287,23 @@ "OptionFileMetadataYearMismatch": "File\/Metadata Years Mismatched", "TabGeneral": "General", "TitleSupport": "Support", - "TabLog": "Log", - "TabAbout": "About", - "TabSupporterKey": "Supporter Key", - "TabBecomeSupporter": "Become a Supporter", + "TabLog": "\u0391\u03c1\u03c7\u03b5\u03af\u03bf \u039a\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2", + "TabAbout": "\u03a0\u03b5\u03c1\u03af..", + "TabSupporterKey": "\u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03cc\u03c2 \u03a5\u03c0\u03bf\u03c3\u03c4\u03ae\u03c1\u03b9\u03be\u03b7\u03c2", + "TabBecomeSupporter": "\u0393\u03af\u03bd\u03b5 \u03a5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03b9\u03ba\u03c4\u03ae\u03c2", "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", - "SearchKnowledgeBase": "Search the Knowledge Base", + "SearchKnowledgeBase": "\u0391\u03bd\u03b1\u03b6\u03ae\u03c4\u03b7\u03c3\u03b5 \u03c3\u03c4\u03b7 \u0392\u03ac\u03c3\u03b7", "VisitTheCommunity": "Visit the Community", - "VisitProjectWebsite": "Visit the Emby Web Site", + "VisitProjectWebsite": "\u0395\u03c0\u03b9\u03c3\u03ba\u03ad\u03c8\u03bf\u03c5 \u03c4\u03b7 \u03a3\u03b5\u03bb\u03af\u03b4\u03b1 \u03c4\u03bf\u03c5 Emby", "VisitProjectWebsiteLong": "Visit the Emby 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", + "OptionDisableUser": "\u0391\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b7 \u03a7\u03c1\u03ae\u03c3\u03c4\u03b7", "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", + "LabelName": "\u038c\u03bd\u03bf\u03bc\u03b1:", + "ButtonHelp": "\u0392\u03bf\u03ae\u03b8\u03b5\u03b9\u03b1", "OptionAllowUserToManageServer": "Allow this user to manage the server", "HeaderFeatureAccess": "Feature Access", "OptionAllowMediaPlayback": "Allow media playback", @@ -310,33 +313,33 @@ "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", + "HeaderRemoteControl": "\u03a4\u03b7\u03bb\u03b5\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae\u03c1\u03b9\u03bf", "OptionMissingTmdbId": "Missing Tmdb Id", "OptionIsHD": "HD", "OptionIsSD": "SD", - "OptionMetascore": "Metascore", - "ButtonSelect": "Select", + "OptionMetascore": "\u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1", + "ButtonSelect": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae", "ButtonGroupVersions": "Group Versions", - "ButtonAddToCollection": "Add to Collection", + "ButtonAddToCollection": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5 \u03c3\u03c4\u03b7 \u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ae", "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", + "VersionNumber": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7 {0}", + "TabPaths": "\u0394\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc\u03ae", + "TabServer": "\u0394\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2", "TabTranscoding": "Transcoding", "TitleAdvanced": "Advanced", "LabelAutomaticUpdateLevel": "Automatic update level", "OptionRelease": "\u0397 \u03b5\u03c0\u03af\u03c3\u03b7\u03bc\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7", - "OptionBeta": "\u03b2\u03ae\u03c4\u03b1", - "OptionDev": "\u03b1\u03bd\u03ac\u03c0\u03c4\u03c5\u03be\u03b7 (\u03b1\u03c3\u03c4\u03b1\u03b8\u03ae\u03c2)", - "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", - "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", + "OptionBeta": "\u0394\u03bf\u03ba\u03b9\u03bc\u03b1\u03c3\u03c4\u03b9\u03ba\u03ae", + "OptionDev": "\u0391\u03bd\u03ac\u03c0\u03c4\u03c5\u03be\u03b7 (\u03b1\u03c3\u03c4\u03b1\u03b8\u03ae\u03c2)", + "LabelAllowServerAutoRestart": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b7 \u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c3\u03ad\u03c1\u03b2\u03b5\u03c1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03b1\u03bd\u03b1\u03b2\u03b1\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", + "LabelAllowServerAutoRestartHelp": "\u039f \u03a3\u03b5\u03c1\u03b2\u03b5\u03c1 \u03b8\u03b1 \u03ba\u03ac\u03bd\u03b5\u03b9 \u03bc\u03cc\u03bd\u03bf \u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03b9\u03bd\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c4\u03b9\u03c2 \u03bc\u03b7 \u03b5\u03bd\u03b5\u03c1\u03b3\u03ad\u03c2 \u03c0\u03b5\u03c1\u03b9\u03cc\u03b4\u03bf\u03c5\u03c2, \u03cc\u03c4\u03b1\u03bd \u03ba\u03b1\u03bd\u03b5\u03af\u03c2 \u03c7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03cc\u03c2.", "LabelEnableDebugLogging": "Enable debug logging", - "LabelRunServerAtStartup": "Run server at startup", + "LabelRunServerAtStartup": "\u039e\u03b5\u03ba\u03af\u03bd\u03b7\u03c3\u03b5 \u03c4\u03bf\u03bd \u03a3\u03b5\u03c1\u03b2\u03b5\u03c1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7", "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", + "ButtonSelectDirectory": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03a6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5", "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.", @@ -346,17 +349,17 @@ "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", + "TabBasics": "\u0392\u03b1\u03c3\u03b9\u03ba\u03ac", + "TabTV": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", + "TabGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "TabMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", + "TabOthers": "\u0386\u03bb\u03bb\u03b1", "HeaderExtractChapterImagesFor": "Extract chapter images for:", - "OptionMovies": "Movies", - "OptionEpisodes": "Episodes", - "OptionOtherVideos": "Other Videos", + "OptionMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", + "OptionEpisodes": "\u0395\u03c0\u03b5\u03b9\u03c3\u03cc\u03b4\u03b9\u03b1", + "OptionOtherVideos": "\u0386\u03bb\u03bb\u03b1 \u0392\u03af\u03bd\u03c4\u03b5\u03bf", "TitleMetadata": "Metadata", - "LabelAutomaticUpdates": "Enable automatic updates", + "LabelAutomaticUpdates": "\u0391\u03c5\u03c4\u03cc\u03bc\u03b1\u03c4\u03b5\u03c2 \u0395\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03b9\u03c2", "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.", @@ -371,19 +374,19 @@ "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "Standard - MB2", - "ButtonSignIn": "Sign In", - "TitleSignIn": "Sign In", - "HeaderPleaseSignIn": "Please sign in", - "LabelUser": "User:", - "LabelPassword": "Password:", - "ButtonManualLogin": "Manual Login", + "ButtonSignIn": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2", + "TitleSignIn": "\u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2", + "HeaderPleaseSignIn": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03c3\u03ad\u03bb\u03b8\u03b5\u03c4\u03b5", + "LabelUser": "\u03a7\u03c1\u03ae\u03c3\u03c4\u03b7\u03c2:", + "LabelPassword": "\u039a\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2:", + "ButtonManualLogin": "\u03a7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b7 \u0395\u03af\u03c3\u03bf\u03b4\u03bf\u03c2", "PasswordLocalhostMessage": "Passwords are not required when logging in from localhost.", - "TabGuide": "Guide", - "TabChannels": "Channels", - "TabCollections": "Collections", - "HeaderChannels": "Channels", - "TabRecordings": "Recordings", - "TabScheduled": "Scheduled", + "TabGuide": "\u039f\u03b4\u03b7\u03b3\u03cc\u03c2", + "TabChannels": "\u039a\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1", + "TabCollections": "\u03a3\u03c5\u03bb\u03bb\u03bf\u03b3\u03ad\u03c2", + "HeaderChannels": "\u039a\u03b1\u03bd\u03ac\u03bb\u03b9\u03b1", + "TabRecordings": "\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03c2", + "TabScheduled": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03b1", "TabSeries": "Series", "TabFavorites": "Favorites", "TabMyLibrary": "My Library", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -430,65 +434,65 @@ "OptionDownloadDiscImage": "Disc", "OptionDownloadBannerImage": "Banner", "OptionDownloadBackImage": "Back", - "OptionDownloadArtImage": "Art", - "OptionDownloadPrimaryImage": "Primary", + "OptionDownloadArtImage": "\u03a4\u03ad\u03c7\u03bd\u03b7", + "OptionDownloadPrimaryImage": "\u03a0\u03c1\u03ce\u03c4\u03bf", "HeaderFetchImages": "Fetch Images:", - "HeaderImageSettings": "Image Settings", - "TabOther": "Other", + "HeaderImageSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2", + "TabOther": "\u0386\u03bb\u03bb\u03b1", "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", "LabelMaxScreenshotsPerItem": "Maximum number of screenshots per item:", "LabelMinBackdropDownloadWidth": "Minimum backdrop download width:", "LabelMinScreenshotDownloadWidth": "Minimum screenshot download width:", "ButtonAddScheduledTaskTrigger": "Add Trigger", "HeaderAddScheduledTaskTrigger": "Add Trigger", - "ButtonAdd": "Add", + "ButtonAdd": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c3\u03b5", "LabelTriggerType": "Trigger Type:", - "OptionDaily": "Daily", - "OptionWeekly": "Weekly", + "OptionDaily": "\u039a\u03b1\u03b8\u03b7\u03bc\u03b5\u03c1\u03b9\u03bd\u03ac", + "OptionWeekly": "\u0395\u03b2\u03b4\u03bf\u03bc\u03b1\u03b4\u03b9\u03b1\u03af\u03b1", "OptionOnInterval": "On an interval", "OptionOnAppStartup": "On application startup", "OptionAfterSystemEvent": "After a system event", - "LabelDay": "Day:", - "LabelTime": "Time:", - "LabelEvent": "Event:", - "OptionWakeFromSleep": "Wake from sleep", - "LabelEveryXMinutes": "Every:", + "LabelDay": "\u0397\u03bc\u03ad\u03c1\u03b1:", + "LabelTime": "\u038f\u03c1\u03b1:", + "LabelEvent": "\u0393\u03b5\u03b3\u03bf\u03bd\u03cc\u03c2:", + "OptionWakeFromSleep": "\u0395\u03c0\u03b1\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b7", + "LabelEveryXMinutes": "\u039a\u03ac\u03b8\u03b5:", "HeaderTvTuners": "Tuners", "HeaderGallery": "Gallery", - "HeaderLatestGames": "Latest Games", - "HeaderRecentlyPlayedGames": "Recently Played Games", + "HeaderLatestGames": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", + "HeaderRecentlyPlayedGames": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b1 \u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1 \u03c0\u03bf\u03c5 \u03c0\u03b1\u03af\u03c7\u03c4\u03b7\u03ba\u03b1\u03bd", "TabGameSystems": "Game Systems", - "TitleMediaLibrary": "Media Library", - "TabFolders": "Folders", + "TitleMediaLibrary": "\u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", + "TabFolders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9", "TabPathSubstitution": "Path Substitution", "LabelSeasonZeroDisplayName": "Season 0 display name:", "LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableRealtimeMonitorHelp": "Changes will be processed immediately, on supported file systems.", - "ButtonScanLibrary": "Scan Library", - "HeaderNumberOfPlayers": "Players:", - "OptionAnyNumberOfPlayers": "Any", + "ButtonScanLibrary": "\u03a8\u03ac\u03be\u03b5 \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", + "HeaderNumberOfPlayers": "\u03a0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1 \u0391\u03bd\u03b1\u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2:", + "OptionAnyNumberOfPlayers": "\u038c\u03bb\u03b1", "Option1Player": "1+", "Option2Player": "2+", "Option3Player": "3+", "Option4Player": "4+", - "HeaderMediaFolders": "Media Folders", - "HeaderThemeVideos": "Theme Videos", - "HeaderThemeSongs": "Theme Songs", - "HeaderScenes": "Scenes", - "HeaderAwardsAndReviews": "Awards and Reviews", - "HeaderSoundtracks": "Soundtracks", - "HeaderMusicVideos": "Music Videos", - "HeaderSpecialFeatures": "Special Features", - "HeaderCastCrew": "Cast & Crew", - "HeaderAdditionalParts": "Additional Parts", + "HeaderMediaFolders": "\u03a6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03a0\u03bf\u03bb\u03c5\u03bc\u03ad\u03c3\u03c9\u03bd", + "HeaderThemeVideos": "\u0398\u03b5\u03bc\u03b1\u03c4\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", + "HeaderThemeSongs": "\u0398\u03b5\u03bc\u03b1\u03c4\u03b9\u03ba\u03ac \u03a4\u03c1\u03b1\u03b3\u03bf\u03cd\u03b4\u03b9\u03b1", + "HeaderScenes": "\u03a3\u03ba\u03b7\u03bd\u03ad\u03c2", + "HeaderAwardsAndReviews": "\u0392\u03c1\u03b1\u03b2\u03b5\u03af\u03b1 \u03ba\u03b1\u03b9 \u0392\u03b1\u03b8\u03bc\u03bf\u03bb\u03bf\u03b3\u03af\u03b1", + "HeaderSoundtracks": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae \u03a4\u03b1\u03b9\u03bd\u03af\u03b1\u03c2", + "HeaderMusicVideos": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf \u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae\u03c2", + "HeaderSpecialFeatures": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b5\u03c2 \u03a3\u03ba\u03b7\u03bd\u03ad\u03c2", + "HeaderCastCrew": "\u0397\u03b8\u03bf\u03c0\u03bf\u03b9\u03bf\u03af \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c1\u03b3\u03b5\u03af\u03bf", + "HeaderAdditionalParts": "\u03a0\u03c1\u03cc\u03c3\u03b8\u03b5\u03c4\u03b1 \u039c\u03ad\u03c1\u03b7", "ButtonSplitVersionsApart": "Split Versions Apart", "ButtonPlayTrailer": "Trailer", "LabelMissing": "Missing", - "LabelOffline": "Offline", + "LabelOffline": "\u0395\u03ba\u03c4\u03cc\u03c2", "PathSubstitutionHelp": "Path substitutions are used for mapping a path on the server to a path that clients are able to access. By allowing clients direct access to media on the server they may be able to play them directly over the network and avoid using server resources to stream and transcode them.", - "HeaderFrom": "From", + "HeaderFrom": "\u0391\u03c0\u03cc", "HeaderTo": "To", - "LabelFrom": "From:", + "LabelFrom": "\u0391\u03c0\u03cc:", "LabelFromHelp": "Example: D:\\Movies (on the server)", "LabelTo": "To:", "LabelToHelp": "Example: \\\\MyServer\\Movies (a path clients can access)", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 81bee1153..22f1f6c32 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Record programme on all channels", "OptionRecordAnytime": "Record programme at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 86cb406b5..9232bafa5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 c1c3605b7..4664c9489 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "OK", "ButtonCancel": "Cancelar", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nada aqu\u00ed.", "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadata de internet esta habilitada", "TabSuggested": "Sugerencia", + "TabSuggestions": "Suggestions", "TabLatest": "Novedades", "TabUpcoming": "Pr\u00f3ximos", "TabShows": "Programas", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Grabar programa en cualquier canal", "OptionRecordAnytime": "Grabar programa a cualquier hora", "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos episodios", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "D\u00edas", "HeaderActiveRecordings": "Grabaciones activas", "HeaderLatestRecordings": "\u00daltimas grabaciones", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "N\u00famero de puerto WebSocket:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "Mis vistas (botones)", - "OptionMyViews": "Mis vistas", - "OptionMyViewsSmall": "Mis vistas (peque\u00f1o)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Continuar", "OptionLatestMedia": "\u00daltimos medios", "OptionLatestChannelMedia": "Ultimos elementos de canales", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Por defecto", "OptionCommunityMostWatchedSort": "M\u00e1s visto", "TabNextUp": "Siguiendo", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No hay sugerencias de pel\u00edculas disponibles. Comience ver y calificar sus pel\u00edculas y vuelva para ver las recomendaciones.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 26a7e7f17..f77d42978 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Agregar Usuario", "LabelAddConnectSupporterHelp": "Para agregar un usuario que no esta listado, necesita primero enlazar su cuenta a Emby Connect desde su pagina de perfil de usuario.", "LabelPinCode": "C\u00f3digo pin:", + "OptionHideWatchedContentFromLatestMedia": "Ocultar contenido ya visto de medios recientes", + "HeaderSync": "Sinc", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", "ButtonExit": "Salir", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nada aqu\u00ed.", "MessagePleaseEnsureInternetMetadata": "Por favor aseg\u00farese que la descarga de metadatos de internet esta habilitada.", "TabSuggested": "Sugerencias", + "TabSuggestions": "Sugerencias", "TabLatest": "Recientes", "TabUpcoming": "Por Estrenar", "TabShows": "Programas", @@ -401,9 +404,10 @@ "ButtonRefresh": "Actualizar", "ButtonAdvancedRefresh": "Actualizaci\u00f3n Avanzada", "OptionPriority": "Prioridad", - "OptionRecordOnAllChannels": "Grabar programa en todos los canales", - "OptionRecordAnytime": "Grabar programa en cualquier momento", + "OptionRecordOnAllChannels": "Grabar en todos los canales", + "OptionRecordAnytime": "Grabar en cualquier momento", "OptionRecordOnlyNewEpisodes": "Grabar s\u00f3lo nuevos episodios", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "D\u00edas", "HeaderActiveRecordings": "Grabaciones Activas", "HeaderLatestRecordings": "Grabaciones Recientes", @@ -547,7 +551,7 @@ "LabelPublicHttpsPort": "N\u00famero de puerto https publico:", "LabelPublicHttpsPortHelp": "El n\u00famero de puerto p\u00fablico que deber\u00e1 ser mapeado al puerto local de https.", "LabelEnableHttps": "Reportar https como una direcci\u00f3n externa", - "LabelEnableHttpsHelp": "Si se habilita, el servidor reportara a los clientes una url https como su direcci\u00f3n externa. Esto podr\u00eda inutilizar a los clientes que aun no soporten https.", + "LabelEnableHttpsHelp": "Al habilitarse, el servidor reportara un URL https a los clientes como su direcci\u00f3n externa.", "LabelHttpsPort": "N\u00famero de puerto https local:", "LabelHttpsPortHelp": "El numero de puerto tcp con el que se deber\u00e1 vincular el servidor https de Emby.", "LabelWebSocketPortNumber": "N\u00famero de puerto WebSocket:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Pagina de Inicio secci\u00f3n dos:", "LabelHomePageSection3": "Pagina de Inicio secci\u00f3n tres:", "LabelHomePageSection4": "Pagina de Inicio secci\u00f3n cuatro:", - "OptionMyViewsButtons": "Mis vistas (botones)", - "OptionMyViews": "Mis vistas", - "OptionMyViewsSmall": "Mis vistas (peque\u00f1o)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Continuar", "OptionLatestMedia": "Medios recientes", "OptionLatestChannelMedia": "Elementos recientes de canales", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Por defecto", "OptionCommunityMostWatchedSort": "M\u00e1s Visto", "TabNextUp": "A Continuaci\u00f3n", + "PlaceholderUsername": "Nombre de Usuario", "HeaderBecomeProjectSupporter": "Convi\u00e9rtete en un Fan\u00e1tico Emby", - "TextEnjoyBonusFeatures": "Disfruta de Caracter\u00edsticas Premium", "MessageNoMovieSuggestionsAvailable": "No hay sugerencias de pel\u00edculas disponibles en este momento. Comienza a ver y a calificar tus pel\u00edculas, y regresa para ver tus recomendaciones.", "MessageNoCollectionsAvailable": "Las colecciones le permiten disfrutar de agrupaciones personalizadas de Pel\u00edculas, Series, \u00c1lbumes, Libros y Juegos. Haga clic en el bot\u00f3n + para iniciar la creaci\u00f3n de Colecciones.", "MessageNoPlaylistsAvailable": "Las listas de reproducci\u00f3n le permiten crear listas de contenidos a ser reproducidos de manera consecutiva. Para agregar \u00edtems a una lista de reproducci\u00f3n, haga clic derecho o seleccione y mantenga, despu\u00e9s seleccione Agregar a Lista de Reproducci\u00f3n.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Descargar metadatos de Internet para:", "OptionTVMovies": "Pel\u00edculas de TV", "HeaderUpcomingMovies": "Pel\u00edculas por Estrenar", + "HeaderUpcomingSports": "Deportes por Estrenar", "HeaderUpcomingPrograms": "Programas por Estrenar", "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", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottle": "Habilitar contenci\u00f3n", + "OptionEnableTranscodingThrottleHelp": "La contenci\u00f3n permite ajustar autom\u00e1ticamente la velocidad de transcodificaci\u00f3n para minimizar la utilizaci\u00f3n del procesador en el servidor durante la reproducci\u00f3n.", + "LabelUploadSpeedLimit": "L\u00edmite de velocidad de subida (mbps):", + "OptionAllowSyncTranscoding": "Permitir sincronizaci\u00f3n que requiera de transcodificaci\u00f3n", + "HeaderPlayback": "Reproducci\u00f3n de Medios", + "OptionAllowAudioPlaybackTranscoding": "Permitir la reproducci\u00f3n de audio que requiera de transcodificaci\u00f3n", + "OptionAllowVideoPlaybackTranscoding": "Permitir la reproducci\u00f3n de video que requiera de transcodificaci\u00f3n", + "OptionAllowMediaPlaybackTranscodingHelp": "Los usuarios recibir\u00e1n mensajes amigables cuando el contenido no pueda ser reproducido de acuerdo a su pol\u00edtica.", + "TabStreaming": "Transmisi\u00f3n", + "LabelRemoteClientBitrateLimit": "Limite de tasa de bits para clientes remotos (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "L\u00edmite opcional en la tasa de bits de transmisi\u00f3n para todos los clientes remotos. Esto es \u00fatil para evitar que los clientes soliciten una tasa de bits mayor a la que su conexi\u00f3n puede soportar.", + "LabelConversionCpuCoreLimit": "L\u00edmite de n\u00facleos de CPU:", + "LabelConversionCpuCoreLimitHelp": "L\u00edmitar el n\u00famero de n\u00facleos del CPI que ser\u00e1n utilizados durante la conversi\u00f3n de sincronizaci\u00f3n.", + "OptionEnableFullSpeedConversion": "Habilitar conversi\u00f3n a m\u00e1xima velocidad", + "OptionEnableFullSpeedConversionHelp": "Por defecto, la conversi\u00f3n es realizada a baja velocidad para minimizar el consumo de recursos.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 4e7d9b552..1265b3c4a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fi.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Lopeta", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 9b7a58996..cd2d2571e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json @@ -24,7 +24,7 @@ "UserProfilesIntro": "Emby supporte nativement les profils utilisateurs, les pr\u00e9f\u00e9rences d'affichage, la sauvegarde de l'\u00e9tat de lecture et le contr\u00f4le parental.", "LabelWindowsService": "Service Windows", "AWindowsServiceHasBeenInstalled": "Un service Windows a \u00e9t\u00e9 install\u00e9.", - "WindowsServiceIntro1": "Le serveur Emby fonctionne comme une application de bureau avec une icone de notification, mais si vous pr\u00e9f\u00e9rer qu'il tourne comme un service en tache de fond, il peut \u00eatre d\u00e9marrer \u00e0 partir du panneau de controle des services windows.", + "WindowsServiceIntro1": "Le serveur Emby fonctionne comme une application de bureau avec une icone de notification, mais si vous pr\u00e9f\u00e9rez qu'il tourne comme un service en tache de fond, il peut \u00eatre d\u00e9marrer \u00e0 partir du panneau de controle des 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 l'instant. Emby a commenc\u00e9 \u00e0 collecter les informations de votre biblioth\u00e8que de m\u00e9dias. Jetez un oeil \u00e0 quelques unes de nos applications, puis cliquez sur <b>Terminer<\/b> pour consulter le <b>Tableau de bord du serveur<\/b>.", "LabelConfigureSettings": "Configurer les param\u00e8tres", @@ -52,6 +52,8 @@ "HeaderAddUser": "Ajouter un utilisateur", "LabelAddConnectSupporterHelp": "Pour ajouter un utilisateur non list\u00e9, vous devrez d'abord lier son compte \u00e0 Emby Connect depuis sa page de profil utilisateur.", "LabelPinCode": "Code PIN:", + "OptionHideWatchedContentFromLatestMedia": "Masquer le contenu d\u00e9j\u00e0 vu dans les derniers m\u00e9dias", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Annuler", "ButtonExit": "Sortie", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "Suggestions", "TabLatest": "Plus r\u00e9cents", "TabUpcoming": "\u00c0 venir", "TabShows": "S\u00e9ries", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Enregistrer le programme sur toutes les cha\u00eenes", "OptionRecordAnytime": "Enregistrer le programme \u00e0 n'importe quelle heure\/journ\u00e9e", "OptionRecordOnlyNewEpisodes": "Enregistrer seulement les nouveaux \u00e9pisodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Jours", "HeaderActiveRecordings": "Enregistrements actifs", "HeaderLatestRecordings": "Derniers enregistrements", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Seconde section du portail :", "LabelHomePageSection3": "Troisi\u00e8me section du portail :", "LabelHomePageSection4": "Quatri\u00e8me section du portail:", - "OptionMyViewsButtons": "Mes vues (bouttons)", - "OptionMyViews": "Mes vues", - "OptionMyViewsSmall": "Mes vues (petit)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Reprendre", "OptionLatestMedia": "Les plus r\u00e9cents", "OptionLatestChannelMedia": "Items de cha\u00eene les plus r\u00e9cents", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Par d\u00e9faut", "OptionCommunityMostWatchedSort": "Les plus lus", "TabNextUp": "Prochains \u00e0 voir", + "PlaceholderUsername": "Identifiant", "HeaderBecomeProjectSupporter": "Devenir un fan d'Emby", - "TextEnjoyBonusFeatures": "Profitez bien des fonctionnalit\u00e9s bonus", "MessageNoMovieSuggestionsAvailable": "Aucune suggestion de film n'est actuellement disponible. Commencez \u00e0 regarder et notez vos films pour avoir des suggestions.", "MessageNoCollectionsAvailable": "Les collections vous permettent de tirer parti de groupements personnalis\u00e9s de films, de s\u00e9ries, d'albums audio, de livres et de jeux. Cliquez sur le bouton + pour commencer \u00e0 cr\u00e9er des Collections.", "MessageNoPlaylistsAvailable": "Les listes de lectures vous permettent de cr\u00e9er des listes de contenus \u00e0 lire en continu en une fois. Pour ajouter un \u00e9l\u00e9ment \u00e0 la liste, faire un clic droit ou appuyer et maintenez, puis s\u00e9lectionnez Ajouter \u00e0 la liste de lecture", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "T\u00e9l\u00e9charger les m\u00e9ta-donn\u00e9es depuis Internet pour :", "OptionTVMovies": "T\u00e9l\u00e9films", "HeaderUpcomingMovies": "Films \u00e0 venir", + "HeaderUpcomingSports": "Ev\u00e9nements sportifs \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", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottle": "Activer le throttling", + "OptionEnableTranscodingThrottleHelp": "Le throttling consiste \u00e0 ajuster automatiquement la fr\u00e9quence de transcodage afin de minimiser l'utilisation CPU pendant la lecture.", + "LabelUploadSpeedLimit": "D\u00e9bit max d'upload (mbps) :", + "OptionAllowSyncTranscoding": "Autoriser la synchronisation quand elle n\u00e9cessite un transcodage", + "HeaderPlayback": "Lecture du m\u00e9dia", + "OptionAllowAudioPlaybackTranscoding": "Autoriser la lecture de musique n\u00e9cessitant un transcodage", + "OptionAllowVideoPlaybackTranscoding": "Autoriser la lecture de vid\u00e9os n\u00e9cessitant un transcodage", + "OptionAllowMediaPlaybackTranscodingHelp": "Les utilisateurs recevront un message d'erreur compr\u00e9hensible lorsque le contenu n'est pas lisible en raison des restrictions appliqu\u00e9es.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Limite de d\u00e9bit du client distant (mbps):", + "LabelRemoteClientBitrateLimitHelp": "Une limite de d\u00e9bit optionnelle du streaming pour tous les clients distant. Utile pour \u00e9viter que les clients demandent une bande passante sup\u00e9rieure \u00e0 ce que votre connexion peu fournir.", + "LabelConversionCpuCoreLimit": "Limite de c\u0153ur CPU:", + "LabelConversionCpuCoreLimitHelp": "Limite le nombre de c\u0153ur du processeur utilis\u00e9s pendant le transcodage.", + "OptionEnableFullSpeedConversion": "Autoriser le transcodage rapide", + "OptionEnableFullSpeedConversionHelp": "Par d\u00e9faut, le transcodage est r\u00e9alis\u00e9 de mani\u00e8re lente pour r\u00e9duire la consommation de ressources.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 6ccbee4a7..dd8dd35e2 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/he.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "\u05d0\u05e9\u05e8", "ButtonCancel": "\u05d1\u05d8\u05dc", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "Suggestions", "TabLatest": "\u05d0\u05d7\u05e8\u05d5\u05df", "TabUpcoming": "\u05d1\u05e7\u05e8\u05d5\u05d1", "TabShows": "\u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "\u05d4\u05e7\u05dc\u05d8 \u05ea\u05d5\u05db\u05e0\u05d9\u05d5\u05ea \u05d1\u05db\u05dc \u05d4\u05e2\u05e8\u05d5\u05e6\u05d9\u05dd", "OptionRecordAnytime": "\u05d4\u05e7\u05dc\u05d8 \u05ea\u05d5\u05db\u05e0\u05d9\u05ea \u05d1\u05db\u05dc \u05d6\u05de\u05df", "OptionRecordOnlyNewEpisodes": "\u05d4\u05e7\u05dc\u05d8 \u05e8\u05e7 \u05e4\u05e8\u05e7\u05d9\u05dd \u05d7\u05d3\u05e9\u05d9\u05dd", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "\u05d9\u05de\u05d9\u05dd", "HeaderActiveRecordings": "\u05d4\u05e7\u05dc\u05d8\u05d5\u05ea \u05e4\u05e2\u05d9\u05dc\u05d5\u05ea", "HeaderLatestRecordings": "\u05d4\u05e7\u05dc\u05d8\u05d5\u05ea \u05d0\u05d7\u05e8\u05d5\u05e0\u05d5\u05ea", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "\u05e4\u05d5\u05e8\u05d8 Web socket:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 c9de0acda..a22df842b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/hr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/hr.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Odustani", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Ni\u0161ta ovdje.", "MessagePleaseEnsureInternetMetadata": "Molimo provjerite da je preuzimanje metadata sa interneta omogu\u0107eno.", "TabSuggested": "Preporu\u010deno", + "TabSuggestions": "Suggestions", "TabLatest": "Zadnje", "TabUpcoming": "Uskoro", "TabShows": "Emisije", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Snimi emisiju na svim kanalima", "OptionRecordAnytime": "Snimi emisiju u bilo koje vrijeme", "OptionRecordOnlyNewEpisodes": "Snimi samo nove epizode", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dani", "HeaderActiveRecordings": "Aktivna snimanja", "HeaderLatestRecordings": "Zadnje snimke", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Port Web priklju\u010dka:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 79be970d6..137a45965 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/it.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json @@ -1,16 +1,16 @@ { "LabelExit": "Esci", - "LabelVisitCommunity": "Visita Comunit\u00e0", + "LabelVisitCommunity": "Visita la Community", "LabelGithub": "Github", "LabelSwagger": "Swagger", "LabelStandard": "Standard", - "LabelApiDocumentation": "Documentazione Api", - "LabelDeveloperResources": "Risorse programmatori", + "LabelApiDocumentation": "Documentazione sulle Api", + "LabelDeveloperResources": "Risorse per i programmatori", "LabelBrowseLibrary": "Esplora la libreria", "LabelConfigureServer": "Configura Emby", "LabelOpenLibraryViewer": "Apri visualizzatore libreria", "LabelRestartServer": "Riavvia Server", - "LabelShowLogWindow": "Mostra Finestra log", + "LabelShowLogWindow": "Mostra finestra dei log", "LabelPrevious": "Precedente", "LabelFinish": "Finito", "LabelNext": "Prossimo", @@ -27,31 +27,33 @@ "WindowsServiceIntro1": "Emby 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": "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": "That's all we need for now. Emby has begun collecting information about your media library. Check out some of our apps, and then click <b>Finish<\/b> to view the <b>Server Dashboard<\/b>.", - "LabelConfigureSettings": "Configura", + "LabelConfigureSettings": "Configura le impostazioni", "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", + "VideoImageExtractionHelp": "Per i video che sono sprovvisti di immagini, e per i quali non siamo riusciti a trovare immagini su Internet. Questa opzione allungher\u00e0 il tempo di scansione della tua libreria ma si tradurr\u00e0 in una presentazione pi\u00f9 gradevole.", + "LabelEnableChapterImageExtractionForMovies": "Estrazione immagine del capitolo 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": "Emby termini di servizio", + "LabelEnableAutomaticPortMapping": "Abilita mappatura automatica delle porte", + "LabelEnableAutomaticPortMappingHelp": "UPnP consente la configurazione automatica del router per facilitare l'accesso remoto. Questa opzione potrebbe non funzionare con alcuni modelli di router.", + "HeaderTermsOfService": "Termini di servizio di Emby", "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", + "HeaderDeveloperOptions": "Opzioni per il programmatore", + "OptionEnableWebClientResponseCache": "Abilita il caching delle risposte del client", "OptionDisableForDevelopmentHelp": "Configura questi parametri per sviluppatori del client web", "OptionEnableWebClientResourceMinification": "Abilita la minimizzazione delle risorse del client web", - "LabelDashboardSourcePath": "Percorso sorgente client web", + "LabelDashboardSourcePath": "Percorso del codice sorgente del 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", "LinkedToEmbyConnect": "Collegato a Emby 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 Emby Connect from their user profile page.", + "HeaderSupporterBenefits": "Benefici per il Supporter", + "HeaderAddUser": "Aggiungi utente", + "LabelAddConnectSupporterHelp": "Per aggiungere un utente non in lista, dovrai prima collegare il suo account a Emby Connect dalla pagina del suo profilo", "LabelPinCode": "Codice Pin", + "OptionHideWatchedContentFromLatestMedia": "Nasconde i contenuti visti dagli Ultimi Media", + "HeaderSync": "Sincronizza", "ButtonOk": "OK", "ButtonCancel": "Annulla", "ButtonExit": "Esci", @@ -60,31 +62,31 @@ "HeaderAudio": "Audio", "HeaderVideo": "Video", "HeaderPaths": "Percorsi", - "CategorySync": "Sinc.zza", + "CategorySync": "Sincronizza", "TabPlaylist": "Playlist", - "HeaderEasyPinCode": "Codice pin", + "HeaderEasyPinCode": "Codice pin semplificato", "HeaderGrownupsOnly": "Solo adulti", - "DividerOr": "- o -", + "DividerOr": "-- o --", "HeaderInstalledServices": "Servizi installati", "HeaderAvailableServices": "Servizi disponibili", "MessageNoServicesInstalled": "Nessun servizio attualmente installato", - "HeaderToAccessPleaseEnterEasyPinCode": "Per accedere per favore inserisci il tuo codice pin", + "HeaderToAccessPleaseEnterEasyPinCode": "Per accedere per favore inserisci il tuo codice pin semplificato", "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", + "RegisterWithPayPal": "Registrati 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.", + "HeaderEnjoyDayTrial": "Goditi una prova gratuita per 14 giorni", + "LabelSyncTempPath": "Percorso file temporanei:", + "LabelSyncTempPathHelp": "Specifica una cartella per la sincronizzazione. I file multimediali convertiti durante la sincronizzazione verranno memorizzati qui.", "LabelCustomCertificatePath": "Percorso certificati personalizzato:", - "LabelCustomCertificatePathHelp": "Fornire un tuo file .pfx certificato SSL. Se omesso, il server creer\u00e0 un certificato auto-firmato.", + "LabelCustomCertificatePathHelp": "Fornisci il 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": "This is your Emby online account user name or password.", + "LabelEnterConnectUserNameHelp": "Questa \u00e8 la username o la password del tuo account online Emby", "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.", @@ -100,8 +102,8 @@ "FolderTypeTvShows": "Tv", "FolderTypeInherit": "ereditare", "LabelContentType": "Tipo di contenuto:", - "TitleScheduledTasks": "Compiti Pianificati", - "HeaderSetupLibrary": "Configura la tua libreria", + "TitleScheduledTasks": "Task pianificati", + "HeaderSetupLibrary": "Configura la tua libreria di contenuti multimediali", "ButtonAddMediaFolder": "Aggiungi cartella", "LabelFolderType": "Tipo cartella", "ReferToMediaLibraryWiki": "Fare riferimento alla wiki libreria multimediale.", @@ -109,14 +111,14 @@ "LabelLanguage": "Lingua:", "LabelTimeLimitHours": "Tempo limite (ore):", "ButtonJoinTheDevelopmentTeam": "Unisciti al Team di Sviluppo", - "HeaderPreferredMetadataLanguage": "Lingua dei metadati preferita:", + "HeaderPreferredMetadataLanguage": "Lingua preferita per i metadati:", "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.", + "LabelSaveLocalMetadataHelp": "Il salvataggio di immagini e metadati direttamente nelle cartelle multimediali consentir\u00e0 di tenerli in un posto dove possono essere facilmente modificati.", "LabelDownloadInternetMetadata": "Scarica immagini e metadati da internet", - "LabelDownloadInternetMetadataHelp": "Emby Server can download information about your media to enable rich presentations.", + "LabelDownloadInternetMetadataHelp": "Il Server Emby pu\u00f2 scaricare informazioni sui tuoi media per ottenere presentazioni pi\u00f9 complete", "TabPreferences": "Preferenze", "TabPassword": "Password", - "TabLibraryAccess": "Accesso libreria", + "TabLibraryAccess": "Accesso alla libreria", "TabAccess": "Accesso", "TabImage": "Immagine", "TabProfile": "Profilo", @@ -124,24 +126,24 @@ "TabImages": "Immagini", "TabNotifications": "Notifiche", "TabCollectionTitles": "Titolo", - "HeaderDeviceAccess": "Accesso dispositivo", + "HeaderDeviceAccess": "Accesso al 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:", + "HeaderVideoPlaybackSettings": "Impostazioni per la riproduzione di video", + "HeaderPlaybackSettings": "Impostazioni per la riproduzione", + "LabelAudioLanguagePreference": "Preferenza per la lingua dell'audio:", + "LabelSubtitleLanguagePreference": "Preferenza per la 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.", + "OptionAlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua dell'audio.", "OptionNoSubtitlesHelp": "I sottotitoli non verranno caricati di default.", "TabProfiles": "Profili", "TabSecurity": "Sicurezza", @@ -162,18 +164,19 @@ "LabelSelectUsers": "Seleziona Utenti:", "ButtonUpload": "Carica", "HeaderUploadNewImage": "Carica nuova immagine", - "LabelDropImageHere": "Trascina l'immagine qui", + "LabelDropImageHere": "Rilasciare 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", + "TabSuggestions": "Suggerimenti", "TabLatest": "Novit\u00e0", "TabUpcoming": "In Arrivo", - "TabShows": "Serie", + "TabShows": "Spettacoli", "TabEpisodes": "Episodi", "TabGenres": "Generi", "TabPeople": "Attori", - "TabNetworks": "Internet", + "TabNetworks": "Reti", "HeaderUsers": "Utenti", "HeaderFilters": "Filtri", "ButtonFilter": "Filtro", @@ -182,18 +185,18 @@ "OptionDislikes": "Brutti", "OptionActors": "Attori", "OptionGuestStars": "Personaggi Famosi", - "OptionDirectors": "Registra", - "OptionWriters": "Scrittore", - "OptionProducers": "Produttore", + "OptionDirectors": "Registi", + "OptionWriters": "Sceneggiatori", + "OptionProducers": "Produttori", "HeaderResume": "Riprendi", - "HeaderNextUp": "Da vedere", - "NoNextUpItemsMessage": "Trovato nessuno. Inizia a guardare i tuoi programmi!", + "HeaderNextUp": "Prossimo", + "NoNextUpItemsMessage": "Trovato niente. Inizia a guardare i tuoi programmi!", "HeaderLatestEpisodes": "Ultimi Episodi Aggiunti", "HeaderPersonTypes": "Tipo Persone:", "TabSongs": "Canzoni", "TabAlbums": "Album", "TabArtists": "Artisti", - "TabAlbumArtists": "Artisti Album", + "TabAlbumArtists": "Artisti degli album", "TabMusicVideos": "Video Musicali", "ButtonSort": "Ordina", "HeaderSortBy": "Ordina per:", @@ -207,7 +210,7 @@ "OptionPlayCount": "Visto N\u00b0", "OptionDatePlayed": "Visto il", "OptionDateAdded": "Aggiunto il", - "OptionAlbumArtist": "Artista Album", + "OptionAlbumArtist": "Artista dell'album", "OptionArtist": "Artista", "OptionAlbum": "Album", "OptionTrackName": "Nome Brano", @@ -217,18 +220,18 @@ "OptionBudget": "Budget", "OptionRevenue": "Recensione", "OptionPoster": "Locandina", - "OptionPosterCard": "scheda poster", + "OptionPosterCard": "Scheda locandina", "OptionBackdrop": "Sfondo", - "OptionTimeline": "Anno", - "OptionThumb": "Sfondo", + "OptionTimeline": "Cronologia", + "OptionThumb": "Pollice", "OptionThumbCard": "carta Thumb", "OptionBanner": "Banner", - "OptionCriticRating": "Voto critica", + "OptionCriticRating": "Voto della critica", "OptionVideoBitrate": "Bitrate Video", "OptionResumable": "Interrotti", - "ScheduledTasksHelp": "Fare clic su una voce per cambiare la pianificazione.", + "ScheduledTasksHelp": "Fare clic su una voce per cambiare la sua pianificazione.", "ScheduledTasksTitle": "Operazioni Pianificate", - "TabMyPlugins": "Plugins Installati", + "TabMyPlugins": "Plugin installati", "TabCatalog": "Catalogo", "TitlePlugins": "Plugins", "HeaderAutomaticUpdates": "Aggiornamenti Automatici", @@ -286,17 +289,17 @@ "TitleSupport": "Supporto", "TabLog": "Eventi", "TabAbout": "Info", - "TabSupporterKey": "Chiave finanziatore", - "TabBecomeSupporter": "Diventa finanziatore", - "ProjectHasCommunity": "Emby has a thriving community of users and contributors.", - "CheckoutKnowledgeBase": "Check out our knowledge base to help you get the most out of Emby.", - "SearchKnowledgeBase": "Cerca sulla guida online", - "VisitTheCommunity": "Visita la nostra comunit\u00e0", - "VisitProjectWebsite": "Visit the Emby Web Site", - "VisitProjectWebsiteLong": "Visit the Emby Web site to catch the latest news and keep up with the developer blog.", + "TabSupporterKey": "Chiave del Supporter", + "TabBecomeSupporter": "Diventa un Supporter", + "ProjectHasCommunity": "Emby ha una ricca community di utilizzatori e collaboratori", + "CheckoutKnowledgeBase": "Scopri la nostra Knoledge Base per ottenere il massimo da Emby", + "SearchKnowledgeBase": "Cerca nella guida online", + "VisitTheCommunity": "Visita la nostra Community", + "VisitProjectWebsite": "Visita il sito di Emby", + "VisitProjectWebsiteLong": "Visita il sito web di Emby per tenerti aggiornato con le ultime novit\u00e0 e le notizie dal blog degli sviluppatori.", "OptionHideUser": "Nascondi questo utente dalla schermata di Accesso", "OptionHideUserFromLoginHelp": "Utile per account nascosti o amministratore. L'utente avr\u00e0 bisogno di accedere manualmente utilizzando la propria username e password", - "OptionDisableUser": "Disabilita utente", + "OptionDisableUser": "Disabilita questo utente", "OptionDisableUserHelp": "Se disabilitato, il server non sar\u00e0 disponibile per questo utente. La connessione corrente verr\u00e0 TERMINATA", "HeaderAdvancedControl": "Controlli avanzati", "LabelName": "Nome:", @@ -304,12 +307,12 @@ "OptionAllowUserToManageServer": "Consenti a questo utente di accedere alla configurazione del SERVER", "HeaderFeatureAccess": "Accesso alle funzionalit\u00e0", "OptionAllowMediaPlayback": "Consentire la riproduzione multimediale", - "OptionAllowBrowsingLiveTv": "Consenti accesso TV Live", + "OptionAllowBrowsingLiveTv": "Consenti accesso alla TV live", "OptionAllowDeleteLibraryContent": "Consenti l'eliminazione dei media", "OptionAllowManageLiveTv": "Consenti la gestione di registrazione Live TV", "OptionAllowRemoteControlOthers": "Consenti controllo remoto di altri utenti", "OptionAllowRemoteSharedDevices": "Consenti controllo remoto di dispositivi condivisi", - "OptionAllowRemoteSharedDevicesHelp": "Dispositivi DLNA sono considerati condivisa fino a quando un utente inizia controllarlo.", + "OptionAllowRemoteSharedDevicesHelp": "Dispositivi DLNA sono considerati condivisi fino a quando un utente non inizia a controllarli.", "HeaderRemoteControl": "telecomando", "OptionMissingTmdbId": "Tmdb Id mancante", "OptionIsHD": "HD", @@ -321,7 +324,7 @@ "PismoMessage": "Dona per avere una licenza di Pismo", "TangibleSoftwareMessage": "Utilizza Tangible Solutions Java\/C# con una licenza su donazione.", "HeaderCredits": "Crediti", - "PleaseSupportOtherProduces": "Per favore supporta gli altri prodotti 'GRATIS' che MB utilizza", + "PleaseSupportOtherProduces": "Per favore supporta gli altri prodotti gratuiti che utilizziamo", "VersionNumber": "Versione {0}", "TabPaths": "Percorsi", "TabServer": "Server", @@ -333,21 +336,21 @@ "OptionDev": "Dev (instabile)", "LabelAllowServerAutoRestart": "Consenti al server di Riavviarsi automaticamente per applicare gli aggiornamenti", "LabelAllowServerAutoRestartHelp": "Il server si Riavvier\u00e0 solamente quando nessun utente \u00e8 collegato", - "LabelEnableDebugLogging": "Abilit\u00e0 registro di DEBUG", + "LabelEnableDebugLogging": "Attiva la registrazione degli eventi", "LabelRunServerAtStartup": "Esegui il server all'avvio di windows", "LabelRunServerAtStartupHelp": "Verr\u00e0 avviata l'icona della barra all'avvio di Windows. Per avviare il servizio di Windows, deselezionare questa ed eseguire il servizio dal pannello di controllo di Windows. Si prega di notare che non \u00e8 possibile eseguire entrambi allo stesso tempo, quindi sar\u00e0 necessario chiudere l'icona sulla barra prima di avviare il servizio.", "ButtonSelectDirectory": "Seleziona cartella", "LabelCustomPaths": "Specifica un percorso personalizzato.Lasciare vuoto per usare quello predefinito", "LabelCachePath": "Percorso Cache:", - "LabelCachePathHelp": "Questa cartella contiene la cache come files e immagini .", + "LabelCachePathHelp": "Specifica la cartella dove memorizzare i file di cache del server, come le immagini", "LabelImagesByNamePath": "Percorso immagini per nome:", "LabelImagesByNamePathHelp": "Specificare un percorso personalizzato per le immagini di attori, artisti, generi e case cinematografiche scaricate.", - "LabelMetadataPath": "Percorso dei file METADATI:", - "LabelMetadataPathHelp": "Specificare un percorso personalizzato per artwork e metadati scaricati, se non il si vuole salvare nelle cartelle multimediali.", + "LabelMetadataPath": "Percorso dei file con i metadati:", + "LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati, se non si desidera salvarli nelle cartelle multimediali.", "LabelTranscodingTempPath": "Cartella temporanea per la trascodifica:", "LabelTranscodingTempPathHelp": "Questa cartella contiene i file di lavoro utilizzati dal transcoder. Specificare un percorso personalizzato, oppure lasciare vuoto per utilizzare l'impostazione predefinita all'interno della cartella dei dati del server.", "TabBasics": "Base", - "TabTV": "Serie Tv", + "TabTV": "Serie TV", "TabGames": "Giochi", "TabMusic": "Musica", "TabOthers": "Altri", @@ -357,19 +360,19 @@ "OptionOtherVideos": "Altri Video", "TitleMetadata": "Metadati", "LabelAutomaticUpdates": "Abilita gli aggiornamenti automatici", - "LabelAutomaticUpdatesTmdb": "Abilita gli aggiornamenti automatici per TheMovieDB.org", - "LabelAutomaticUpdatesTvdb": "Abilita gli aggiornamenti automatici per TheTVDB.com", + "LabelAutomaticUpdatesTmdb": "Abilita gli aggiornamenti automatici da TheMovieDB.org", + "LabelAutomaticUpdatesTvdb": "Abilita gli aggiornamenti automatici da TheTVDB.com", "LabelAutomaticUpdatesFanartHelp": "Se abilitato le nuove immagini verranno scaricate automaticamente da fanart.tv. Le immagini esistenti non verranno sovrascritte.", "LabelAutomaticUpdatesTmdbHelp": "Se abilitato le nuove immagini verranno scaricate automaticamente da ThemovieDb.org. Le immagini esistenti non verranno sovrascritte.", "LabelAutomaticUpdatesTvdbHelp": "Se abilitato le nuove immagini verranno scaricate automaticamente da TheTvDB.com. Le immagini esistenti non verranno sovrascritte.", "LabelFanartApiKey": "Chiavi API personali", - "LabelFanartApiKeyHelp": "I risultati di richieste per fanart senza una chiave API personale che sono state approvate pi\u00f9 di 7 giorni fa. Con una chiave API personale questo tempo scende a 48 ore, e se sei un membro VIP scender\u00e0 ulteriormente a circa 10 minuti.", + "LabelFanartApiKeyHelp": "Le richieste di fanart effettuate senza una chiave API personale restituiranno risultati approvati pi\u00f9 di 7 giorni fa. Con una chiave API personale questo tempo scende a 48 ore, e se sei un membro VIP questo tempo scender\u00e0 ulteriormente a circa 10 minuti.", "ExtractChapterImagesHelp": "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 quando vengono trovati nuovi video, e anche 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.", "LabelMetadataDownloadLanguage": "Lingua preferita per il download:", "ButtonAutoScroll": "Scorrimento automatico", "LabelImageSavingConvention": "Convenzione per il salvataggio di immagini:", - "LabelImageSavingConventionHelp": "Emby recognizes images from most major media applications. Choosing your downloading convention is useful if you also use other products.", - "OptionImageSavingCompatible": "Compatible - Emby\/Kodi\/Plex", + "LabelImageSavingConventionHelp": "Emby riconosce le immagini fornite dalle principali applicazioni di gestione di media. Scegliere il formato del download \u00e8 utile se usi anche altri prodotti", + "OptionImageSavingCompatible": "Compatibile - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "Standard - MB2", "ButtonSignIn": "Accedi", "TitleSignIn": "Accedi", @@ -389,7 +392,7 @@ "TabMyLibrary": "Mia Libreria", "ButtonCancelRecording": "Annulla la registrazione", "HeaderPrePostPadding": "Pre\/Post Registrazione", - "LabelPrePaddingMinutes": "Pre registrazione minuti", + "LabelPrePaddingMinutes": "Minuti di pre-registrazione:", "OptionPrePaddingRequired": "Attiva pre registrazione", "LabelPostPaddingMinutes": "Minuti post registrazione", "OptionPostPaddingRequired": "Attiva post registrazione", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Registra su tutti i canali", "OptionRecordAnytime": "Registra a qualsiasi ora", "OptionRecordOnlyNewEpisodes": "Registra solo i nuovi episodi", + "HeaderRepeatingOptions": "Opzioni di ripetizione", "HeaderDays": "Giorni", "HeaderActiveRecordings": "Registrazioni Attive", "HeaderLatestRecordings": "Ultime registrazioni", @@ -417,11 +421,11 @@ "HeaderDetails": "Dettagli", "TitleLiveTV": "Tv in diretta", "LabelNumberOfGuideDays": "Numero di giorni per i quali scaricare i dati della guida:", - "LabelNumberOfGuideDaysHelp": "Scaricando pi\u00f9 giorni si avr\u00e0 la possibilit\u00e0 di pianificare in anticipo pi\u00f9 programmi e vedere pi\u00f9 liste. 'Auto': MB sceglier\u00e0 automaticamente in base al numero di canali.", + "LabelNumberOfGuideDaysHelp": "Scaricando pi\u00f9 giorni si avr\u00e0 la possibilit\u00e0 di pianificare in anticipo pi\u00f9 programmi e vedere pi\u00f9 liste, ma il tempo di download si allungher\u00e0. 'Auto': MB sceglier\u00e0 automaticamente in base al numero di canali.", "OptionAutomatic": "Automatico", - "HeaderServices": "Services", + "HeaderServices": "Servizi", "LiveTvPluginRequired": "E' richiesto il servizio LIVE TV per continuare.", - "LiveTvPluginRequiredHelp": "Installa un servizio disponibile, come Next Pvr or ServerWMC.", + "LiveTvPluginRequiredHelp": "Installa un plugin tra quelli disponibili, come Next Pvr o ServerWMC.", "LabelCustomizeOptionsPerMediaType": "Personalizza per il tipo di supporto:", "OptionDownloadThumbImage": "Foto", "OptionDownloadMenuImage": "Men\u00f9", @@ -435,7 +439,7 @@ "HeaderFetchImages": "Identifica Immagini:", "HeaderImageSettings": "Impostazioni Immagini", "TabOther": "Altro", - "LabelMaxBackdropsPerItem": "Massimo numero di sfondi per oggetto.", + "LabelMaxBackdropsPerItem": "Massimo numero di sfondi per oggetto:", "LabelMaxScreenshotsPerItem": "Massimo numero di foto per oggetto:", "LabelMinBackdropDownloadWidth": "Massima larghezza sfondo:", "LabelMinScreenshotDownloadWidth": "Minima larghezza foto:", @@ -443,21 +447,21 @@ "HeaderAddScheduledTaskTrigger": "Aggiungi operazione", "ButtonAdd": "Aggiungi", "LabelTriggerType": "Tipo Evento:", - "OptionDaily": "Giornal.", + "OptionDaily": "Giornaliero", "OptionWeekly": "Settimanale", "OptionOnInterval": "Su intervallo", "OptionOnAppStartup": "All'avvio", - "OptionAfterSystemEvent": "Dopo un vento di sistema", + "OptionAfterSystemEvent": "Dopo un evento di sistema", "LabelDay": "Giorno:", "LabelTime": "Ora:", "LabelEvent": "Evento:", "OptionWakeFromSleep": "Risveglio:", "LabelEveryXMinutes": "Tutti:", - "HeaderTvTuners": "Schede Tv", + "HeaderTvTuners": "Sintonizzatori Tv", "HeaderGallery": "Galleria", "HeaderLatestGames": "Ultimi giochi", - "HeaderRecentlyPlayedGames": "Ultimi giochi recenti", - "TabGameSystems": "Sistema di Giocho", + "HeaderRecentlyPlayedGames": "Ultimi giochi eseguiti", + "TabGameSystems": "Sistemi di gioco", "TitleMediaLibrary": "Libreria", "TabFolders": "Cartelle", "TabPathSubstitution": "Percorso da sostiuire", @@ -509,31 +513,31 @@ "OptionMaxQualityTranscoding": "Massima qualit\u00e0", "OptionEnableDebugTranscodingLogging": "Abilita la registrazione transcodifica di debug", "OptionEnableDebugTranscodingLoggingHelp": "Questo creer\u00e0 file di log molto grandi ed \u00e8 consigliato solo se necessario per la risoluzione dei problemi.", - "EditCollectionItemsHelp": "Aggiungi o rimuovi film, serie, album, libri o giochi e che vuoi raggruppare in questa collezione.", - "HeaderAddTitles": "Aggiungi Titolo", + "EditCollectionItemsHelp": "Aggiungi o rimuovi film, serie, album, libri o giochi che desideri raggruppare in questa collezione.", + "HeaderAddTitles": "Aggiungi titoli", "LabelEnableDlnaPlayTo": "Abilita DLNA su", - "LabelEnableDlnaPlayToHelp": "Emby can detect devices within your network and offer the ability to remote control them.", + "LabelEnableDlnaPlayToHelp": "Emby pu\u00f2 individuare i dispositivi attivi in rete e offrire la possibilit\u00e0 di controllarli da remoto", "LabelEnableDlnaDebugLogging": "Abilita il debug del DLNA", "LabelEnableDlnaDebugLoggingHelp": "Questo creer\u00e0 file di log di notevoli dimensioni e deve essere abilitato solo per risolvere eventuali problemi", "LabelEnableDlnaClientDiscoveryInterval": "Intervallo di ricerca dispositivi (secondi)", - "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determines the duration in seconds between SSDP searches performed by Emby.", + "LabelEnableDlnaClientDiscoveryIntervalHelp": "Determina la durata in secondi tra le ricerche SSDP effettuate da Emby", "HeaderCustomDlnaProfiles": "Profili personalizzati", "HeaderSystemDlnaProfiles": "Profili di sistema", "CustomDlnaProfilesHelp": "Crea un profilo personalizzato per un nuovo dispositivo o sovrascrivi quello di sistema", "SystemDlnaProfilesHelp": "I profili di sistema sono in sola lettura. Le modifiche ad un profilo di sistema verranno salvate in un nuovo profilo personalizzato.", - "TitleDashboard": "Dashboard", + "TitleDashboard": "Pannello di controllo", "TabHome": "Home", "TabInfo": "Info", "HeaderLinks": "Links", "HeaderSystemPaths": "Percorsi di sistema", - "LinkCommunity": "Comunit\u00e0", + "LinkCommunity": "Community", "LinkGithub": "Github", "LinkApi": "API", "LinkApiDocumentation": "Documentazione Api", "LabelFriendlyServerName": "Nome condiviso del server:", "LabelFriendlyServerNameHelp": "Questo nome \u00e8 usato per identificare il server sulla rete.Se lasciato vuoto verra usato il nome del pc", "LabelPreferredDisplayLanguage": "Lingua preferita visualizzata", - "LabelPreferredDisplayLanguageHelp": "Translating Emby is an ongoing project and is not yet complete.", + "LabelPreferredDisplayLanguageHelp": "La traduzione di Emby \u00e8 un'attivit\u00e0 in corso e non \u00e8 ancora conclusa", "LabelReadHowYouCanContribute": "Leggi come puoi contribuire", "HeaderNewCollection": "Nuova collezione", "ButtonSubmit": "Invia", @@ -541,20 +545,20 @@ "LabelCustomCss": "CSS Personalizzato", "LabelCustomCssHelp": "Applica il tuo CSS personale all'interfaccia web", "LabelLocalHttpServerPortNumber": "Porta HTTP locale", - "LabelLocalHttpServerPortNumberHelp": "The tcp port number that Emby's http server should bind to.", + "LabelLocalHttpServerPortNumberHelp": "Numero di porta TCP da associare al server http di Emby", "LabelPublicHttpPort": "Porta HTTP pubblica", - "LabelPublicHttpPortHelp": "Il numero di porta pubblica dovrebbe essere mappato verso la porta HTTP locale.", + "LabelPublicHttpPortHelp": "Numero di porta pubblica che dovrebbe essere mappato sulla porta HTTP locale.", "LabelPublicHttpsPort": "Numero porta HTTP pubblica", - "LabelPublicHttpsPortHelp": "Il numero della porta HTTP pubblica dovrebbe essere mappato verso la porta HTTP locale.", + "LabelPublicHttpsPortHelp": "Numero della porta pubblica che dovrebbe essere mappato sulla porta HTTPS locale.", "LabelEnableHttps": "Riporta HTTPS come indirizzo esterno", - "LabelEnableHttpsHelp": "se abilitato, il server riporter\u00e0 un url HTTPS ai client come il proprio indirizzo esterno. Questo potrebbe non far funzionare i client che ancora non supportano l'HTTPS", + "LabelEnableHttpsHelp": "se abilitato, il server riporter\u00e0 un url HTTPS ai client come il proprio indirizzo esterno.", "LabelHttpsPort": "Porta HTTPS locale", - "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", + "LabelHttpsPortHelp": "Numero di porta TCP da associare al server https di Emby", "LabelWebSocketPortNumber": "Numero porta web socket:", - "LabelEnableAutomaticPortMap": "Abilita mappatura delle porte automatiche", - "LabelEnableAutomaticPortMapHelp": "Tentativo di mappare automaticamente la porta pubblica alla porta locale tramite UPnP. Questo potrebbe non funzionare con alcuni modelli di router.", + "LabelEnableAutomaticPortMap": "Abilita mappatura automatica delle porte", + "LabelEnableAutomaticPortMapHelp": "Tenta di mappare automaticamente la porta pubblica sulla porta locale tramite UPnP. Questo potrebbe non funzionare con alcuni modelli di router.", "LabelExternalDDNS": "Indirizzo WAN esterno", - "LabelExternalDDNSHelp": "If you have a dynamic DNS enter it here. Emby apps will use it when connecting remotely. Leave empty for automatic detection.", + "LabelExternalDDNSHelp": "Se hai un DNS dinamico inserisci l'indirizzo qui. Le app di Emby lo utilizzeranno nelle connessioni remote. Lascia il campo vuoto per sfruttare la rilevazione automatica", "TabResume": "Riprendi", "TabWeather": "Tempo", "TitleAppSettings": "Impostazioni delle app", @@ -565,7 +569,7 @@ "LabelMaxResumePercentageHelp": "I film sono considerati visti se fermati dopo questo tempo", "LabelMinResumeDurationHelp": "I film pi\u00f9 corti non saranno riprendibili", "TitleAutoOrganize": "Organizza Automaticamente", - "TabActivityLog": "Attivit\u00e0 Eventi", + "TabActivityLog": "Registrazione eventi", "HeaderName": "Nome", "HeaderDate": "Data", "HeaderSource": "Sorgente", @@ -579,13 +583,13 @@ "LabelSeries": "Serie:", "LabelSeasonNumber": "Numero Stagione:", "LabelEpisodeNumber": "Numero Episodio :", - "LabelEndingEpisodeNumber": "Ultimo Episodio Numero:", + "LabelEndingEpisodeNumber": "Numero ultimo episodio:", "LabelEndingEpisodeNumberHelp": "Richiesto solo se ci sono pi\u00f9 file per espisodio", - "HeaderSupportTheTeam": "Support the Emby Team", + "HeaderSupportTheTeam": "Supporta il Team di Emby", "LabelSupportAmount": "Ammontare (Dollari)", - "HeaderSupportTheTeamHelp": "Aiutaci a continuare nello sviluppo di questo progetto tramite una donazione. una parte delle donazioni verranno impiegate per lo sviluppo di Plugins gratuiti.", - "ButtonEnterSupporterKey": "Inserisci il numero di registrazione", - "DonationNextStep": "Pe favore rientra ed inserisci la chiave di registrazione che hai ricevuto tramite mail.", + "HeaderSupportTheTeamHelp": "Aiutaci a continuare lo sviluppo di questo progetto tramite una donazione. Una parte delle donazioni verr\u00e0 impiegata per lo sviluppo di Plugins gratuiti.", + "ButtonEnterSupporterKey": "Inserisci il tuo codice Supporter", + "DonationNextStep": "Quando hai terminato, per favore rientra ed inserisci il codice Supporter che riceverai per email", "AutoOrganizeHelp": "Organizzazione automatica monitorizza le cartelle dei file scaricati e li sposter\u00e0 automaticamente nelle tue cartelle dei media.", "AutoOrganizeTvHelp": "L'organizzazione della TV aggiunger\u00e0 solo episodi nuovi alle serie esistenti. Non verranno create nuove cartelle delle serie.", "OptionEnableEpisodeOrganization": "Abilita l'organizzazione dei nuovi episodi", @@ -595,25 +599,25 @@ "LabelMinFileSizeForOrganize": "Dimensioni minime file (MB):", "LabelMinFileSizeForOrganizeHelp": "I file al di sotto di questa dimensione verranno ignorati.", "LabelSeasonFolderPattern": "Modello della cartella Stagione:", - "LabelSeasonZeroFolderName": "Modello della cartella Stagione ZERO:", + "LabelSeasonZeroFolderName": "Nome della cartella Stagione Zero:", "HeaderEpisodeFilePattern": "Modello del file Episodio:", "LabelEpisodePattern": "Modello Episodio:", "LabelMultiEpisodePattern": "Modello dei multi-file episodio:", "HeaderSupportedPatterns": "Modelli supportati", "HeaderTerm": "Termine", "HeaderPattern": "Modello", - "HeaderResult": "Resultato", + "HeaderResult": "Risultato", "LabelDeleteEmptyFolders": "Elimina le cartelle vuote dopo l'organizzazione automatica", "LabelDeleteEmptyFoldersHelp": "Attivare questa opzione per mantenere la directory di download pulita.", "LabelDeleteLeftOverFiles": "Elimina i file rimasti con le seguenti estensioni:", - "LabelDeleteLeftOverFilesHelp": "Separare con ; Per esempio:.. Nfo; txt", - "OptionOverwriteExistingEpisodes": "Sovrascrivere episodi esistenti", + "LabelDeleteLeftOverFilesHelp": "Separare con ;. Per esempio: .nfo;.txt", + "OptionOverwriteExistingEpisodes": "Sovrascrive gli episodi esistenti", "LabelTransferMethod": "Metodo di trasferimento", "OptionCopy": "Copia", "OptionMove": "Sposta", "LabelTransferMethodHelp": "Copiare o spostare i file dalla cartella da monitorizzare", "HeaderLatestNews": "Ultime Novit\u00e0", - "HeaderHelpImproveProject": "Help Improve Emby", + "HeaderHelpImproveProject": "Aiuta a migliorare Emby", "HeaderRunningTasks": "Operazioni in corso", "HeaderActiveDevices": "Dispositivi Connessi", "HeaderPendingInstallations": "installazioni in coda", @@ -624,8 +628,8 @@ "ButtonUpdateNow": "Aggiorna Adesso", "TabHosting": "Hosting", "PleaseUpdateManually": "Per favore Arresta il server ed aggiorna manualmente", - "NewServerVersionAvailable": "A new version of Emby Server is available!", - "ServerUpToDate": "Emby Server is up to date", + "NewServerVersionAvailable": "E' disponibile una nuova versione del Server Emby!", + "ServerUpToDate": "Il Server Emby \u00e8 aggiornato", "LabelComponentsUpdated": "I seguenti componenti sono stati installati o aggiornati:", "MessagePleaseRestartServerToFinishUpdating": "Si prega di riavviare il server per completare l'applicazione degli aggiornamenti.", "LabelDownMixAudioScale": "Boost audio durante il downmix:", @@ -642,13 +646,13 @@ "LabelSupporterEmailAddress": "La mail che \u00e8 stata utilizzata per acquistare la chiave", "ButtonRetrieveKey": "Recupera chiave", "LabelSupporterKey": "Chiave (incollala dalla mail ricevuta)", - "LabelSupporterKeyHelp": "Enter your supporter key to start enjoying additional benefits the community has developed for Emby.", + "LabelSupporterKeyHelp": "Inserisci il tuo codice Supporter per iniziare a goderti ulteriori funzioni che la community ha sviluppato per Emby", "MessageInvalidKey": "Chiave Sostenitore mancante o non valida.", - "ErrorMessageInvalidKey": "In order for any premium content to be registered, you must also be an Emby Supporter. Please donate and support the continued development of the core product. Thank you.", + "ErrorMessageInvalidKey": "Affinch\u00e8 un contenuto premium venga registrato, tu devi anche essere un Supporter di Emby. Per favore, fai una donazione e supporta il continuo sviluppo del prodotto principale. Grazie", "HeaderDisplaySettings": "Configurazione Monitor", "TabPlayTo": "Riproduci su", "LabelEnableDlnaServer": "Abilita server DLNA", - "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play Emby content.", + "LabelEnableDlnaServerHelp": "Consente ai dispositivi UPnP nella tua rete di sfogliare i contenuti di Emby e riprodurli", "LabelEnableBlastAliveMessages": "Invia segnale di presenza", "LabelEnableBlastAliveMessagesHelp": "Attivare questa opzione se il server non viene rilevato in modo affidabile da altri dispositivi UPnP in rete.", "LabelBlastMessageInterval": "Intervallo messaggi di presenza (secondi)", @@ -676,13 +680,13 @@ "NotificationOptionVideoPlayback": "La riproduzione video \u00e8 iniziata", "NotificationOptionAudioPlayback": "Riproduzione audio iniziata", "NotificationOptionGamePlayback": "Gioco avviato", - "NotificationOptionVideoPlaybackStopped": "Video Fermato", + "NotificationOptionVideoPlaybackStopped": "Riproduzione video interrotta", "NotificationOptionAudioPlaybackStopped": "Audio Fermato", "NotificationOptionGamePlaybackStopped": "Gioco Fermato", "NotificationOptionTaskFailed": "Operazione pianificata fallita", "NotificationOptionInstallationFailed": "Installazione fallita", "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto", - "NotificationOptionNewLibraryContentMultiple": "Nuovi contenuti aggiunti", + "NotificationOptionNewLibraryContentMultiple": "Nuovi contenuti aggiunti (multipli)", "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata", "NotificationOptionUserLockedOut": "Utente bloccato", "HeaderSendNotificationHelp": "Per impostazione predefinita, le notifiche vengono inviate alla casella della pagina principale. Sfoglia il catalogo plugin da installare opzioni di notifica aggiuntive.", @@ -764,7 +768,7 @@ "LabelUserLibrary": "Libreria utente:", "LabelUserLibraryHelp": "Selezionare la libreria utente da visualizzare sul dispositivo. Lasciare vuoto per ereditare l'impostazione predefinita.", "OptionPlainStorageFolders": "Visualizzare tutte le cartelle come normali cartelle di archiviazione", - "OptionPlainStorageFoldersHelp": "Se abilitato, tutte le cartelle sono rappresentati in DIDL come \"object.container.storageFolder\" invece che di tipo pi\u00f9 specifico, come \"object.container.person.musicArtist\".", + "OptionPlainStorageFoldersHelp": "Se abilitato, tutte le cartelle sono rappresentate in DIDL come \"object.container.storageFolder\" invece che di tipo pi\u00f9 specifico, come \"object.container.person.musicArtist\".", "OptionPlainVideoItems": "Mostra tutti i video come normali file video", "OptionPlainVideoItemsHelp": "Se attivato, tutti i video sono rappresentati in DIDL come \"object.item.videoItem\" invece che di tipo pi\u00f9 specifico, come \"object.item.videoItem.movie\".", "LabelSupportedMediaTypes": "Tipi di media supportati:", @@ -788,7 +792,7 @@ "LabelIconMaxHeight": "Altezza Icona massima:", "LabelIconMaxHeightHelp": "Risoluzione massima delle icone inviate tramite upnp:icon.", "LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", - "HeaderProfileServerSettingsHelp": "These values control how Emby Server will present itself to the device.", + "HeaderProfileServerSettingsHelp": "Questi valori controllano come il Server Emby si presenter\u00e0 ad un dispositivo.", "LabelMaxBitrate": "Bitrate Massimo:", "LabelMaxBitrateHelp": "Specificare un bitrate massimo in presenza di larghezza di banda limitata, o se il dispositivo impone il proprio limite.", "LabelMaxStreamingBitrate": "Massimo Bitrate streaming", @@ -829,7 +833,7 @@ "OptionEstimateContentLength": "Stimare la lunghezza contenuto durante la transcodifica", "OptionReportByteRangeSeekingWhenTranscoding": "Segnala che il server supporta la ricerca di byte durante la transcodifica", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Questo \u00e8 necessario per alcuni dispositivi che non hanno l'avanzamento rapido che funziona bene.", - "HeaderSubtitleDownloadingHelp": "When Emby scans your video files it can search for missing subtitles, and download them using a subtitle provider such as OpenSubtitles.org.", + "HeaderSubtitleDownloadingHelp": "Quando Emby fa la scansione dei tuoi file video pu\u00f2 cercare i sottotitoli mancanti e scaricarli usando un provider come OpenSubtitles.org.", "HeaderDownloadSubtitlesFor": "Scarica sottotitoli per:", "MessageNoChapterProviders": "Installare un plugin provider capitoli come ChapterDb per attivare le opzioni capitolo aggiuntive.", "LabelSkipIfGraphicalSubsPresent": "Salta se il video contiene gi\u00e0 i sottotitoli grafici", @@ -839,7 +843,7 @@ "HeaderDownloadChaptersFor": "Scarica i nomi dei capitoli per:", "LabelOpenSubtitlesUsername": "Nome utente Open Subtitles:", "LabelOpenSubtitlesPassword": "Password Open Subtitles:", - "HeaderChapterDownloadingHelp": "When Emby scans your video files it can download friendly chapter names from the internet using chapter plugins such as ChapterDb.", + "HeaderChapterDownloadingHelp": "Quando Emby esegue la scansione dei file video pu\u00f2 scaricare i nomi dei capitoli in modo semplice da internet utilizzando plugin di ricerca capitoli come ChapterDb.", "LabelPlayDefaultAudioTrack": "Riprodurre la traccia audio di default indipendentemente dalla lingua", "LabelSubtitlePlaybackMode": "Modalit\u00e0 Sottotitolo:", "LabelDownloadLanguages": "Scarica lingue:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Pagina Iniziale Sezione 2:", "LabelHomePageSection3": "Pagina Iniziale Sezione 3:", "LabelHomePageSection4": "Pagina Iniziale Sezione 4:", - "OptionMyViewsButtons": "Mie Viste (pulsanti)", - "OptionMyViews": "Mie Viste", - "OptionMyViewsSmall": "Mie Viste (piccola)", + "OptionMyMediaButtons": "I mei media (pulsanti)", + "OptionMyMedia": "I mei media", + "OptionMyMediaSmall": "I mei media (piccolo)", "OptionResumablemedia": "Riprendi", "OptionLatestMedia": "Ultimi media", "OptionLatestChannelMedia": "Ultime voci del canale", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Predefinito", "OptionCommunityMostWatchedSort": "Pi\u00f9 visti", "TabNextUp": "Da vedere", - "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Goditi le caratteristiche aggiuntive", + "PlaceholderUsername": "Username", + "HeaderBecomeProjectSupporter": "Diventa un Supporter di Emby", "MessageNoMovieSuggestionsAvailable": "Nessun suggerimento di film attualmente disponibile. Iniziare a guardare e valutare i vostri film, e poi tornare per i suggerimenti.", "MessageNoCollectionsAvailable": "Le collezioni ti permettono di goderti raccolte personalizzate di Film, Serie TV, Album, Libri e Giochi. Clicca sul + per iniziare a creare le tue Collezioni", "MessageNoPlaylistsAvailable": "Playlist ti permettere di mettere in coda gli elementi da riprodurre.Usa il tasto destro o tap e tieni premuto quindi seleziona elemento da aggiungere", @@ -921,7 +925,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", + "ViewTypePlaylists": "Playlist", "ViewTypeMovies": "Film", "ViewTypeTvShows": "Serie Tv", "ViewTypeGames": "Giochi", @@ -971,7 +975,7 @@ "TabNfo": "Nfo", "HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Advanced tab to configure options for your media types.", "LabelKodiMetadataUser": "Sincronizza i dati utente a nfo di per:", - "LabelKodiMetadataUserHelp": "Enable this to keep watch data in sync between Emby Server and Nfo files.", + "LabelKodiMetadataUserHelp": "Abilita questa opzione per mantenere i dati di orologio sincronizzati tra il Server Emby e i file NFO.", "LabelKodiMetadataDateFormat": "Data di uscita Formato:", "LabelKodiMetadataDateFormatHelp": "Tutte le date all'interno del nfo verranno letti e scritti utilizzando questo formato.", "LabelKodiMetadataSaveImagePaths": "Salva percorsi delle immagini all'interno dei file NFO", @@ -989,7 +993,7 @@ "TabLogs": "Logs", "HeaderServerLogFiles": "File log del Server:", "TabBranding": "Personalizza", - "HeaderBrandingHelp": "Customize the appearance of Emby to fit the needs of your group or organization.", + "HeaderBrandingHelp": "Personalizza l'aspetto di Emby per soddisfare le esigenze del tuo gruppo o della tua organizzazione.", "LabelLoginDisclaimer": "Avviso Login:", "LabelLoginDisclaimerHelp": "Questo verr\u00e0 visualizzato nella parte inferiore della pagina di accesso.", "LabelAutomaticallyDonate": "Donare automaticamente questo importo ogni mese", @@ -999,13 +1003,13 @@ "TitleServer": "Server", "LabelCache": "Cache:", "LabelLogs": "Log:", - "LabelMetadata": "Metadata:", + "LabelMetadata": "Metadati:", "LabelImagesByName": "Immagini per nome:", "LabelTranscodingTemporaryFiles": "Transcodifica file temporanei:", "HeaderLatestMusic": "Musica Recente", "HeaderBranding": "Personalizza", "HeaderApiKeys": "Chiavi Api", - "HeaderApiKeysHelp": "External applications are required to have an Api key in order to communicate with Emby Server. Keys are issued by logging in with an Emby account, or by manually granting the application a key.", + "HeaderApiKeysHelp": "Le Applicazioni esterne devono avere una chiave API per comunicare con il Server Emby. Le chiavi sono emesse accedendo con un account Emby, o fornendo manualmente una chiave all'applicazione.", "HeaderApiKey": "Chiave Api", "HeaderApp": "App", "HeaderDevice": "Dispositivo", @@ -1015,8 +1019,8 @@ "HeaderNewApiKey": "Nuova Chiave Api", "LabelAppName": "Nome app", "LabelAppNameExample": "Esempio: Sickbeard, NzbDrone", - "HeaderNewApiKeyHelp": "Grant an application permission to communicate with Emby Server.", - "HeaderHttpHeaders": "Http Headers", + "HeaderNewApiKeyHelp": "Concedere un permesso per applicazione al fine di comunicare con il Server Emby.", + "HeaderHttpHeaders": "Intestazioni Http", "HeaderIdentificationHeader": "Identification Header", "LabelValue": "valore:", "LabelMatchType": "Match type:", @@ -1119,7 +1123,7 @@ "UserDeletedWithName": "Utente {0} \u00e8 stato cancellato", "MessageServerConfigurationUpdated": "Configurazione server aggioprnata", "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} \u00e8 stata aggiornata", - "MessageApplicationUpdated": "Emby Server has been updated", + "MessageApplicationUpdated": "Il Server Emby \u00e8 stato aggiornato", "AuthenticationSucceededWithUserName": "{0} Autenticati con successo", "FailedLoginAttemptWithUserName": "Login fallito da {0}", "UserDownloadingItemWithValues": "{0} sta scaricando {1}", @@ -1140,14 +1144,14 @@ "ViewTypeLiveTvRecordingGroups": "Registrazioni", "ViewTypeLiveTvChannels": "canali", "LabelEasyPinCode": "Codice Pin", - "EasyPasswordHelp": "Your easy pin code is used for offline access with supported Emby apps, and can also be used for easy in-network sign in.", + "EasyPasswordHelp": "Il codice pin facile viene utilizzato per l'accesso offline con le app Emby supportate, e pu\u00f2 essere utilizzato anche per una facile accesso in rete.", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN.", "LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Emby 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.", "HeaderPassword": "Password", "HeaderLocalAccess": "Accesso locale", "HeaderViewOrder": "Visualizza ordine", "ButtonResetEasyPassword": "Resetta codice PIN", - "LabelSelectUserViewOrder": "Choose the order your views will be displayed in within Emby apps", + "LabelSelectUserViewOrder": "Scegli l'ordine in cui le tue viste saranno mostrate all'interno della app di Emby", "LabelMetadataRefreshMode": "Metadata (modo Aggiornamento)", "LabelImageRefreshMode": "Immagine (modo Aggiornamento)", "OptionDownloadMissingImages": "Immagini mancanti", @@ -1164,7 +1168,7 @@ "LabelIfYouWishToContinueWithDeletion": "Se si desidera continuare, si prega di confermare inserendo il valore di:", "ButtonIdentify": "Identifica", "LabelAlbumArtist": "Artista Album", - "LabelAlbumArtists": "Album artists:", + "LabelAlbumArtists": "Artisti:", "LabelAlbum": "Album:", "LabelCommunityRating": "Voto Comunit\u00e0:", "LabelVoteCount": "Totale Voti:", @@ -1249,10 +1253,10 @@ "OptionSaveMetadataAsHidden": "Salvare i metadati e le immagini come file nascosti", "LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione biblioteca", "LabelExtractChaptersDuringLibraryScanHelp": "Se abilitata, le immagini capitolo verranno estratti quando i video vengono importati durante la scansione della libreria. Se disabilitata verranno estratti durante le immagini dei capitoli programmati compito, permettendo la scansione biblioteca regolare per completare pi\u00f9 velocemente.", - "LabelConnectGuestUserName": "Their Emby username or email address:", - "LabelConnectUserName": "Emby username\/email:", + "LabelConnectGuestUserName": "Username di Emby o indirizzo email:", + "LabelConnectUserName": "Username\/email di Emby:", "LabelConnectUserNameHelp": "Connect this user to an Emby account to enable easy sign-in access from any Emby app without having to know the server ip address.", - "ButtonLearnMoreAboutEmbyConnect": "Learn more about Emby Connect", + "ButtonLearnMoreAboutEmbyConnect": "Scopri di pi\u00f9 su Emby Connect", "LabelExternalPlayers": "Player esterni:", "LabelExternalPlayersHelp": "Pulsanti di visualizzazione di riprodurre contenuti in lettori esterni. Questo \u00e8 disponibile solo su dispositivi che supportano schemi URL, generalmente Android e iOS. Con i giocatori esterni vi \u00e8 generalmente alcun supporto per il controllo remoto o ripresa.", "HeaderSubtitleProfile": "Profilo sottotitolo", @@ -1300,7 +1304,7 @@ "TitleDevices": "Dispositivi", "TabCameraUpload": "Caricamenti Fotocamera", "TabDevices": "Dispositivi", - "HeaderCameraUploadHelp": "Automatically upload photos and videos taken from your mobile devices into Emby.", + "HeaderCameraUploadHelp": "Fa automaticamente l'upload su Emby delle foto e dei video residenti sul tuo telefonino", "MessageNoDevicesSupportCameraUpload": "Al momento non si dispone di dispositivi che supportano il caricamento della fotocamera.", "LabelCameraUploadPath": "Fotocamera percorso di upload:", "LabelCameraUploadPathHelp": "Selezionare un percorso di caricamento personalizzato, se lo si desidera. Se non specificato verr\u00e0 utilizzata una cartella predefinita. Se si utilizza un percorso personalizzato che dovr\u00e0 anche essere aggiunti nella zona di installazione della libreria.", @@ -1309,10 +1313,10 @@ "LabelCustomDeviceDisplayName": "Nome da visualizzare:", "LabelCustomDeviceDisplayNameHelp": "Fornire un nome di visualizzazione personalizzato o lasciare vuoto per utilizzare il nome riportato dal dispositivo.", "HeaderInviteUser": "Invita utente", - "LabelConnectGuestUserNameHelp": "This is the username that your friend uses to sign in to the Emby website, or their email address.", - "HeaderInviteUserHelp": "Sharing your media with friends is easier than ever before with Emby Connect.", + "LabelConnectGuestUserNameHelp": "Questo \u00e8 lo username che il tuo amico utilizza per accedere al sito web Emby, o il suo indirizzo email.", + "HeaderInviteUserHelp": "Condividere i tuo file multimediali con gli amici \u00e8 pi\u00f9 facile che mai con Emby Connect.", "ButtonSendInvitation": "Invia Invito", - "HeaderSignInWithConnect": "Sign in with Emby Connect", + "HeaderSignInWithConnect": "Accedi con Emby Connect", "HeaderGuests": "ospiti", "HeaderLocalUsers": "Utenti locale", "HeaderPendingInvitations": "Inviti in sospeso", @@ -1327,8 +1331,8 @@ "OptionEveryday": "Tutti i giorni", "OptionWeekdays": "Feriali", "OptionWeekends": "Il Weekend", - "MessageProfileInfoSynced": "User profile information synced with Emby Connect.", - "HeaderOptionalLinkEmbyAccount": "Optional: Link your Emby account", + "MessageProfileInfoSynced": "Informazioni sul profilo utente sincronizzate con Emby Connect.", + "HeaderOptionalLinkEmbyAccount": "Opzionale: collega il tuo account Emby", "ButtonTrailerReel": "Trailer b.", "HeaderTrailerReel": "Trailer b.", "OptionPlayUnwatchedTrailersOnly": "Riproduci solo i trailer non visti", @@ -1378,13 +1382,36 @@ "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", - "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", - "OptionTVMovies": "TV Movies", - "HeaderUpcomingMovies": "Upcoming Movies", - "HeaderUpcomingPrograms": "Upcoming Programs", + "LabelEnableInternetMetadataForTvPrograms": "Fa il download da Internet dei metadati per:", + "OptionTVMovies": "Film TV", + "HeaderUpcomingMovies": "Film in arrivo", + "HeaderUpcomingSports": "Sport in arrivo", + "HeaderUpcomingPrograms": "Programmi in arrivo", "ButtonMoreItems": "Pi\u00f9...", - "LabelShowLibraryTileNames": "Show library tile names", + "LabelShowLibraryTileNames": "Mostra i nomi di file di libreria", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottle": "Abilita il throttling", + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Velocit\u00e0 limite di upload (Mbps)", + "OptionAllowSyncTranscoding": "Abilita la sincronizzazione che necessita di transcodifica", + "HeaderPlayback": "Riproduzione", + "OptionAllowAudioPlaybackTranscoding": "Abilita la riproduzione di audio che necessita di transcodifica", + "OptionAllowVideoPlaybackTranscoding": "Abilita la riproduzione di video che necessita di transcodifica", + "OptionAllowMediaPlaybackTranscodingHelp": "Gli utenti riceveranno messaggi esplicativi quando il contenuto non \u00e8 riproducibile a causa della policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Bitrate limite del client remoto (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "Limite della CPU:", + "LabelConversionCpuCoreLimitHelp": "Limiita il numero di CPU da utilizzare durante l'operazione di sincronizzazione.", + "OptionEnableFullSpeedConversion": "Abilita conversione a velocit\u00e0 piena", + "OptionEnableFullSpeedConversionHelp": "Per default, la sincronizzazione viene eseguita a bassa velocit\u00e0 per minimizzare il consumo di risorse", + "HeaderPlaylists": "Playlist", + "HeaderSelectDate": "Seleziona la data", + "HeaderWelcomeExclamation": "Benvenuto!", + "HeaderMyPreferences": "Le miei preferenze", + "ButtonMyPreferencesWelcomeYes": "Grazie, preferisco impostare le mie preferenze adesso", + "ButtonMyPreferencesWelcomeNo": "No grazie, provveder\u00f2 in seguito.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Desideri impostare le tue preferenze ora?", + "ToAccessPreferencesHelp": "Per accedere alle preferenze in un secondo tempo, fare clic sull'icona utente presente in alto a destra e seleziona Le Mie Preferenze." }
\ 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 0f9ae2bed..6f939d79c 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json @@ -29,7 +29,7 @@ "WizardCompleted": "\u04d8\u0437\u0456\u0440\u0448\u0435 \u0431\u04b1\u043b \u0431\u0456\u0437\u0433\u0435 \u043a\u0435\u0440\u0435\u0433\u0456\u043d\u0456\u04a3 \u0431\u04d9\u0440\u0456 \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b. Emby \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\u0439 \u0431\u0430\u0441\u0442\u0430\u0434\u044b. \u0415\u043d\u0434\u0456 \u043a\u0435\u0439\u0431\u0456\u0440 \u0431\u0456\u0437\u0434\u0456\u04a3 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043c\u044b\u0437\u0431\u0435\u043d \u0442\u0430\u043d\u044b\u0441\u044b\u04a3\u044b\u0437, \u0436\u04d9\u043d\u0435 \u043a\u0435\u0439\u0456\u043d <b>\u0414\u0430\u0439\u044b\u043d<\/b> \u0442\u04af\u0439\u043c\u0435\u0448\u0456\u0433\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437, \u0441\u043e\u043d\u0434\u0430 <b>\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b<\/b> \u049b\u0430\u0440\u0430\u0443\u0493\u0430 \u0448\u044b\u0493\u044b \u043a\u0435\u043b\u0435\u0434\u0456.", "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.", + "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 \u0418\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", @@ -52,6 +52,8 @@ "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 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u044b\u049b \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u044b \u0431\u0435\u0442\u0456\u043d\u0435\u043d Emby Connect \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u043e\u043d\u044b\u04a3 \u0442\u0456\u0440\u043a\u0435\u043b\u0433\u0456\u0441\u0456\u043d \u0431\u0430\u0439\u043b\u0430\u043d\u044b\u0441\u0442\u0440\u0443\u044b\u04a3\u044b\u0437 \u049b\u0430\u0436\u0435\u0442.", "LabelPinCode": "PIN-\u043a\u043e\u0434:", + "OptionHideWatchedContentFromLatestMedia": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0435\u043d \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d \u043c\u0430\u0437\u043c\u04b1\u043d\u0434\u044b \u0436\u0430\u0441\u044b\u0440\u0443", + "HeaderSync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", "ButtonOk": "\u0416\u0430\u0440\u0430\u0439\u0434\u044b", "ButtonCancel": "\u0411\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443", "ButtonExit": "\u0428\u044b\u0493\u0443", @@ -76,7 +78,7 @@ "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.", + "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 \u043f\u0440\u043e\u0446\u0435\u0441\u0456 \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", @@ -112,14 +114,14 @@ "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", + "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 \u0418\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 Emby Server \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", + "TabProfile": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b", "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", @@ -143,7 +145,7 @@ "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", + "TabProfiles": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\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", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "\u04b0\u0441\u044b\u043d\u044b\u0441\u0442\u0430\u0440", "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", @@ -300,7 +303,7 @@ "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", + "ButtonHelp": "\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u0433\u0456 \u0430\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", @@ -401,9 +404,10 @@ "ButtonRefresh": "\u0416\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", "ButtonAdvancedRefresh": "\u041a\u0435\u04a3\u0435\u0439\u0442\u0456\u043b\u0433\u0435\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443", "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", - "OptionRecordOnAllChannels": "\u0411\u0435\u0440\u0456\u043b\u0456\u043c\u0434\u0456 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u043d \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", - "OptionRecordAnytime": "\u0411\u0435\u0440\u0456\u043b\u0456\u043c\u0434\u0456 \u04d9\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", + "OptionRecordOnAllChannels": "\u0411\u0430\u0440\u043b\u044b\u049b \u0430\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u043d \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", + "OptionRecordAnytime": "\u04d8\u0440 \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", "OptionRecordOnlyNewEpisodes": "\u0422\u0435\u043a \u049b\u0430\u043d\u0430 \u0436\u0430\u04a3\u0430 \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u0436\u0430\u0437\u044b\u043f \u0430\u043b\u0443", + "HeaderRepeatingOptions": "\u049a\u0430\u0439\u0442\u0430\u043b\u0430\u043c\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", "HeaderDays": "\u041a\u04af\u043d\u0434\u0435\u0440", "HeaderActiveRecordings": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456 \u0436\u0430\u0437\u0443\u043b\u0430\u0440", "HeaderLatestRecordings": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u04a3\u0433\u0456 \u0436\u0430\u0437\u0431\u0430\u043b\u0430\u0440", @@ -414,7 +418,7 @@ "ButtonDelete": "\u0416\u043e\u044e", "ButtonRemove": "\u0410\u043b\u0430\u0441\u0442\u0430\u0443", "OptionRecordSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043d\u044b \u0436\u0430\u0437\u0443", - "HeaderDetails": "\u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440", + "HeaderDetails": "\u0422\u043e\u043b\u044b\u049b \u043c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440", "TitleLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", "LabelNumberOfGuideDays": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0434\u0435\u0433\u0456 \u043a\u04af\u043d \u0441\u0430\u043d\u044b:", "LabelNumberOfGuideDaysHelp": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a \u043a\u04af\u043d\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u0410\u043d\u044b\u049b\u0442\u0430\u0493\u044b\u0448 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u049b\u04b1\u043d\u0434\u044b\u043b\u044b\u0493\u044b\u043d \u043a\u04e9\u0442\u0435\u0440\u0435\u0434\u0456 \u0434\u0435 \u0430\u043b\u0434\u044b\u043d-\u0430\u043b\u0430 \u0436\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0443 \u04af\u0448\u0456\u043d \u049b\u0430\u0431\u0456\u043b\u0435\u0442\u0456\u043d \u0436\u04d9\u043d\u0435 \u043a\u04e9\u0431\u0456\u0440\u0435\u043a \u0442\u0456\u0437\u0431\u0435\u043b\u0435\u0440 \u043a\u04e9\u0440\u0443\u0434\u0456 \u049b\u0430\u043c\u0442\u0430\u043c\u0430\u0441\u044b\u0437 \u0435\u0442\u0435\u0434\u0456, \u0431\u0456\u0440\u0430\u049b \u0431\u04b1\u043b \u0436\u04af\u043a\u0442\u0435\u0443 \u0443\u0430\u049b\u044b\u0442\u044b\u043d \u0434\u0430 \u0441\u043e\u0437\u0434\u044b\u0440\u0430\u0434\u044b. \u0410\u0432\u0442\u043e\u0442\u0430\u04a3\u0434\u0430\u0443 \u0430\u0440\u043d\u0430 \u0441\u0430\u043d\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0456\u043d\u0435\u0434\u0456.", @@ -517,10 +521,10 @@ "LabelEnableDlnaDebugLoggingHelp": "\u04e8\u0442\u0435 \u0430\u0443\u049b\u044b\u043c\u0434\u044b \u0436\u04b1\u0440\u043d\u0430\u043b \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b \u0436\u0430\u0441\u0430\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0430\u049b\u0430\u0443\u043b\u044b\u049b\u0442\u0430\u0440\u0434\u044b \u0436\u043e\u044e \u04af\u0448\u0456\u043d \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0493\u0430\u043d \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043b\u0430\u0434\u044b.", "LabelEnableDlnaClientDiscoveryInterval": "\u041a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0434\u0456 \u0442\u0430\u0443\u044b\u043f \u0430\u0448\u0443 \u0430\u0440\u0430\u043b\u044b\u0493\u044b, \u0441:", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Emby \u043e\u0440\u044b\u043d\u0434\u0430\u0493\u0430\u043d SSDP \u0441\u0430\u0443\u0430\u043b \u0441\u0430\u043b\u0443 \u0430\u0440\u0430 \u04b1\u0437\u0430\u049b\u0442\u044b\u0493\u044b\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u0442\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u0439\u0434\u044b.", - "HeaderCustomDlnaProfiles": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440", - "HeaderSystemDlnaProfiles": "\u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440", - "CustomDlnaProfilesHelp": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b \u043c\u0430\u049b\u0441\u0430\u0442\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0456 \u0436\u0430\u0441\u0430\u0443 \u043d\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0430\u043d\u044b\u049b\u0442\u0430\u0443.", - "SystemDlnaProfilesHelp": "\u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440 \u0442\u0435\u043a \u043e\u049b\u0443 \u04af\u0448\u0456\u043d. \u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0456\u04a3 \u04e9\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440\u0456 \u0436\u0430\u04a3\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u0433\u0435 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.", + "HeaderCustomDlnaProfiles": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440", + "HeaderSystemDlnaProfiles": "\u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440", + "CustomDlnaProfilesHelp": "\u0416\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b \u043c\u0430\u049b\u0441\u0430\u0442\u044b \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u044b \u0436\u0430\u0441\u0430\u0443 \u043d\u0435 \u0436\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u044b \u049b\u0430\u0439\u0442\u0430 \u0430\u043d\u044b\u049b\u0442\u0430\u0443.", + "SystemDlnaProfilesHelp": "\u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440 \u0442\u0435\u043a \u043e\u049b\u0443 \u04af\u0448\u0456\u043d. \u0416\u04af\u0439\u0435\u043b\u0456\u043a \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u044b\u04a3 \u04e9\u0437\u0433\u0435\u0440\u0456\u0441\u0442\u0435\u0440\u0456 \u0436\u0430\u04a3\u0430 \u0442\u0435\u04a3\u0448\u0435\u043b\u0433\u0435\u043d \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0493\u0430 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.", "TitleDashboard": "\u0411\u0430\u049b\u044b\u043b\u0430\u0443 \u0442\u0430\u049b\u0442\u0430\u0441\u044b", "TabHome": "\u0411\u0430\u0441\u0442\u044b", "TabInfo": "\u041f\u0440\u043e\u0444\u0430\u0439\u043b \u0442\u0443\u0440\u0430\u043b\u044b", @@ -547,7 +551,7 @@ "LabelPublicHttpsPort": "\u0416\u0430\u0440\u0438\u044f https-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelPublicHttpsPortHelp": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 https-\u043f\u043e\u0440\u0442\u044b\u043d\u0430 \u0441\u0430\u043b\u044b\u0441\u0442\u044b\u0440\u044b\u043b\u0443\u044b \u0442\u0438\u0456\u0441 \u0436\u0430\u0440\u0438\u044f \u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456.", "LabelEnableHttps": "HTTPS \u0445\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0435\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0443", - "LabelEnableHttpsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440 https url \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0439\u0434\u044b. \u0411\u04b1\u043b \u04d9\u043b\u0456 \u0434\u0435 https \u049b\u043e\u043b\u0434\u0430\u043c\u0430\u0439\u0442\u044b\u043d \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0434\u0456\u04a3 \u0436\u04b1\u043c\u044b\u0441\u044b\u043d \u04af\u0437\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d.", + "LabelEnableHttpsHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0441\u0430, \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u0441\u0435\u0440\u0432\u0435\u0440 HTTPS URL \u0441\u044b\u0440\u0442\u049b\u044b \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439 \u0440\u0435\u0442\u0456\u043d\u0434\u0435 \u0431\u0430\u044f\u043d\u0434\u0430\u0439\u0434\u044b.", "LabelHttpsPort": "\u0416\u0435\u0440\u0433\u0456\u043b\u0456\u043a\u0442\u0456 https-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456:", "LabelHttpsPortHelp": "Emby HTTPS-\u0441\u0435\u0440\u0432\u0435\u0440\u0456 \u0431\u0430\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043b\u0443\u0493\u0430 \u0442\u0438\u0456\u0441\u0442\u0456 TCP-\u043f\u043e\u0440\u0442 \u043d\u04e9\u043c\u0456\u0440\u0456.", "LabelWebSocketPortNumber": "\u0412\u0435\u0431-\u0441\u043e\u043a\u0435\u0442 \u043f\u043e\u0440\u0442\u044b\u043d\u044b\u04a3 \u043d\u04e9\u043c\u0456\u0440\u0456:", @@ -654,7 +658,7 @@ "LabelBlastMessageInterval": "\u0411\u0435\u043b\u0441\u0435\u043d\u0434\u0456\u043b\u0456\u043a\u0442\u0456 \u0442\u0435\u043a\u0441\u0435\u0440\u0443 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u0440 \u0430\u0440\u0430\u043b\u044b\u0493\u044b, \u0441", "LabelBlastMessageIntervalHelp": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0431\u0435\u043b\u0441\u0435\u043d\u0434\u0456\u043b\u0456\u0433\u0456\u043d \u0442\u0435\u043a\u0441\u0435\u0440\u0443 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u0440\u0434\u044b\u04a3 \u0430\u0440\u0430 \u04b1\u0437\u0430\u049b\u0442\u044b\u0493\u044b\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u0442\u0430\u0440 \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u0439\u0434\u044b.", "LabelDefaultUser": "\u04d8\u0434\u0435\u043f\u043a\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b:", - "LabelDefaultUserHelp": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430 \u049b\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0441\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0443\u0456 \u0442\u0438\u0456\u0441\u0442\u0456\u043b\u0456\u0433\u0456\u043d \u0430\u043d\u044b\u049b\u0442\u0430\u0439\u0434\u044b. \u041f\u0440\u043e\u0444\u0438\u043b\u044c\u0434\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0493\u0430\u043d\u0434\u0430 \u0431\u04b1\u043b \u04d9\u0440 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b \u04af\u0448\u0456\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", + "LabelDefaultUserHelp": "\u049a\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d\u0434\u0430 \u049b\u0430\u0439 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0441\u044b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u043d\u0443\u0456 \u0442\u0438\u0456\u0441\u0442\u0456\u043b\u0456\u0433\u0456\u043d \u0430\u043d\u044b\u049b\u0442\u0430\u0439\u0434\u044b. \u041f\u0440\u043e\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0493\u0430\u043d\u0434\u0430 \u0431\u04b1\u043b \u04d9\u0440 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b \u04af\u0448\u0456\u043d \u049b\u0430\u0439\u0442\u0430 \u0442\u0430\u0493\u0430\u0439\u044b\u043d\u0434\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "TitleDlna": "DLNA", "TitleChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", "HeaderServerSettings": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", @@ -839,7 +843,7 @@ "HeaderDownloadChaptersFor": "\u041c\u044b\u043d\u0430\u0493\u0430\u043d \u0441\u0430\u0445\u043d\u0430\u043b\u0430\u0440 \u0430\u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u0443:", "LabelOpenSubtitlesUsername": "Open Subtitles \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b:", "LabelOpenSubtitlesPassword": "Open Subtitles \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437\u0456:", - "HeaderChapterDownloadingHelp": "Emby \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u0431\u04b1\u043b \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d ChapterDb \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0430\u0445\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u04a3\u0430\u0439 \u0441\u0430\u0445\u043d\u0430 \u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", + "HeaderChapterDownloadingHelp": "Emby \u0431\u0435\u0439\u043d\u0435\u0444\u0430\u0439\u043b\u0434\u0430\u0440\u0434\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0433\u0435\u043d\u0434\u0435 \u0431\u04b1\u043b \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d ChapterDb \u0441\u0438\u044f\u049b\u0442\u044b \u0441\u0430\u0445\u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0434\u0435\u0440\u0456 \u0430\u0440\u049b\u044b\u043b\u044b \u043e\u04a3\u0430\u0439 \u0441\u0430\u0445\u043d\u0430 \u0442\u0430\u0443\u043b\u0430\u0440\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.", "LabelPlayDefaultAudioTrack": "\u0422\u0456\u043b\u0433\u0435 \u049b\u0430\u0442\u044b\u0441\u0441\u044b\u0437 \u04d9\u0434\u0435\u043f\u043a\u0456 \u0434\u044b\u0431\u044b\u0441 \u0436\u043e\u043b\u0448\u044b\u0493\u044b\u043d \u043e\u0439\u043d\u0430\u0442\u0443", "LabelSubtitlePlaybackMode": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0440\u0435\u0436\u0456\u043c\u0456:", "LabelDownloadLanguages": "\u0416\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0430\u0442\u044b\u043d \u0442\u0456\u043b\u0434\u0435\u0440:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442 2-\u0431\u04e9\u043b\u0456\u043c:", "LabelHomePageSection3": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442 3-\u0431\u04e9\u043b\u0456\u043c:", "LabelHomePageSection4": "\u0411\u0430\u0441\u0442\u044b \u0431\u0435\u0442 4-\u0431\u04e9\u043b\u0456\u043c:", - "OptionMyViewsButtons": "\u041c\u0435\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043c (\u0442\u04af\u0439\u043c\u0435\u0448\u0456\u043a\u0442\u0435\u0440)", - "OptionMyViews": "\u041c\u0435\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043c", - "OptionMyViewsSmall": "\u041c\u0435\u043d\u0456\u04a3 \u0430\u0441\u043f\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043c (\u044b\u049b\u0448\u0430\u043c)", + "OptionMyMediaButtons": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c (\u0442\u04af\u0439\u043c\u0435\u0448\u0456\u043a\u0442\u0435\u0440)", + "OptionMyMedia": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c", + "OptionMyMediaSmall": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043c (\u044b\u049b\u0448\u0430\u043c)", "OptionResumablemedia": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u044b", "OptionLatestMedia": "\u0415\u04a3 \u043a\u0435\u0439\u043d\u0433\u0456 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440", "OptionLatestChannelMedia": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b\u04a3 \u0435\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u0442\u0430\u0440\u043c\u0430\u049b\u0442\u0430\u0440\u044b", @@ -902,8 +906,8 @@ "OptionDefaultSort": "\u04d8\u0434\u0435\u043f\u043a\u0456", "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", + "PlaceholderUsername": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0430\u0442\u044b", "HeaderBecomeProjectSupporter": "Emby \u0436\u0430\u049b\u0442\u0430\u0443\u0448\u044b\u0441\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\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.", @@ -1378,13 +1382,36 @@ "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", - "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", + "LabelEnableInternetMetadataForTvPrograms": "\u041c\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \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", + "HeaderUpcomingSports": "\u041a\u04af\u0442\u0456\u043b\u0433\u0435\u043d \u0441\u043f\u043e\u0440\u0442", "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.", "OptionEnableTranscodingThrottle": "\u0420\u0435\u0442\u0442\u0435\u0443\u0434\u0456 \u049b\u043e\u0441\u0443", - "OptionEnableTranscodingThrottleHelp": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043e\u0440\u0442\u0430\u043b\u044b\u049b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u0435\u0442\u0442\u0435\u0443 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0439\u0434\u044b." + "OptionEnableTranscodingThrottleHelp": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0434\u0456\u04a3 \u043e\u0440\u0442\u0430\u043b\u044b\u049b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u044b\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u044b\u043d \u0430\u0437\u0430\u0439\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u0435\u0442\u0442\u0435\u0443 \u049b\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u043b\u0430\u0439\u044b\u049b\u0442\u0430\u0439\u0434\u044b.", + "LabelUploadSpeedLimit": "\u0416\u04af\u043a\u0442\u0435\u043f \u0431\u0435\u0440\u0443 \u0436\u044b\u043b\u0434\u0430\u043c\u0434\u044b\u0493\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456, \u041c\u0431\u0438\u0442\/\u0441", + "OptionAllowSyncTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "HeaderPlayback": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u043e\u0439\u043d\u0430\u0442\u0443", + "OptionAllowAudioPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0434\u044b\u0431\u044b\u0441 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowVideoPlaybackTranscoding": "\u049a\u0430\u0439\u0442\u0430 \u043a\u043e\u0434\u0442\u0430\u0443\u0493\u0430 \u0442\u0430\u043b\u0430\u0431\u044b \u0431\u0430\u0440 \u0431\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u04af\u0448\u0456\u043d \u0440\u04b1\u049b\u0441\u0430\u0442 \u0435\u0442\u0443", + "OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440 \u04e9\u0437\u0434\u0435\u0440\u0456\u043d\u0456\u04a3 \u0441\u0430\u044f\u0441\u0430\u0442\u0442\u0430\u0440\u044b\u043d\u0430 \u043d\u0435\u0433\u0456\u0437\u0434\u0435\u043b\u0433\u0435\u043d \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u043c\u0430\u0439\u0442\u044b\u043d \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430\u0493\u044b \u049b\u0430\u0442\u0435 \u0442\u0443\u0440\u0430\u043b\u044b \u043e\u04a3\u0430\u0439 \u0445\u0430\u0431\u0430\u0440\u043b\u0430\u0440\u0434\u044b \u0430\u043b\u0430\u0434\u044b.", + "TabStreaming": "\u0410\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443", + "LabelRemoteClientBitrateLimit": "\u0410\u043b\u044b\u0441\u0442\u0430\u0493\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d\u044b\u04a3 \u0448\u0435\u0433\u0456, \u041c\u0431\u0438\u0442\/\u0441", + "LabelRemoteClientBitrateLimitHelp": "\u041c\u0456\u043d\u0434\u0435\u0442\u0442\u0456 \u0435\u043c\u0435\u0441 \u0431\u0430\u0440\u043b\u044b\u049b \u0430\u043b\u044b\u0441\u0442\u0430\u0493\u044b \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440 \u04af\u0448\u0456\u043d \u049b\u0430\u0440\u049b\u044b\u043d \u0448\u0435\u0433\u0456. \u0411\u04b1\u043b \u049b\u043e\u0441\u044b\u043b\u044b\u043c\u044b\u04a3\u044b\u0437\u0434\u044b\u04a3 \u04e9\u04a3\u0434\u0435\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456\u043d\u0435 \u049b\u0430\u0440\u0430\u0493\u0430\u043d\u0434\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0442\u0435\u0440\u0434\u0456\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b\u043b\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d \u0441\u0430\u0443\u0430\u043b\u0434\u0430\u0440\u044b\u043d\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u044b \u0431\u043e\u043b\u044b\u043f \u0442\u0430\u0431\u044b\u043b\u0430\u0434\u044b.", + "LabelConversionCpuCoreLimit": "\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043b\u044b\u049b \u04e9\u0437\u0435\u043a\u0442\u0435\u0440 \u0448\u0435\u0433\u0456:", + "LabelConversionCpuCoreLimitHelp": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u043b\u0456\u043a \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0442\u044b\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043b\u044b\u049b \u04e9\u0437\u0435\u043a\u0442\u0435\u0440\u0434\u0456\u04a3 \u0441\u0430\u043d\u044b\u043d \u0448\u0435\u043a\u0442\u0435\u0443.", + "OptionEnableFullSpeedConversion": "\u0422\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443\u0434\u0456\u04a3 \u0442\u043e\u043b\u044b\u049b \u0436\u044b\u043b\u0434\u0430\u043c\u043b\u044b\u0493\u044b\u043d \u049b\u043e\u0441\u0443", + "OptionEnableFullSpeedConversionHelp": "\u0420\u0435\u0441\u0443\u0440\u0441\u0442\u0430\u0440 \u0442\u04b1\u0442\u044b\u043d\u0443\u0434\u044b \u0431\u0430\u0440\u044b\u043d\u0448\u0430 \u0430\u0437\u0430\u0439\u0442\u0443 \u04af\u0448\u0456\u043d \u04af\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443\u043b\u0456\u043a \u0442\u04af\u0440\u043b\u0435\u043d\u0434\u0456\u0440\u0443 \u04d9\u0434\u0435\u043f\u043a\u0456\u0434\u0435 \u0442\u04e9\u043c\u0435\u043d \u0436\u044b\u043b\u0434\u0430\u043c\u0434\u044b\u049b\u043f\u0435\u043d \u043e\u0440\u044b\u043d\u0434\u0430\u043b\u0430\u0434\u044b.", + "HeaderPlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440", + "HeaderSelectDate": "\u041a\u04af\u043d\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u0443", + "HeaderWelcomeExclamation": "\u049a\u043e\u0448 \u043a\u0435\u043b\u0434\u0456\u04a3\u0456\u0437!", + "HeaderMyPreferences": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c", + "ButtonMyPreferencesWelcomeYes": "\u0418\u04d9, \u043c\u0435\u043d \u0435\u043d\u0434\u0456 \u043c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u043c\u044b\u043d.", + "ButtonMyPreferencesWelcomeNo": "\u0416\u043e\u049b, \u0440\u0430\u0445\u043c\u0435\u0442, \u043c\u0435\u043d \u043e\u043d\u044b \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u0456\u0441\u0442\u0435\u0439\u043c\u0456\u043d.", + "MyPreferencesWelcomeMessage1": "\u0421\u0456\u0437 \u049b\u0430\u043b\u0430\u0439 \u0442\u0430\u043c\u0430\u0448\u0430\u043b\u0430\u0439\u0442\u044b\u043d\u044b\u043d \u043e\u0439\u043b\u0430\u0441\u0442\u044b\u0440\u044b\u043f \u0441\u0456\u0437\u0434\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u04a3\u044b\u0437\u0434\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0442\u0456\u043c\u0456\u0437. \u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0434\u0456 \u0440\u0435\u0442\u0442\u0435\u0443 \u0430\u0440\u049b\u044b\u043b\u044b \u043c\u0430\u0437\u043c\u04b1\u043d \u0431\u0435\u0437\u0435\u043d\u0434\u0456\u0440\u0443\u0456 \u043c\u0435\u043d \u0442\u043e\u043f\u0442\u0430\u0441\u0442\u044b\u0440\u0443\u044b \u043a\u0435\u0437 \u043a\u0435\u043b\u0433\u0435\u043d \u0443\u0430\u049b\u044b\u0442\u0442\u0430 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0443\u0456 \u043c\u04af\u043c\u043a\u0456\u043d. \u0421\u0456\u0437\u0434\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437 \u0431\u0430\u0440\u043b\u044b\u049b Emby \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u043b\u0430\u0440\u044b\u043d\u0434\u0430 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b.", + "MyPreferencesWelcomeMessage2": "\u0421\u0456\u0437 \u0435\u043d\u0434\u0456 \u04e9\u0437 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043d\u0456\u0437\u0434\u0456 \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d \u049b\u0430\u043b\u0430\u0439\u0441\u044b\u0437 \u0431\u0430?", + "ToAccessPreferencesHelp": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u04a3\u0456\u0437\u0433\u0435 \u043a\u0435\u0439\u0456\u043d\u0456\u0440\u0435\u043a \u049b\u0430\u0442\u044b\u043d\u0430\u0443 \u04af\u0448\u0456\u043d, \u04af\u0441\u0442\u0456\u04a3\u0433\u0456 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u043c\u0435\u0441\u0456 \u043e\u04a3 \u0436\u0430\u0493\u044b\u043d\u0434\u0430\u0493\u044b \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0431\u0435\u043b\u0433\u0456\u0448\u0435\u0441\u0456\u043d \u0431\u0430\u0441\u044b\u04a3\u044b\u0437 \u0436\u04d9\u043d\u0435 \u041c\u0435\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440\u0456\u043c\u0434\u0456 \u0442\u0430\u04a3\u0434\u0430\u04a3\u044b\u0437." }
\ 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 36003bc3f..240d075b9 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 12081cc5a..705f9574f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 cce3ec647..7af6fd415 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json @@ -15,7 +15,7 @@ "LabelFinish": "Ferdig", "LabelNext": "Neste", "LabelYoureDone": "Ferdig!", - "WelcomeToProject": "Welcome to Emby!", + "WelcomeToProject": "Velkommen til Emby", "ThisWizardWillGuideYou": "Denne wizarden vil guide deg gjennom server-konfigurasjonen. For \u00e5 begynne, vennligst velg spr\u00e5k.", "TellUsAboutYourself": "Fortell om deg selv", "ButtonQuickStartGuide": "Hurtigstartveiledning", @@ -49,9 +49,11 @@ "ButtonOrganize": "Organiser", "LinkedToEmbyConnect": "Linked to Emby Connect", "HeaderSupporterBenefits": "Supporter Benefits", - "HeaderAddUser": "Add User", + "HeaderAddUser": "Ny bruker", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", - "LabelPinCode": "Pin code:", + "LabelPinCode": "Pin kode:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Avbryt", "ButtonExit": "Exit", @@ -64,8 +66,8 @@ "TabPlaylist": "Playlist", "HeaderEasyPinCode": "Enkel PIN-kode", "HeaderGrownupsOnly": "Grown-ups Only!", - "DividerOr": "-- or --", - "HeaderInstalledServices": "Installed Services", + "DividerOr": "-- eller --", + "HeaderInstalledServices": "Installerte programtillegg", "HeaderAvailableServices": "Available Services", "MessageNoServicesInstalled": "No services are currently installed.", "HeaderToAccessPleaseEnterEasyPinCode": "To access, please enter your easy pin code", @@ -167,6 +169,7 @@ "MessageNothingHere": "Ingeting her.", "MessagePleaseEnsureInternetMetadata": "P\u00e5se at nedlasting av internet-metadata er sl\u00e5tt p\u00e5.", "TabSuggested": "Forslag", + "TabSuggestions": "Suggestions", "TabLatest": "Siste", "TabUpcoming": "Kommer", "TabShows": "Show", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Ta opptak p\u00e5 alle kanaler", "OptionRecordAnytime": "Ta opptak n\u00e5r som helst", "OptionRecordOnlyNewEpisodes": "Ta opptak kun av nye episoder", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dager", "HeaderActiveRecordings": "Aktive opptak", "HeaderLatestRecordings": "Siste opptak", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Hjemme side seksjon 2:", "LabelHomePageSection3": "Hjemme side seksjon 3:", "LabelHomePageSection4": "Hjemme side seksjon 4:", - "OptionMyViewsButtons": "Mitt syn (knapper)", - "OptionMyViews": "Mitt syn", - "OptionMyViewsSmall": "Mitt Syn (liten)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Fortsette", "OptionLatestMedia": "Siste media", "OptionLatestChannelMedia": "Siste kanal elementer", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Standard", "OptionCommunityMostWatchedSort": "Mest Sett", "TabNextUp": "Neste", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "Ingen film forslag er forel\u00f8pig tilgjengelig. Start med \u00e5 se og ranger filmer. Kom deretter tilbake for \u00e5 f\u00e5 forslag p\u00e5 anbefalinger.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Spillelister tillater deg \u00e5 lage lister over innhold til \u00e5 spille etter hverandre p\u00e5 en gang. For \u00e5 legge til elementer i spillelister, h\u00f8yreklikk eller trykk og hold, og velg Legg til i spilleliste.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "Mer...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 ded3ae100..5328b7aa3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Gebruiker Toevoegen", "LabelAddConnectSupporterHelp": "Om een \u200b\u200bgebruiker toe te voegen die niet in de lijst voorkomt, moet je eerst hun account koppelen aan Emby Connect uit hun gebruikersprofiel pagina.", "LabelPinCode": "Pincode:", + "OptionHideWatchedContentFromLatestMedia": "Verberg bekeken inhoud van recent toegevoegd", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Annuleren", "ButtonExit": "Afsluiten", @@ -167,6 +169,7 @@ "MessageNothingHere": "Lijst is leeg.", "MessagePleaseEnsureInternetMetadata": "Zorg ervoor dat het downloaden van metadata van het internet is ingeschakeld.", "TabSuggested": "Aanbevolen", + "TabSuggestions": "Suggesties", "TabLatest": "Nieuw", "TabUpcoming": "Binnenkort op TV", "TabShows": "Series", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Programma van alle kanalen opnemen", "OptionRecordAnytime": "Programma elke keer opnemen", "OptionRecordOnlyNewEpisodes": "Alleen nieuwe afleveringen opnemen", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dagen", "HeaderActiveRecordings": "Actieve Opnames", "HeaderLatestRecordings": "Nieuwe Opnames", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Startpagina sectie 2:", "LabelHomePageSection3": "Startpagina sectie 3:", "LabelHomePageSection4": "Startpagina sectie 4:", - "OptionMyViewsButtons": "Mijn overzichten (knoppen)", - "OptionMyViews": "Mijn overzichten", - "OptionMyViewsSmall": "Mijn overzichten (klein)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Hervatten", "OptionLatestMedia": "Nieuwste media", "OptionLatestChannelMedia": "Nieuwste kanaal items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Standaard", "OptionCommunityMostWatchedSort": "Meest bekeken", "TabNextUp": "Volgend", + "PlaceholderUsername": "Gebruikersnaam", "HeaderBecomeProjectSupporter": "Wordt Emby Supporter", - "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.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata voor:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Aankomende Films", + "HeaderUpcomingSports": "Sport binnenkort", "HeaderUpcomingPrograms": "Aankomende Programma's", "ButtonMoreItems": "Meer...", "LabelShowLibraryTileNames": "Toon bibliotheek tegel namen", "LabelShowLibraryTileNamesHelp": "Bepaalt of labels onder de bibliotheek tegels zullen worden weergegeven op de startpagina", - "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottle": "Throtteling inschakelen", + "OptionEnableTranscodingThrottleHelp": "Throtteling zal automatisch de snelheid van het transcoderen aanpassen om de cpu belasting laag te houden tijdens het afspelen.", + "LabelUploadSpeedLimit": "Upload limiet (mbps):", + "OptionAllowSyncTranscoding": "Sta synchronisatie toe die transcodering vereist", + "HeaderPlayback": "Media afspelen", + "OptionAllowAudioPlaybackTranscoding": "Sta het afspelen van audio wat transcoding vereist toe", + "OptionAllowVideoPlaybackTranscoding": "Sta het afspelen van video wat transcoding vereist toe", + "OptionAllowMediaPlaybackTranscodingHelp": "Gebruikers zullen een bericht ontvangen als afspelen niet is toegestaan op basis van het beleid", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Client bitrate limiet (mbps):", + "LabelRemoteClientBitrateLimitHelp": "Een optionele streaming bitrate limiet voor alle clients. Dit wordt gebruikt om te voorkomen dat clients een hogere bitrate aanvragen dan de internet connectie kan leveren.", + "LabelConversionCpuCoreLimit": "CPU core limiet:", + "LabelConversionCpuCoreLimitHelp": "Limiteer het aantal CPU cores wat gebruikt mag worden bij een omzetteing om te synchroniseren.", + "OptionEnableFullSpeedConversion": "Schakel hoge converteren op hoge snelheid in", + "OptionEnableFullSpeedConversionHelp": "Standaard wordt het converteren voor synchronisatie opdrachten op lage snelheid uitgevoerd zodat er weinig impact is op de server.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 ef441fccd..5a1d623c4 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Anuluj", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nic tutaj nie ma.", "MessagePleaseEnsureInternetMetadata": "Upewnij si\u0119 \u017ce pobieranie metadanych z internetu jest w\u0142\u0105czone.", "TabSuggested": "Sugerowane", + "TabSuggestions": "Suggestions", "TabLatest": "Ostatnie", "TabUpcoming": "Upcoming", "TabShows": "Seriale", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 20d7e32fa..1a93e7021 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Adicionar Usu\u00e1rio", "LabelAddConnectSupporterHelp": "Para adicionar um usu\u00e1rio que n\u00e3o esteja listado, voc\u00ea precisar\u00e1 associar sua conta ao Emby Connect na sua p\u00e1gina de perfil.", "LabelPinCode": "C\u00f3digo Pin:", + "OptionHideWatchedContentFromLatestMedia": "Ocultar conte\u00fado j\u00e1 assistido das m\u00eddias recentes", + "HeaderSync": "Sincroniza\u00e7\u00e3o", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", "ButtonExit": "Sair", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nada aqui.", "MessagePleaseEnsureInternetMetadata": "Por favor, certifique-se que o download de metadados da internet est\u00e1 habilitado.", "TabSuggested": "Sugeridos", + "TabSuggestions": "Sugest\u00f5es", "TabLatest": "Recentes", "TabUpcoming": "Por Estrear", "TabShows": "S\u00e9ries", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Gravar programa em todos os canais", "OptionRecordAnytime": "Gravar programa a qualquer hora", "OptionRecordOnlyNewEpisodes": "Gravar apenas novos epis\u00f3dios", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dias", "HeaderActiveRecordings": "Grava\u00e7\u00f5es Ativas", "HeaderLatestRecordings": "Grava\u00e7\u00f5es Recentes", @@ -572,7 +576,7 @@ "HeaderDestination": "Destino", "HeaderProgram": "Programa", "HeaderClients": "Clientes", - "LabelCompleted": "Completa", + "LabelCompleted": "Conclu\u00eddo", "LabelFailed": "Falhou", "LabelSkipped": "Ignorada", "HeaderEpisodeOrganization": "Organiza\u00e7\u00e3o do Epis\u00f3dio", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Tela de in\u00edcio se\u00e7\u00e3o 2:", "LabelHomePageSection3": "Tela de in\u00edcio se\u00e7\u00e3o 3:", "LabelHomePageSection4": "Tela de in\u00edcio se\u00e7\u00e3o 4:", - "OptionMyViewsButtons": "Minhas visualiza\u00e7\u00f5es (bot\u00f5es)", - "OptionMyViews": "Minhas visualiza\u00e7\u00f5es", - "OptionMyViewsSmall": "Minhas visualiza\u00e7\u00f5es (pequeno)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Retomar", "OptionLatestMedia": "M\u00eddias recentes", "OptionLatestChannelMedia": "Itens recentes de canal", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Padr\u00e3o", "OptionCommunityMostWatchedSort": "Mais Assistidos", "TabNextUp": "Pr\u00f3ximos", + "PlaceholderUsername": "Nome do usu\u00e1rio", "HeaderBecomeProjectSupporter": "Torne-se um Colaborador do Emby", - "TextEnjoyBonusFeatures": "Aproveite Funcionalidades Extras", "MessageNoMovieSuggestionsAvailable": "N\u00e3o existem sugest\u00f5es de filmes dispon\u00edveis atualmente. Comece por assistir e avaliar seus filmes e, ent\u00e3o, volte para verificar suas recomenda\u00e7\u00f5es.", "MessageNoCollectionsAvailable": "Cole\u00e7\u00f5es permitem que voc\u00ea aproveite grupos personalizados de Filmes, S\u00e9ries, \u00c1lbuns, Livros e Jogos. Clique no bot\u00e3o + para come\u00e7ar a criar Cole\u00e7\u00f5es.", "MessageNoPlaylistsAvailable": "Listas de reprodu\u00e7\u00e3o permitem criar listas com conte\u00fado para reproduzir consecutivamente, de uma s\u00f3 vez. Para adicionar itens \u00e0s listas de reprodu\u00e7\u00e3o, clique com o bot\u00e3o direito ou toque a tela por alguns segundos, depois selecione Adicionar \u00e0 Lista de Reprodu\u00e7\u00e3o.", @@ -1096,8 +1100,8 @@ "HeaderActivity": "Atividade", "ScheduledTaskStartedWithName": "{0} iniciado", "ScheduledTaskCancelledWithName": "{0} foi cancelado", - "ScheduledTaskCompletedWithName": "{0} completa", - "ScheduledTaskFailed": "Tarefa agendada completa", + "ScheduledTaskCompletedWithName": "{0} conclu\u00edda", + "ScheduledTaskFailed": "Tarefa agendada conclu\u00edda", "PluginInstalledWithName": "{0} foi instalado", "PluginUpdatedWithName": "{0} foi atualizado", "PluginUninstalledWithName": "{0} foi desinstalado", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Fazer download dos metadados da internet para:", "OptionTVMovies": "Filmes da TV", "HeaderUpcomingMovies": "Filmes Por Estrear", + "HeaderUpcomingSports": "Esportes 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", "OptionEnableTranscodingThrottle": "Ativar controlador de fluxo", - "OptionEnableTranscodingThrottleHelp": "O controlador de fluxo ajustar\u00e1 automaticamente a velocidade de transcodifica\u00e7\u00e3o para minimizar o uso da cpu no servidor durante a reprodu\u00e7\u00e3o" + "OptionEnableTranscodingThrottleHelp": "O controlador de fluxo ajustar\u00e1 automaticamente a velocidade de transcodifica\u00e7\u00e3o para minimizar o uso da cpu no servidor durante a reprodu\u00e7\u00e3o.", + "LabelUploadSpeedLimit": "Limite de velocidade de upload (mbps):", + "OptionAllowSyncTranscoding": "Permitir sincroniza\u00e7\u00e3o que necessite de transcodifica\u00e7\u00e3o", + "HeaderPlayback": "Reprodu\u00e7\u00e3o de M\u00eddia", + "OptionAllowAudioPlaybackTranscoding": "Permitir reprodu\u00e7\u00e3o de \u00e1udio que necessite de transcodifica\u00e7\u00e3o", + "OptionAllowVideoPlaybackTranscoding": "Permitir reprodu\u00e7\u00e3o de v\u00eddeo que necessite de transcodifica\u00e7\u00e3o", + "OptionAllowMediaPlaybackTranscodingHelp": "Os usu\u00e1rios receber\u00e3o mensagens de erro amig\u00e1veis quando o conte\u00fado n\u00e3o for reproduz\u00edvel, baseado nas pol\u00edticas.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Limite de taxa de bits para o cliente remoto (mbps):", + "LabelRemoteClientBitrateLimitHelp": "Um limite opcional da taxa de bits para todos os clientes remotos. Esta op\u00e7\u00e3o \u00e9 \u00fatil para evitar que os clientes demandem uma taxa de bits maior que a permitida pela sua conex\u00e3o.", + "LabelConversionCpuCoreLimit": "Limite de n\u00facleos da CPU:", + "LabelConversionCpuCoreLimitHelp": "Limite o n\u00famero de n\u00facleos da CPU que ser\u00e3o usados durante a convers\u00e3o na sincroniza\u00e7\u00e3o", + "OptionEnableFullSpeedConversion": "Ativar convers\u00e3o de alta velocidade", + "OptionEnableFullSpeedConversionHelp": "Por padr\u00e3o, a convers\u00e3o na sincroniza\u00e7\u00e3o \u00e9 executada em uma velocidade baixa para reduzir o consumo de recursos.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 dec7d35d2..4b4ec0e55 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json @@ -4,8 +4,8 @@ "LabelGithub": "Github", "LabelSwagger": "Swagger", "LabelStandard": "Padr\u00e3o", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", + "LabelApiDocumentation": "Documenta\u00e7\u00e3o da API", + "LabelDeveloperResources": "Recursos do Programador", "LabelBrowseLibrary": "Navegar pela Biblioteca", "LabelConfigureServer": "Configurar o Emby", "LabelOpenLibraryViewer": "Abrir Visualizador da Biblioteca", @@ -18,7 +18,7 @@ "WelcomeToProject": "Bem-vindo ao Emby!", "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", + "ButtonQuickStartGuide": "Guia r\u00e1pido", "LabelYourFirstName": "O seu primeiro nome:", "MoreUsersCanBeAddedLater": "\u00c9 poss\u00edvel adicionar utilizadores mais tarde no Painel Principal", "UserProfilesIntro": "O Emby inclui suporte nativo de perfis de utilizadores, permitindo que cada utilizador tenha as suas configura\u00e7\u00f5es de visualiza\u00e7\u00e3o, estado da reprodu\u00e7\u00e3o e controlos parentais.", @@ -46,12 +46,14 @@ "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", - "LinkedToEmbyConnect": "Linked to Emby Connect", - "HeaderSupporterBenefits": "Supporter Benefits", + "ButtonOrganize": "Organizar", + "LinkedToEmbyConnect": "Associado ao Emby Connect", + "HeaderSupporterBenefits": "Benef\u00edcios do Apoiante", "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancelar", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nada aqui.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transfer\u00eancia de metadados da internet est\u00e1 activa.", "TabSuggested": "Sugest\u00f5es", + "TabSuggestions": "Suggestions", "TabLatest": "Mais recente", "TabUpcoming": "Pr\u00f3ximos", "TabShows": "S\u00e9ries", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Gravar programa em todos os canais", "OptionRecordAnytime": "Gravar programa em qualquer altura", "OptionRecordOnlyNewEpisodes": "Gravar apenas novos epis\u00f3dios", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dias", "HeaderActiveRecordings": "Grava\u00e7\u00f5es ativas", "HeaderLatestRecordings": "\u00daltimas Grava\u00e7\u00f5es", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "N\u00famero da porta da Web socket:", @@ -632,7 +636,7 @@ "LabelDownMixAudioScaleHelp": "Aumentar o \u00e1udio ao fazer downmix. Defina como 1 para preservar o volume original.", "ButtonLinkKeys": "Transferir Chave", "LabelOldSupporterKey": "Chave de apoiante antiga", - "LabelNewSupporterKey": "Chave de apoiante nova", + "LabelNewSupporterKey": "Nova chave de apoiante", "HeaderMultipleKeyLinking": "Transferir para Nova Chave", "MultipleKeyLinkingHelp": "If you received a new supporter key, use this form to transfer the old key's registrations to your new one.", "LabelCurrentEmailAddress": "Endere\u00e7o de email atual", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", - "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", + "PlaceholderUsername": "Username", + "HeaderBecomeProjectSupporter": "Torne-se um Apoiante do Emby", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -963,7 +967,7 @@ "LabelSelectFolderGroups": "Automatically group content from the following folders into views such as Movies, Music and TV:", "LabelSelectFolderGroupsHelp": "Folders that are unchecked will be displayed by themselves in their own view.", "OptionDisplayAdultContent": "Display adult content", - "OptionLibraryFolders": "Media folders", + "OptionLibraryFolders": "Pastas multim\u00e9dia", "TitleRemoteControl": "Remote Control", "OptionLatestTvRecordings": "Latest recordings", "LabelProtocolInfo": "Protocol info:", @@ -1102,8 +1106,8 @@ "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", "ScheduledTaskFailedWithName": "{0} failed", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", + "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", + "ItemRemovedWithName": "{0} foi removido da biblioteca", "DeviceOnlineWithName": "{0} is connected", "UserOnlineFromDevice": "{0} is online from {1}", "DeviceOfflineWithName": "{0} has disconnected", @@ -1268,12 +1272,12 @@ "OptionHlsSegmentedSubtitles": "Hls segmented subtitles", "LabelSubtitleFormatHelp": "Example: srt", "ButtonLearnMore": "Learn more", - "TabPlayback": "Playback", + "TabPlayback": "Reprodu\u00e7\u00e3o", "HeaderLanguagePreferences": "Language Preferences", - "TabCinemaMode": "Cinema Mode", - "TitlePlayback": "Playback", - "LabelEnableCinemaModeFor": "Enable cinema mode for:", - "CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.", + "TabCinemaMode": "Modo Cinema", + "TitlePlayback": "Reprodu\u00e7\u00e3o", + "LabelEnableCinemaModeFor": "Ativar modo cinema para:", + "CinemaModeConfigurationHelp": "O modo cinema traz a experi\u00eancia do cinema para a sua sala, possibilitando reproduzir trailers e introdu\u00e7\u00f5es personalizadas antes da longa-metragem.", "OptionTrailersFromMyMovies": "Include trailers from movies in my library", "OptionUpcomingMoviesInTheaters": "Include trailers from new and upcoming movies", "LabelLimitIntrosToUnwatchedContent": "Only use trailers from unwatched content", @@ -1284,14 +1288,14 @@ "LabelCustomIntrosPath": "Custom intros path:", "LabelCustomIntrosPathHelp": "A folder containing video files. A video will be randomly selected and played after trailers.", "ValueSpecialEpisodeName": "Special - {0}", - "LabelSelectInternetTrailersForCinemaMode": "Internet trailers:", + "LabelSelectInternetTrailersForCinemaMode": "Trailers da Internet:", "OptionUpcomingDvdMovies": "Include trailers from new and upcoming movies on Dvd & Blu-ray", "OptionUpcomingStreamingMovies": "Include trailers from new and upcoming movies on Netflix", "LabelDisplayTrailersWithinMovieSuggestions": "Display trailers within movie suggestions", "LabelDisplayTrailersWithinMovieSuggestionsHelp": "Requires installation of the Trailer channel.", - "CinemaModeConfigurationHelp2": "Individual users will have the ability to disable cinema mode within their own preferences.", - "LabelEnableCinemaMode": "Enable cinema mode", - "HeaderCinemaMode": "Cinema Mode", + "CinemaModeConfigurationHelp2": "Os utilizadores poder\u00e3o desativar o modo cinema nas suas prefer\u00eancias.", + "LabelEnableCinemaMode": "Ativar modo cinema", + "HeaderCinemaMode": "Modo Cinema", "LabelDateAddedBehavior": "Date added behavior for new content:", "OptionDateAddedImportTime": "Use date scanned into the library", "OptionDateAddedFileTime": "Use file creation date", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 29c1b9d12..b437ac74f 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json @@ -16,7 +16,7 @@ "LabelNext": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435", "LabelYoureDone": "\u0412\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438!", "WelcomeToProject": "Emby \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0430\u0441!", - "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.", + "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. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \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\u043e \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:", @@ -29,9 +29,9 @@ "WizardCompleted": "\u042d\u0442\u043e \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e. Emby \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e \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 \u043d\u0430\u0448\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u0436\u043c\u0438\u0442\u0435 <b>\u0413\u043e\u0442\u043e\u0432\u043e<\/b>, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <b>\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.", + "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 \u0418\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\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044e.", "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.", + "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 \u0432 \u0432\u0438\u0434\u0435 \u0437\u0430\u0434\u0430\u0447\u0438, \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 Emby", @@ -41,7 +41,7 @@ "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.", + "OptionDisableForDevelopmentHelp": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438\u0445, \u043f\u043e \u043c\u0435\u0440\u0435 \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.", @@ -52,6 +52,8 @@ "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\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u0443\u0447\u0451\u0442\u043d\u0443\u044e \u0437\u0430\u043f\u0438\u0441\u044c \u0441 Emby Connect \u0441 \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.", "LabelPinCode": "PIN-\u043a\u043e\u0434:", + "OptionHideWatchedContentFromLatestMedia": "\u0421\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0438\u0437 \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", + "HeaderSync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", "ButtonOk": "\u041e\u041a", "ButtonCancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", "ButtonExit": "\u0412\u044b\u0439\u0442\u0438", @@ -112,7 +114,7 @@ "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", + "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 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430", "LabelDownloadInternetMetadataHelp": "\u0412 Emby Server \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \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 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439.", "TabPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", "TabPassword": "\u041f\u0430\u0440\u043e\u043b\u044c", @@ -165,8 +167,9 @@ "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", + "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 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430.", + "TabSuggested": "\u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435", + "TabSuggestions": "\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", @@ -185,8 +188,8 @@ "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", + "HeaderResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", + "HeaderNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\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:", @@ -225,7 +228,7 @@ "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", + "OptionResumable": "\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435", "ScheduledTasksHelp": "\u0429\u0451\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u043e \u0437\u0430\u0434\u0430\u0447\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\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", @@ -295,12 +298,12 @@ "VisitProjectWebsite": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c \u0441\u0430\u0439\u0442 Emby", "VisitProjectWebsiteLong": "\u041f\u043e\u0441\u0435\u0449\u0430\u0439\u0442\u0435 \u0441\u0430\u0439\u0442 Emby, \u0447\u0442\u043e\u0431\u044b \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0431\u043b\u043e\u0433\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.", "OptionHideUser": "\u0421\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u044d\u043a\u0440\u0430\u043d\u043e\u0432 \u0432\u0445\u043e\u0434\u0430", - "OptionHideUserFromLoginHelp": "\u041f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0432\u0432\u0435\u0434\u044f \u0441\u0432\u043e\u0451 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c.", + "OptionHideUserFromLoginHelp": "\u0426\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0434\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u0443\u0447\u0451\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0440\u0443\u0447\u043d\u0443\u044e, \u0432\u0432\u043e\u0434\u044f \u0441\u0432\u043e\u0451 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c.", "OptionDisableUser": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "OptionDisableUserHelp": "\u041f\u0440\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u044e\u0431\u044b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0437\u043a\u043e \u043e\u0431\u043e\u0440\u0432\u0430\u043d\u044b.", "HeaderAdvancedControl": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435", "LabelName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435):", - "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435", + "ButtonHelp": "\u041a \u0441\u043f\u0440\u0430\u0432\u043a\u0435 \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435", "OptionAllowUserToManageServer": "\u042d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c", "HeaderFeatureAccess": "\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438", "OptionAllowMediaPlayback": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", @@ -345,7 +348,7 @@ "LabelMetadataPath": "\u041f\u0443\u0442\u044c \u043a \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c:", "LabelMetadataPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0439 \u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043f\u0440\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043d\u0435 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043e\u043a.", "LabelTranscodingTempPath": "\u041f\u0443\u0442\u044c \u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438:", - "LabelTranscodingTempPathHelp": "\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.", + "LabelTranscodingTempPathHelp": "\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0444\u0430\u0439\u043b\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0435. \u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 data.", "TabBasics": "\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435", "TabTV": "\u0422\u0412", "TabGames": "\u0418\u0433\u0440\u044b", @@ -368,7 +371,7 @@ "LabelMetadataDownloadLanguage": "\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0439 \u044f\u0437\u044b\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e:", "ButtonAutoScroll": "\u041a \u0430\u0432\u0442\u043e\u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0435", "LabelImageSavingConvention": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432:", - "LabelImageSavingConventionHelp": "\u0412 Emby \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0430. \u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043b\u0435\u0437\u0435\u043d, \u0435\u0441\u043b\u0438 \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b.", + "LabelImageSavingConventionHelp": "\u0412 Emby \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u044e\u0442\u0441\u044f \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0412\u044b\u0431\u043e\u0440 \u0441\u0432\u043e\u0435\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c, \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u044b\u0445 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432.", "OptionImageSavingCompatible": "\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 - Emby\/Kodi\/Plex", "OptionImageSavingStandard": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 - MB2", "ButtonSignIn": "\u0412\u043e\u0439\u0442\u0438", @@ -401,9 +404,10 @@ "ButtonRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c", "ButtonAdvancedRefresh": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e", "OptionPriority": "\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442", - "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", - "OptionRecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f", + "OptionRecordOnAllChannels": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u043e \u0432\u0441\u0435\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", + "OptionRecordAnytime": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f", "OptionRecordOnlyNewEpisodes": "\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", + "HeaderRepeatingOptions": "\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b", "HeaderDays": "\u0414\u043d\u0438", "HeaderActiveRecordings": "\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", "HeaderLatestRecordings": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438", @@ -414,7 +418,7 @@ "ButtonDelete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c", "ButtonRemove": "\u0418\u0437\u044a\u044f\u0442\u044c", "OptionRecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0430\u043b", - "HeaderDetails": "\u0414\u0435\u0442\u0430\u043b\u0438", + "HeaderDetails": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f", "TitleLiveTV": "\u0422\u0412-\u044d\u0444\u0438\u0440", "LabelNumberOfGuideDays": "\u0427\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0438\u0434\u0430:", "LabelNumberOfGuideDaysHelp": "\u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u0434\u043d\u0435\u0439, \u0442\u0435\u043c \u0446\u0435\u043d\u043d\u0435\u0435 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0433\u0438\u0434\u0430, \u0434\u0430\u0432\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u043d\u043d\u0435\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0447, \u043d\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0434\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. \u041f\u0440\u0438 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0410\u0432\u0442\u043e\u00bb \u0432\u044b\u0431\u043e\u0440 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u0430\u043d\u0430\u043b\u043e\u0432.", @@ -547,14 +551,14 @@ "LabelPublicHttpsPort": "\u041d\u043e\u043c\u0435\u0440 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e HTTPS-\u043f\u043e\u0440\u0442\u0430:", "LabelPublicHttpsPortHelp": "\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c HTTPS-\u043f\u043e\u0440\u0442\u043e\u043c.", "LabelEnableHttps": "\u041e\u0442\u0434\u0430\u0432\u0430\u0442\u044c HTTPS \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430", - "LabelEnableHttpsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u0434\u0430\u0451\u0442 HTTPS URL \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0449\u0451 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 HTTPS-\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.", + "LabelEnableHttpsHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u0434\u0430\u0451\u0442 HTTPS URL \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430.", "LabelHttpsPort": "\u041d\u043e\u043c\u0435\u0440 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e HTTPS-\u043f\u043e\u0440\u0442\u0430:", "LabelHttpsPortHelp": "TCP-\u043f\u043e\u0440\u0442, \u043a\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 HTTPS-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Emby.", "LabelWebSocketPortNumber": "\u041d\u043e\u043c\u0435\u0440 \u043f\u043e\u0440\u0442\u0430 \u0432\u0435\u0431-\u0441\u043e\u043a\u0435\u0442\u0430:", "LabelEnableAutomaticPortMap": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u043e\u0432", "LabelEnableAutomaticPortMapHelp": "\u041f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0440\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0440\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 UPnP. \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.", "LabelExternalDDNS": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 WAN-\u0430\u0434\u0440\u0435\u0441:", - "LabelExternalDDNSHelp": "\u0415\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u0443\u0441\u0442\u044b\u043c \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.", + "LabelExternalDDNSHelp": "\u0415\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 DNS, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Emby-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f.", "TabResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435", "TabWeather": "\u041f\u043e\u0433\u043e\u0434\u0430", "TitleAppSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", @@ -711,7 +715,7 @@ "ButtonPageUp": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0432\u0435\u0440\u0445", "ButtonPageDown": "\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u043d\u0438\u0437", "PageAbbreviation": "\u0421\u0422\u0420", - "ButtonHome": "\u041a \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443", + "ButtonHome": "\u041a\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443", "ButtonSearch": "\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a", "ButtonSettings": "\u041a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c", "ButtonTakeScreenshot": "\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043d\u0438\u043c\u043e\u043a \u044d\u043a\u0440\u0430\u043d\u0430", @@ -762,7 +766,7 @@ "OptionProfileVideoAudio": "\u0412\u0438\u0434\u0435\u043e \u0410\u0443\u0434\u0438\u043e", "OptionProfilePhoto": "\u0424\u043e\u0442\u043e", "LabelUserLibrary": "\u041c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:", - "LabelUserLibraryHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435, \u0447\u044c\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", + "LabelUserLibraryHelp": "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435, \u0447\u044c\u044e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", "OptionPlainStorageFolders": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f", "OptionPlainStorageFoldersHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0432\u0441\u0435 \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 DIDL \u043a\u0430\u043a \u00abobject.container.storageFolder\u00bb, \u0432\u043c\u0435\u0441\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u00abobject.container.person.musicArtist\u00bb.", "OptionPlainVideoItems": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432\u0438\u0434\u0435\u043e, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b", @@ -839,7 +843,7 @@ "HeaderDownloadChaptersFor": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0434\u043b\u044f:", "LabelOpenSubtitlesUsername": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Open Subtitles:", "LabelOpenSubtitlesPassword": "\u041f\u0430\u0440\u043e\u043b\u044c Open Subtitles:", - "HeaderChapterDownloadingHelp": "\u041f\u0440\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Emby, \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0441\u0446\u0435\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ChapterDb.", + "HeaderChapterDownloadingHelp": "\u041f\u0440\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u043e\u0432 \u0432 Emby, \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0441\u0446\u0435\u043d \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0441\u0446\u0435\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, ChapterDb.", "LabelPlayDefaultAudioTrack": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0443\u044e \u0430\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0443 \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430", "LabelSubtitlePlaybackMode": "\u0420\u0435\u0436\u0438\u043c \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:", "LabelDownloadLanguages": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0435 \u044f\u0437\u044b\u043a\u0438:", @@ -884,10 +888,10 @@ "LabelHomePageSection2": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 2:", "LabelHomePageSection3": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 3:", "LabelHomePageSection4": "\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0440\u0430\u0437\u0434\u0435\u043b 4:", - "OptionMyViewsButtons": "\u041c\u043e\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u044b (\u043a\u043d\u043e\u043f\u043a\u0438)", - "OptionMyViews": "\u041c\u043e\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u044b", - "OptionMyViewsSmall": "\u041c\u043e\u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u044b (\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e)", - "OptionResumablemedia": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", + "OptionMyMediaButtons": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435 (\u043a\u043d\u043e\u043f\u043a\u0438)", + "OptionMyMedia": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", + "OptionMyMediaSmall": "\u041c\u043e\u0438 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435 (\u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e)", + "OptionResumablemedia": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", "OptionLatestMedia": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0435", "OptionLatestChannelMedia": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", "HeaderLatestChannelItems": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437 \u043a\u0430\u043d\u0430\u043b\u043e\u0432", @@ -902,8 +906,8 @@ "OptionDefaultSort": "\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435", "OptionCommunityMostWatchedSort": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0435 \u0431\u043e\u043b\u044c\u0448\u0435", "TabNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435", + "PlaceholderUsername": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "HeaderBecomeProjectSupporter": "\u0421\u0442\u0430\u043d\u044c\u0442\u0435 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u043e\u043c Emby", - "TextEnjoyBonusFeatures": "\u0412\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c \u0431\u043e\u043d\u0443\u0441\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438", "MessageNoMovieSuggestionsAvailable": "\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0444\u0438\u043b\u044c\u043c\u043e\u0432. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u043c\u044b, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043d\u0430\u0437\u0430\u0434, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438.", "MessageNoCollectionsAvailable": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u0438\u044f\u043c\u0438 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0430\u043b\u044c\u0431\u043e\u043c\u043e\u0432, \u043a\u043d\u0438\u0433 \u0438 \u0438\u0433\u0440. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \"+\", \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.", "MessageNoPlaylistsAvailable": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0438\u0437 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043e\u043c. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432\u043e \u0441\u043f\u0438\u0441\u043a\u0438, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438 \u0438\u043b\u0438 \u043a\u043e\u0441\u043d\u0438\u0442\u0435\u0441\u044c \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439\u0442\u0435, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u00ab\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u00bb.", @@ -916,7 +920,7 @@ "LabelEnableChannelContentDownloadingFor": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u0430 \u0434\u043b\u044f:", "LabelEnableChannelContentDownloadingForHelp": "\u041d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u0430\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u044f\u044e\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440. \u0412\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u043f\u0440\u0438 \u0441\u0440\u0435\u0434\u0430\u0445 \u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 \u0432 \u043d\u0435\u0440\u0430\u0431\u043e\u0447\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432\u00bb.", "LabelChannelDownloadPath": "\u041f\u0443\u0442\u044c \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u044b\u0445 \u043a\u0430\u043d\u0430\u043b\u043e\u0432:", - "LabelChannelDownloadPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e, \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e. \u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.", + "LabelChannelDownloadPathHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c\u043e\u0433\u043e, \u043f\u043e \u0436\u0435\u043b\u0430\u043d\u0438\u044e. \u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 data.", "LabelChannelDownloadAge": "\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437, \u0434\u043d\u0438:", "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.", @@ -937,14 +941,14 @@ "ViewTypeGameFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", "ViewTypeGameSystems": "\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", "ViewTypeGameGenres": "\u0416\u0430\u043d\u0440\u044b", - "ViewTypeTvResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", - "ViewTypeTvNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0435", + "ViewTypeTvResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", + "ViewTypeTvNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435", "ViewTypeTvLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", "ViewTypeTvShowSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b", "ViewTypeTvGenres": "\u0416\u0430\u043d\u0440\u044b", "ViewTypeTvFavoriteSeries": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u044b", "ViewTypeTvFavoriteEpisodes": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "ViewTypeMovieResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u044b\u0435", + "ViewTypeMovieResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", "ViewTypeMovieLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", "ViewTypeMovieMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", "ViewTypeMovieCollections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", @@ -970,7 +974,7 @@ "LabelProtocolInfoHelp": "\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b GetProtocolInfo \u043e\u0442 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.", "TabNfo": "NFO-\u0444\u0430\u0439\u043b\u044b", "HeaderKodiMetadataHelp": "\u0412 Emby \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 NFO-\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. \u0427\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c NFO-\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u00ab\u0421\u043b\u0443\u0436\u0431\u044b\u00bb, \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e \u0442\u0438\u043f\u0430\u043c \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445.", - "LabelKodiMetadataUser": "\u0421\u0438\u043d\u0445\u0440-\u0438\u044f NFO \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:", + "LabelKodiMetadataUser": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0441 NFO \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:", "LabelKodiMetadataUserHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 Emby Server \u0438 NFO-\u0444\u0430\u0439\u043b\u0430\u043c\u0438.", "LabelKodiMetadataDateFormat": "\u0424\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u0442\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430:", "LabelKodiMetadataDateFormatHelp": "\u0412\u0441\u0435 \u0434\u0430\u0442\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 NFO-\u0444\u0430\u0439\u043b\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0430.", @@ -1209,7 +1213,7 @@ "HeaderTags": "\u0422\u0435\u0433\u0438", "HeaderMetadataSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445", "LabelLockItemToPreventChanges": "\u0417\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0431\u0443\u0434\u0443\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", - "MessageLeaveEmptyToInherit": "\u041e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", + "MessageLeaveEmptyToInherit": "\u041d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.", "TabDonate": "\u041f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f", "HeaderDonationType": "\u0422\u0438\u043f \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f:", "OptionMakeOneTimeDonation": "\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0436\u0435\u0440\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435", @@ -1246,7 +1250,7 @@ "HeaderXmlDocumentAttributes": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", "HeaderXmlDocumentAttribute": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442 XML-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", "XmlDocumentAttributeListHelp": "\u0414\u0430\u043d\u043d\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a\u043e \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e XML-\u043e\u0442\u043a\u043b\u0438\u043a\u0430.", - "OptionSaveMetadataAsHidden": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u043a\u0430\u043a \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0444\u0430\u0439\u043b\u044b", + "OptionSaveMetadataAsHidden": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432", "LabelExtractChaptersDuringLibraryScan": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", "LabelExtractChaptersDuringLibraryScanHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0440\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u044b, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0435\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438. \u041f\u0440\u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u044b \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u00ab\u0420\u0438\u0441\u0443\u043d\u043a\u0438 \u0441\u0446\u0435\u043d\u00bb, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\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 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u044c\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435.", "LabelConnectGuestUserName": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f Emby \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u044d-\u043f\u043e\u0447\u0442\u044b:", @@ -1307,7 +1311,7 @@ "LabelCreateCameraUploadSubfolder": "\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430", "LabelCreateCameraUploadSubfolderHelp": "\u041d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0430\u043f\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u044b \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438 \u0449\u0435\u043b\u0447\u043a\u0435 \u043d\u0430 \u043d\u0451\u043c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \"\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\".", "LabelCustomDeviceDisplayName": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:", - "LabelCustomDeviceDisplayNameHelp": "\u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f, \u0432\u044b\u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.", + "LabelCustomDeviceDisplayNameHelp": "\u041f\u0440\u0438\u0432\u0435\u0434\u0438\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0435 \u0438\u043c\u044f \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0439\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043c\u044f, \u0432\u044b\u0434\u0430\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c.", "HeaderInviteUser": "\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", "LabelConnectGuestUserNameHelp": "\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u044d-\u043f\u043e\u0447\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u0430\u0448 \u0434\u0440\u0443\u0433 \u0434\u043b\u044f \u0432\u0445\u043e\u0434\u0430 \u043d\u0430 \u0432\u0435\u0431-\u0441\u0430\u0439\u0442 Emby.", "HeaderInviteUserHelp": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u043c \u0434\u0440\u0443\u0437\u044c\u044f\u043c \u043e\u0431\u0449\u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Emby Connect.", @@ -1378,13 +1382,36 @@ "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", - "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:", + "LabelEnableInternetMetadataForTvPrograms": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0418\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", + "HeaderUpcomingSports": "\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u0441\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", "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.", "OptionEnableTranscodingThrottle": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", - "OptionEnableTranscodingThrottleHelp": "\u0420\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u0435\u0441\u0442\u0438 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f." + "OptionEnableTranscodingThrottleHelp": "\u0420\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.", + "LabelUploadSpeedLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f, \u041c\u0431\u0438\u0442\/\u0441", + "OptionAllowSyncTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443", + "HeaderPlayback": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0434\u0438\u0430\u0434\u0430\u043d\u043d\u044b\u0445", + "OptionAllowAudioPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0430\u0443\u0434\u0438\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443", + "OptionAllowVideoPlaybackTranscoding": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443", + "OptionAllowMediaPlaybackTranscodingHelp": "\u041f\u0440\u0438 \u043d\u0435\u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0438\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430\u0445 \u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445.", + "TabStreaming": "\u0422\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044f", + "LabelRemoteClientBitrateLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u041c\u0431\u0438\u0442\/\u0441", + "LabelRemoteClientBitrateLimitHelp": "\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432. \u042d\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u0435\u0441\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0435\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.", + "LabelConversionCpuCoreLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0435\u0440:", + "LabelConversionCpuCoreLimitHelp": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u044f\u0434\u0435\u0440 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u044b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.", + "OptionEnableFullSpeedConversion": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435", + "OptionEnableFullSpeedConversionHelp": "\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0438\u0437\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.", + "HeaderPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f", + "HeaderSelectDate": "\u0412\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b", + "HeaderWelcomeExclamation": "\u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c!", + "HeaderMyPreferences": "\u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", + "ButtonMyPreferencesWelcomeYes": "\u0414\u0430, \u044f \u0445\u043e\u0447\u0443 \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u043c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.", + "ButtonMyPreferencesWelcomeNo": "\u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e \u043f\u043e\u0442\u043e\u043c.", + "MyPreferencesWelcomeMessage1": "\u0412\u0430\u0448\u0430 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043d\u0430\u043c\u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043a\u0430\u043a \u043c\u044b \u0434\u0443\u043c\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u044f\u0442\u043d\u043e. \u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0438 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a. \u0412\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c Emby.", + "MyPreferencesWelcomeMessage2": "\u0425\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0432\u044b \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0435\u0439\u0447\u0430\u0441?", + "ToAccessPreferencesHelp": "\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0432\u0430\u0448\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0449\u0435\u043b\u043a\u043d\u0438\u0442\u0435 \u0437\u043d\u0430\u0447\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u041c\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438." }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json index 0cff99c5d..bfd23243a 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/server.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json @@ -53,6 +53,7 @@ "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -168,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -402,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -550,7 +553,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -894,9 +897,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -912,8 +915,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -961,6 +964,7 @@ "ViewTypeMovieFavorites": "Favorites", "ViewTypeMovieGenres": "Genres", "ViewTypeMusicLatest": "Latest", + "ViewTypeMusicPlaylists": "Playlists", "ViewTypeMusicAlbums": "Albums", "ViewTypeMusicAlbumArtists": "Album Artists", "HeaderOtherDisplaySettings": "Display Settings", @@ -1398,10 +1402,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." } diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json index 86cb406b5..9232bafa5 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sl_SI.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Cancel", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 390ecb170..5147b08b3 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "OK", "ButtonCancel": "Avbryt", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Ingenting h\u00e4r.", "MessagePleaseEnsureInternetMetadata": "Var god se till att h\u00e4mtning av metadata via Internet \u00e4r aktiverad.", "TabSuggested": "Rekommenderas", + "TabSuggestions": "Suggestions", "TabLatest": "Nytillkommet", "TabUpcoming": "Kommande", "TabShows": "Serier", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "Spela in fr\u00e5n alla kanaler", "OptionRecordAnytime": "Spela in vid alla tidpunkter", "OptionRecordOnlyNewEpisodes": "Spela bara in nya avsnitt", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Dagar", "HeaderActiveRecordings": "P\u00e5g\u00e5ende inspelningar", "HeaderLatestRecordings": "Senaste inspelningarna", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Webanslutningens portnummer:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Startsidans sektion 2:", "LabelHomePageSection3": "Startsidans sektion 3:", "LabelHomePageSection4": "Startsidans sektion 4:", - "OptionMyViewsButtons": "Mina vyer (knappar)", - "OptionMyViews": "Mina vyer", - "OptionMyViewsSmall": "Mina vyer (liten)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "\u00c5teruppta", "OptionLatestMedia": "Nytillkommet", "OptionLatestChannelMedia": "Senaste objekten i Kanaler", @@ -902,8 +906,8 @@ "OptionDefaultSort": "F\u00f6rval", "OptionCommunityMostWatchedSort": "Oftast visade", "TabNextUp": "N\u00e4stkommande", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "Det finns inga filmf\u00f6rslag f\u00f6r tillf\u00e4llet. Efter att ha sett ett antal filmer kan du \u00e5terkomma hit f\u00f6r att se dina f\u00f6rslag.", "MessageNoCollectionsAvailable": "Samlingar g\u00f6r det m\u00f6jligt att avnjuta personliga grupperingar av filmer, serier, Album, b\u00f6cker och spel. Klicka p\u00e5 knappen + f\u00f6r att b\u00f6rja skapa samlingar.", "MessageNoPlaylistsAvailable": "Spellistor l\u00e5ter dig skapa listor med inneh\u00e5ll att spela upp i ordning. F\u00f6r att l\u00e4gga till objekt i spellistor, h\u00f6gerklicka eller tryck-och-h\u00e5ll och v\u00e4lj \"l\u00e4gg till i spellista\".", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "Mer...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 96b8db8fc..f79cf64c6 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Tamam", "ButtonCancel": "\u0130ptal", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "\u00d6nerilen", + "TabSuggestions": "Suggestions", "TabLatest": "Son", "TabUpcoming": "Gelecek", "TabShows": "G\u00f6steriler", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "T\u00fcm kanallardaki program\u0131 kaydet", "OptionRecordAnytime": "Program\u0131 herhangi bir zamanda kaydet", "OptionRecordOnlyNewEpisodes": "Sadece yeni b\u00f6l\u00fcmleri kaydet", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "G\u00fcnler", "HeaderActiveRecordings": "Aktif Kay\u0131tlar", "HeaderLatestRecordings": "Ge\u00e7mi\u015f Kay\u0131tlar", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Anasayfa Secenek 2:", "LabelHomePageSection3": "Anasayfa Secenek 3:", "LabelHomePageSection4": "Anasayfa Secenek 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "En Son G\u00f6r\u00fcnt\u00fclemeler", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Sonraki hafta", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 1f6da0700..bb41b82ff 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/uk.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/uk.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Nothing here.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "Latest", "TabUpcoming": "Upcoming", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u043c\u0435\u0434\u0456\u0430", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 8183e4601..b4df819e0 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "Ok", "ButtonCancel": "Tho\u00e1t", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "MessageNothingHere": "Kh\u00f4ng c\u00f3 g\u00ec \u1edf \u0111\u00e2y.", "MessagePleaseEnsureInternetMetadata": "Please ensure downloading of internet metadata is enabled.", "TabSuggested": "Suggested", + "TabSuggestions": "Suggestions", "TabLatest": "M\u1edbi nh\u1ea5t", "TabUpcoming": "S\u1eafp di\u1ec5n ra", "TabShows": "Shows", @@ -401,9 +404,10 @@ "ButtonRefresh": "Refresh", "ButtonAdvancedRefresh": "Advanced Refresh", "OptionPriority": "Priority", - "OptionRecordOnAllChannels": "Record program on all channels", - "OptionRecordAnytime": "Record program at any time", + "OptionRecordOnAllChannels": "Record on all channels", + "OptionRecordAnytime": "Record at any time", "OptionRecordOnlyNewEpisodes": "Record only new episodes", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "Days", "HeaderActiveRecordings": "Active Recordings", "HeaderLatestRecordings": "Latest Recordings", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web socket port number:", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 b2c216960..27907b30b 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_CN.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "\u786e\u5b9a", "ButtonCancel": "\u53d6\u6d88", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "Suggestions", "TabLatest": "\u6700\u65b0", "TabUpcoming": "\u5373\u5c06\u53d1\u5e03", "TabShows": "\u8282\u76ee", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "\u5f55\u5236\u6240\u6709\u9891\u9053", "OptionRecordAnytime": "\u5f55\u5236\u6240\u6709\u65f6\u6bb5", "OptionRecordOnlyNewEpisodes": "\u53ea\u5f55\u5236\u65b0\u5267\u96c6", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "\u5929", "HeaderActiveRecordings": "\u6b63\u5728\u5f55\u5236\u7684\u8282\u76ee", "HeaderLatestRecordings": "\u6700\u65b0\u5f55\u5236\u7684\u8282\u76ee", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "Web Socket\u7aef\u53e3\u53f7\uff1a", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "\u9996\u9875\u7b2c2\u533a\uff1a", "LabelHomePageSection3": "\u9996\u9875\u7b2c3\u533a\uff1a", "LabelHomePageSection4": "\u9996\u9875\u7b2c4\u533a\uff1a", - "OptionMyViewsButtons": "\u6211\u7684\u754c\u9762(\u6309\u94ae)", - "OptionMyViews": "\u6211\u7684\u754c\u9762", - "OptionMyViewsSmall": "\u6211\u7684\u754c\u9762 (\u5c0f)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "\u6062\u590d\u64ad\u653e", "OptionLatestMedia": "\u6700\u65b0\u5a92\u4f53", "OptionLatestChannelMedia": "\u6700\u65b0\u9891\u9053\u9879\u76ee", @@ -902,8 +906,8 @@ "OptionDefaultSort": "\u9ed8\u8ba4", "OptionCommunityMostWatchedSort": "\u6700\u53d7\u77a9\u76ee", "TabNextUp": "\u4e0b\u4e00\u4e2a", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "\u4eab\u53d7\u5956\u52b1\u529f\u80fd", "MessageNoMovieSuggestionsAvailable": "\u6ca1\u6709\u53ef\u7528\u7684\u7535\u5f71\u5efa\u8bae\u3002\u5f00\u59cb\u89c2\u770b\u4f60\u7684\u7535\u5f71\u5e76\u8fdb\u884c\u8bc4\u5206\uff0c\u518d\u56de\u8fc7\u5934\u6765\u67e5\u770b\u4f60\u7684\u5efa\u8bae\u3002", "MessageNoCollectionsAvailable": "\u5408\u96c6\u8ba9\u4f60\u4eab\u53d7\u7535\u5f71\uff0c\u7cfb\u5217\uff0c\u76f8\u518c\uff0c\u4e66\u7c4d\u548c\u6e38\u620f\u4e2a\u6027\u5316\u7684\u5206\u7ec4\u3002\u5355\u51fb\u201c+\u201d\u6309\u94ae\u5f00\u59cb\u521b\u5efa\u5408\u96c6\u3002", "MessageNoPlaylistsAvailable": "\u64ad\u653e\u5217\u8868\u5141\u8bb8\u60a8\u521b\u5efa\u4e00\u4e2a\u5185\u5bb9\u5217\u8868\u6765\u8fde\u7eed\u64ad\u653e\u3002\u5c06\u9879\u76ee\u6dfb\u52a0\u5230\u64ad\u653e\u5217\u8868\uff0c\u53f3\u952e\u5355\u51fb\u6216\u70b9\u51fb\u5e76\u6309\u4f4f\uff0c\u7136\u540e\u9009\u62e9\u201c\u6dfb\u52a0\u5230\u64ad\u653e\u5217\u8868\u201d\u3002", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "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", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ 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 d957eb2cd..82645d51e 100644 --- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json +++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json @@ -52,6 +52,8 @@ "HeaderAddUser": "Add User", "LabelAddConnectSupporterHelp": "To add a user who isn't listed, you'll need to first link their account to Emby Connect from their user profile page.", "LabelPinCode": "Pin code:", + "OptionHideWatchedContentFromLatestMedia": "Hide watched content from latest media", + "HeaderSync": "Sync", "ButtonOk": "OK", "ButtonCancel": "\u53d6\u6d88", "ButtonExit": "Exit", @@ -167,6 +169,7 @@ "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", + "TabSuggestions": "Suggestions", "TabLatest": "\u6700\u65b0", "TabUpcoming": "\u5373\u5c07\u767c\u5e03", "TabShows": "\u7bc0\u76ee", @@ -404,6 +407,7 @@ "OptionRecordOnAllChannels": "\u9304\u5f71\u6240\u4ee5\u983b\u5ea6\u7684\u7bc0\u76ee", "OptionRecordAnytime": "\u9304\u5f71\u6240\u6709\u6642\u6bb5\u7684\u7bc0\u76ee", "OptionRecordOnlyNewEpisodes": "\u53ea\u9304\u5f71\u6700\u65b0\u7684\u55ae\u5143", + "HeaderRepeatingOptions": "Repeating Options", "HeaderDays": "\u9304\u5f71\u65e5", "HeaderActiveRecordings": "\u6b63\u5728\u9304\u5f71\u7684\u7bc0\u76ee", "HeaderLatestRecordings": "\u6700\u65b0\u9304\u5f71\u7684\u7bc0\u76ee", @@ -547,7 +551,7 @@ "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.", + "LabelEnableHttpsHelp": "If enabled, the server will report an https url to clients as it's external address.", "LabelHttpsPort": "Local https port number:", "LabelHttpsPortHelp": "The tcp port number that Emby's https server should bind to.", "LabelWebSocketPortNumber": "\u7db2\u7d61\u5957\u63a5\u7aef\u53e3\uff1a", @@ -884,9 +888,9 @@ "LabelHomePageSection2": "Home page section 2:", "LabelHomePageSection3": "Home page section 3:", "LabelHomePageSection4": "Home page section 4:", - "OptionMyViewsButtons": "My views (buttons)", - "OptionMyViews": "My views", - "OptionMyViewsSmall": "My views (small)", + "OptionMyMediaButtons": "My media (buttons)", + "OptionMyMedia": "My media", + "OptionMyMediaSmall": "My media (small)", "OptionResumablemedia": "Resume", "OptionLatestMedia": "Latest media", "OptionLatestChannelMedia": "Latest channel items", @@ -902,8 +906,8 @@ "OptionDefaultSort": "Default", "OptionCommunityMostWatchedSort": "Most Watched", "TabNextUp": "Next Up", + "PlaceholderUsername": "Username", "HeaderBecomeProjectSupporter": "Become an Emby Supporter", - "TextEnjoyBonusFeatures": "Enjoy Bonus Features", "MessageNoMovieSuggestionsAvailable": "No movie suggestions are currently available. Start watching and rating your movies, and then come back to view your recommendations.", "MessageNoCollectionsAvailable": "Collections allow you to enjoy personalized groupings of Movies, Series, Albums, Books and Games. Click the + button to start creating Collections.", "MessageNoPlaylistsAvailable": "Playlists allow you to create lists of content to play consecutively at a time. To add items to playlists, right click or tap and hold, then select Add to Playlist.", @@ -1381,10 +1385,33 @@ "LabelEnableInternetMetadataForTvPrograms": "Download internet metadata for:", "OptionTVMovies": "TV Movies", "HeaderUpcomingMovies": "Upcoming Movies", + "HeaderUpcomingSports": "Upcoming Sports", "HeaderUpcomingPrograms": "Upcoming Programs", "ButtonMoreItems": "More...", "LabelShowLibraryTileNames": "Show library tile names", "LabelShowLibraryTileNamesHelp": "Determines if labels will be displayed underneath library tiles on the home page", "OptionEnableTranscodingThrottle": "Enable throttling", - "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback." + "OptionEnableTranscodingThrottleHelp": "Throttling will automatically adjust transcoding speed in order to minimize server cpu utilization during playback.", + "LabelUploadSpeedLimit": "Upload speed limit (Mbps):", + "OptionAllowSyncTranscoding": "Allow syncing that requires transcoding", + "HeaderPlayback": "Media Playback", + "OptionAllowAudioPlaybackTranscoding": "Allow audio playback that requires transcoding", + "OptionAllowVideoPlaybackTranscoding": "Allow video playback that requires transcoding", + "OptionAllowMediaPlaybackTranscodingHelp": "Users will receive friendly messages when content is unplayable based on policy.", + "TabStreaming": "Streaming", + "LabelRemoteClientBitrateLimit": "Remote client bitrate limit (Mbps):", + "LabelRemoteClientBitrateLimitHelp": "An optional streaming bitrate limit for all remote clients. This is useful to prevent clients from requesting a higher bitrate than your connection can handle.", + "LabelConversionCpuCoreLimit": "CPU core limit:", + "LabelConversionCpuCoreLimitHelp": "Limit the number of CPU cores that will be used during sync conversion.", + "OptionEnableFullSpeedConversion": "Enable full speed conversion", + "OptionEnableFullSpeedConversionHelp": "By default, sync conversion is performed at a low speed to minimize resource consumption.", + "HeaderPlaylists": "Playlists", + "HeaderSelectDate": "Select Date", + "HeaderWelcomeExclamation": "Welcome!", + "HeaderMyPreferences": "My Preferences", + "ButtonMyPreferencesWelcomeYes": "Yes, I'd like to set my preferences now.", + "ButtonMyPreferencesWelcomeNo": "No thanks, I'll do it later.", + "MyPreferencesWelcomeMessage1": "We've presented your library in a way we think you'll enjoy. The appearance and grouping of content can be changed anytime by adjusting your preferences. Your preferences will apply to all Emby apps.", + "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?", + "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences." }
\ No newline at end of file diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index db2397d2f..a6e49ea8c 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -45,22 +45,22 @@ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> </PropertyGroup> <ItemGroup> - <Reference Include="ImageMagickSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\ImageMagickSharp.1.0.0.11\lib\net45\ImageMagickSharp.dll</HintPath> - </Reference> <Reference Include="MediaBrowser.Naming, Version=1.0.5509.27636, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\MediaBrowser.Naming.1.0.0.32\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath> </Reference> - <Reference Include="Mono.Nat, Version=1.2.21.0, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="Mono.Nat, Version=1.2.23.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\Mono.Nat.1.2.21.0\lib\net40\Mono.Nat.dll</HintPath> + <HintPath>..\packages\Mono.Nat.1.2.23.0\lib\net40\Mono.Nat.dll</HintPath> </Reference> <Reference Include="MoreLinq, Version=1.1.17511.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll</HintPath> </Reference> + <Reference Include="Patterns.IO, Version=1.0.5580.36861, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll</HintPath> + </Reference> <Reference Include="Patterns.Logging"> <HintPath>..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll</HintPath> <Private>True</Private> @@ -68,9 +68,9 @@ <Reference Include="ServiceStack.Api.Swagger"> <HintPath>..\ThirdParty\ServiceStack\ServiceStack.Api.Swagger.dll</HintPath> </Reference> - <Reference Include="SocketHttpListener, Version=1.0.5554.26260, Culture=neutral, processorArchitecture=MSIL"> + <Reference Include="SocketHttpListener, Version=1.0.5581.23362, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> - <HintPath>..\packages\SocketHttpListener.1.0.0.3\lib\net45\SocketHttpListener.dll</HintPath> + <HintPath>..\packages\SocketHttpListener.1.0.0.4\lib\net45\SocketHttpListener.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.Core" /> @@ -129,10 +129,6 @@ <Compile Include="Devices\DeviceManager.cs" /> <Compile Include="Devices\DeviceRepository.cs" /> <Compile Include="Devices\CameraUploadsFolder.cs" /> - <Compile Include="Drawing\ImageHeader.cs" /> - <Compile Include="Drawing\PercentPlayedDrawer.cs" /> - <Compile Include="Drawing\PlayedIndicatorDrawer.cs" /> - <Compile Include="Drawing\UnplayedCountIndicator.cs" /> <Compile Include="Dto\DtoService.cs" /> <Compile Include="EntryPoints\ActivityLogEntryPoint.cs" /> <Compile Include="EntryPoints\AutomaticRestartEntryPoint.cs" /> @@ -174,13 +170,11 @@ <Compile Include="HttpServer\SocketSharp\SharpWebSocket.cs" /> <Compile Include="HttpServer\StreamWriter.cs" /> <Compile Include="HttpServer\SwaggerService.cs" /> - <Compile Include="Drawing\ImageProcessor.cs" /> <Compile Include="HttpServer\SocketSharp\Extensions.cs" /> <Compile Include="HttpServer\SocketSharp\RequestMono.cs" /> <Compile Include="HttpServer\SocketSharp\WebSocketSharpListener.cs" /> <Compile Include="HttpServer\SocketSharp\WebSocketSharpRequest.cs" /> <Compile Include="HttpServer\SocketSharp\WebSocketSharpResponse.cs" /> - <Compile Include="HttpServer\ThrottledStream.cs" /> <Compile Include="Intros\DefaultIntroProvider.cs" /> <Compile Include="IO\LibraryMonitor.cs" /> <Compile Include="Library\CoreResolutionIgnoreRule.cs" /> @@ -233,6 +227,7 @@ <Compile Include="Localization\LocalizationManager.cs" /> <Compile Include="Logging\PatternsLogger.cs" /> <Compile Include="MediaEncoder\EncodingManager.cs" /> + <Compile Include="Sorting\StartDateComparer.cs" /> <Compile Include="Sync\SyncHelper.cs" /> <Compile Include="Sync\SyncJobOptions.cs" /> <Compile Include="UserViews\DynamicImageProvider.cs" /> @@ -251,8 +246,6 @@ <Compile Include="Persistence\SqliteShrinkMemoryTimer.cs" /> <Compile Include="Persistence\TypeMapper.cs" /> <Compile Include="Photos\BaseDynamicImageProvider.cs" /> - <Compile Include="Photos\DynamicImageHelpers.cs" /> - <Compile Include="UserViews\StripCollageBuilder.cs" /> <Compile Include="Playlists\ManualPlaylistsFolder.cs" /> <Compile Include="Photos\PhotoAlbumImageProvider.cs" /> <Compile Include="Playlists\PlaylistImageProvider.cs" /> @@ -431,9 +424,6 @@ <EmbeddedResource Include="Localization\JavaScript\uk.json" /> <EmbeddedResource Include="Localization\Server\bg_BG.json" /> <EmbeddedResource Include="Localization\Server\uk.json" /> - <EmbeddedResource Include="Drawing\fonts\webdings.ttf" /> - <EmbeddedResource Include="Drawing\fonts\robotoregular.ttf" /> - <EmbeddedResource Include="Drawing\fonts\MontserratLight.otf" /> <None Include="Localization\JavaScript\sl_SI.json" /> <EmbeddedResource Include="Localization\Server\sl_SI.json" /> <None Include="packages.config" /> diff --git a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs index 56557d6e1..6b99883a5 100644 --- a/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs +++ b/MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs @@ -151,8 +151,9 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder chapter.ImagePath = path; changesMade = true; } - catch + catch (Exception ex) { + _logger.ErrorException("Error extraching chapter images for {0}", ex, string.Join(",", inputPath)); success = false; break; } diff --git a/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs b/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs index 5e02b2bac..1ff928cd5 100644 --- a/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs +++ b/MediaBrowser.Server.Implementations/Notifications/NotificationManager.cs @@ -95,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Notifications var config = GetConfiguration(); return _userManager.Users - .Where(i => config.IsEnabledToSendToUser(request.NotificationType, i.Id.ToString("N"), i.Configuration)) + .Where(i => config.IsEnabledToSendToUser(request.NotificationType, i.Id.ToString("N"), i.Policy)) .Select(i => i.Id.ToString("N")); } diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs index e9d7f44ec..76c1274b2 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Persistence; +using System.Globalization; +using MediaBrowser.Controller.Persistence; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; @@ -40,7 +41,7 @@ namespace MediaBrowser.Server.Implementations.Persistence // Add PixelFormat column - createTableCommand += "(ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, IsCabac BIT NULL, PRIMARY KEY (ItemId, StreamIndex))"; + createTableCommand += "(ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, IsCabac BIT NULL, KeyFrames TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))"; string[] queries = { @@ -61,6 +62,7 @@ namespace MediaBrowser.Server.Implementations.Persistence AddIsAnamorphicColumn(); AddIsCabacColumn(); AddRefFramesCommand(); + AddKeyFramesCommand(); PrepareStatements(); @@ -160,6 +162,37 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.RunQueries(new[] { builder.ToString() }, _logger); } + private void AddKeyFramesCommand() + { + using (var cmd = _connection.CreateCommand()) + { + cmd.CommandText = "PRAGMA table_info(mediastreams)"; + + 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, "KeyFrames", StringComparison.OrdinalIgnoreCase)) + { + return; + } + } + } + } + } + + var builder = new StringBuilder(); + + builder.AppendLine("alter table mediastreams"); + builder.AppendLine("add column KeyFrames TEXT NULL"); + + _connection.RunQueries(new[] { builder.ToString() }, _logger); + } + private void AddIsCabacColumn() { using (var cmd = _connection.CreateCommand()) @@ -249,6 +282,7 @@ namespace MediaBrowser.Server.Implementations.Persistence "BitDepth", "IsAnamorphic", "RefFrames", + "KeyFrames", "IsCabac" }; @@ -430,7 +464,12 @@ namespace MediaBrowser.Server.Implementations.Persistence if (!reader.IsDBNull(25)) { - item.IsCabac = reader.GetBoolean(25); + item.KeyFrames = reader.GetString(25).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => int.Parse(i, CultureInfo.InvariantCulture)).ToList(); + } + + if (!reader.IsDBNull(26)) + { + item.IsCabac = reader.GetBoolean(26); } return item; @@ -498,7 +537,15 @@ namespace MediaBrowser.Server.Implementations.Persistence _saveStreamCommand.GetParameter(22).Value = stream.BitDepth; _saveStreamCommand.GetParameter(23).Value = stream.IsAnamorphic; _saveStreamCommand.GetParameter(24).Value = stream.RefFrames; - _saveStreamCommand.GetParameter(25).Value = stream.IsCabac; + if (stream.KeyFrames != null) + { + _saveStreamCommand.GetParameter(25).Value = string.Join(",", stream.KeyFrames.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToArray()); + } + else + { + _saveStreamCommand.GetParameter(25).Value = null; + } + _saveStreamCommand.GetParameter(26).Value = stream.IsCabac; _saveStreamCommand.Transaction = transaction; _saveStreamCommand.ExecuteNonQuery(); diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs index 1063fde53..4b7bfad3f 100644 --- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs @@ -1,14 +1,14 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Threading; @@ -22,12 +22,14 @@ namespace MediaBrowser.Server.Implementations.Photos protected IFileSystem FileSystem { get; private set; } protected IProviderManager ProviderManager { get; private set; } protected IApplicationPaths ApplicationPaths { get; private set; } + protected IImageProcessor ImageProcessor { get; set; } - protected BaseDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) + protected BaseDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) { ApplicationPaths = applicationPaths; ProviderManager = providerManager; FileSystem = fileSystem; + ImageProcessor = imageProcessor; } public virtual bool Supports(IHasImages item) @@ -76,56 +78,23 @@ namespace MediaBrowser.Server.Implementations.Photos string cacheKey, CancellationToken cancellationToken) { - var stream = await CreateImageAsync(item, itemsWithImages, imageType, 0).ConfigureAwait(false); + var outputPath = Path.Combine(ApplicationPaths.TempDirectory, Guid.NewGuid() + ".png"); + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + var imageCreated = CreateImage(item, itemsWithImages, outputPath, imageType, 0); - if (stream == null) + if (!imageCreated) { 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); - } - } + await ProviderManager.SaveImage(item, outputPath, "image/png", imageType, null, cacheKey, cancellationToken).ConfigureAwait(false); return ItemUpdateType.ImageUpdate; } - public async Task<DynamicImageResponse> GetImage(IHasImages item, ImageType type, CancellationToken cancellationToken) - { - var items = await GetItemsWithImages(item).ConfigureAwait(false); - var cacheKey = GetConfigurationCacheKey(items, item.Name); - - var result = await CreateImageAsync(item, items, type, 0).ConfigureAwait(false); - - return new DynamicImageResponse - { - HasImage = result != null, - Stream = result, - InternalCacheKey = cacheKey, - Format = ImageFormat.Png - }; - } - protected abstract Task<List<BaseItem>> GetItemsWithImages(IHasImages item); - private const string Version = "5"; + private const string Version = "29"; protected string GetConfigurationCacheKey(List<BaseItem> items, string itemName) { var parts = Version + "_" + (itemName ?? string.Empty) + "_" + @@ -134,30 +103,47 @@ namespace MediaBrowser.Server.Implementations.Photos return parts.GetMD5().ToString("N"); } - protected Task<Stream> GetThumbCollage(List<BaseItem> items) + protected void CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath) + { + CreateCollage(primaryItem, items, outputPath, 960, 540, true, primaryItem.Name); + } + + protected virtual IEnumerable<string> GetStripCollageImagePaths(IHasImages primaryItem, IEnumerable<BaseItem> items) { - var files = items + return items .Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)) - .Where(i => !string.IsNullOrWhiteSpace(i)) - .ToList(); + .Where(i => !string.IsNullOrWhiteSpace(i)); + } - return DynamicImageHelpers.GetThumbCollage(files, - FileSystem, - 1600, - 900, - ApplicationPaths); + protected void CreatePosterCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath) + { + CreateCollage(primaryItem, items, outputPath, 600, 900, true, primaryItem.Name); } - protected Task<Stream> GetSquareCollage(List<BaseItem> items) + protected void CreateSquareCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath) { - var files = items - .Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)) - .Where(i => !string.IsNullOrWhiteSpace(i)) - .ToList(); + CreateCollage(primaryItem, items, outputPath, 800, 800, true, primaryItem.Name); + } + + protected void CreateThumbCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text) + { + CreateCollage(primaryItem, items, outputPath, width, height, drawText, text); + } + + private void CreateCollage(IHasImages primaryItem, List<BaseItem> items, string outputPath, int width, int height, bool drawText, string text) + { + Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); + + var options = new ImageCollageOptions + { + Height = height, + Width = width, + OutputPath = outputPath, + Text = drawText ? text : null, + InputPaths = GetStripCollageImagePaths(primaryItem, items).ToArray() + }; - return DynamicImageHelpers.GetSquareCollage(files, - FileSystem, - 800, ApplicationPaths); + ImageProcessor.CreateImageCollage(options); } public string Name @@ -165,19 +151,38 @@ namespace MediaBrowser.Server.Implementations.Photos get { return "Dynamic Image Provider"; } } - protected virtual async Task<Stream> CreateImageAsync(IHasImages item, + protected virtual bool CreateImage(IHasImages item, List<BaseItem> itemsWithImages, + string outputPath, ImageType imageType, int imageIndex) { if (itemsWithImages.Count == 0) { - return null; + return false; + } + + if (imageType == ImageType.Thumb) + { + CreateThumbCollage(item, itemsWithImages, outputPath); + return true; + } + + if (imageType == ImageType.Primary) + { + if (item is PhotoAlbum || item is Playlist) + { + CreateSquareCollage(item, itemsWithImages, outputPath); + } + else + { + CreatePosterCollage(item, itemsWithImages, outputPath); + } + + return true; } - return imageType == ImageType.Thumb ? - await GetThumbCollage(itemsWithImages).ConfigureAwait(false) : - await GetSquareCollage(itemsWithImages).ConfigureAwait(false); + throw new ArgumentException("Unexpected image type"); } public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) diff --git a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs b/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs deleted file mode 100644 index 7f8435097..000000000 --- a/MediaBrowser.Server.Implementations/Photos/DynamicImageHelpers.cs +++ /dev/null @@ -1,132 +0,0 @@ -using ImageMagickSharp; -using MediaBrowser.Common.Configuration; -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 -{ - public static class DynamicImageHelpers - { - public static async Task<Stream> GetThumbCollage(List<string> files, - IFileSystem fileSystem, - int width, - int height, IApplicationPaths appPaths) - { - if (files.Any(string.IsNullOrWhiteSpace)) - { - 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); - } - - const int rows = 1; - const int cols = 3; - - int cellWidth = 2 * (width / 3); - int cellHeight = height; - var index = 0; - - using (var wand = new MagickWand(width, height, new PixelWand(ColorName.None, 1))) - { - for (var row = 0; row < rows; row++) - { - for (var col = 0; col < cols; col++) - { - var x = col * (cellWidth / 2); - var y = row * cellHeight; - - if (files.Count > index) - { - using (var innerWand = new MagickWand(files[index])) - { - innerWand.CurrentImage.ResizeImage(cellWidth, cellHeight); - wand.CurrentImage.CompositeImage(innerWand, CompositeOperator.OverCompositeOp, x, y); - } - } - - index++; - } - } - - return GetStream(wand, appPaths); - } - } - - public static async Task<Stream> GetSquareCollage(List<string> files, - IFileSystem fileSystem, - int size, IApplicationPaths appPaths) - { - if (files.Any(string.IsNullOrWhiteSpace)) - { - 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); - } - - const int rows = 2; - const int cols = 2; - - int singleSize = size / 2; - var index = 0; - - using (var wand = new MagickWand(size, size, new PixelWand(ColorName.None, 1))) - { - for (var row = 0; row < rows; row++) - { - for (var col = 0; col < cols; col++) - { - var x = col * singleSize; - var y = row * singleSize; - - using (var innerWand = new MagickWand(files[index])) - { - innerWand.CurrentImage.ResizeImage(singleSize, singleSize); - wand.CurrentImage.CompositeImage(innerWand, CompositeOperator.OverCompositeOp, x, y); - } - - index++; - } - } - - return GetStream(wand, appPaths); - } - } - - private static Task<Stream> GetSingleImage(List<string> files, IFileSystem fileSystem) - { - return Task.FromResult<Stream>(fileSystem.GetFileStream(files[0], FileMode.Open, FileAccess.Read, FileShare.Read)); - } - - internal static Stream GetStream(MagickWand image, IApplicationPaths appPaths) - { - var tempFile = Path.Combine(appPaths.TempDirectory, Guid.NewGuid().ToString("N") + ".png"); - - Directory.CreateDirectory(Path.GetDirectoryName(tempFile)); - - image.CurrentImage.CompressionQuality = 100; - image.SaveImage(tempFile); - - return File.OpenRead(tempFile); - } - } -} diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs index 73d9183a5..eda4d8cc1 100644 --- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using System.Collections.Generic; @@ -10,14 +11,14 @@ namespace MediaBrowser.Server.Implementations.Photos { public class PhotoAlbumImageProvider : BaseDynamicImageProvider<PhotoAlbum> { - public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) + public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) { } protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item) { var photoAlbum = (PhotoAlbum)item; - var items = GetFinalItems(photoAlbum.GetRecursiveChildren(i => i is Photo).ToList()); + var items = GetFinalItems(photoAlbum.GetRecursiveChildren().ToList()); return Task.FromResult(items); } diff --git a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs index 980c3d14a..2f3a1dd0c 100644 --- a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs +++ b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs @@ -45,11 +45,11 @@ namespace MediaBrowser.Server.Implementations.Playlists } } - public class PlaylistssDynamicFolder : IVirtualFolderCreator + public class PlaylistsDynamicFolder : IVirtualFolderCreator { private readonly IApplicationPaths _appPaths; - public PlaylistssDynamicFolder(IApplicationPaths appPaths) + public PlaylistsDynamicFolder(IApplicationPaths appPaths) { _appPaths = appPaths; } diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs index 81f9438b9..dcd9d21ea 100644 --- a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; @@ -16,7 +17,7 @@ namespace MediaBrowser.Server.Implementations.Playlists { public class PlaylistImageProvider : BaseDynamicImageProvider<Playlist> { - public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths) : base(fileSystem, providerManager, applicationPaths) + public PlaylistImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor) : base(fileSystem, providerManager, applicationPaths, imageProcessor) { } diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 7f5033b98..112778ec8 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -305,12 +305,9 @@ namespace MediaBrowser.Server.Implementations.Session } } - private async Task<MediaSourceInfo> GetMediaSource(IHasMediaSources item, string mediaSourceId) + private Task<MediaSourceInfo> GetMediaSource(IHasMediaSources item, string mediaSourceId) { - var sources = await _mediaSourceManager.GetPlayackMediaSources(item.Id.ToString("N"), false, CancellationToken.None) - .ConfigureAwait(false); - - return sources.FirstOrDefault(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase)); + return _mediaSourceManager.GetMediaSource(item, mediaSourceId, false); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/Sorting/StartDateComparer.cs b/MediaBrowser.Server.Implementations/Sorting/StartDateComparer.cs new file mode 100644 index 000000000..7e6f24ec1 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sorting/StartDateComparer.cs @@ -0,0 +1,47 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.LiveTv; +using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Querying; +using System; + +namespace MediaBrowser.Server.Implementations.Sorting +{ + public class StartDateComparer : IBaseItemComparer + { + /// <summary> + /// Compares the specified x. + /// </summary> + /// <param name="x">The x.</param> + /// <param name="y">The y.</param> + /// <returns>System.Int32.</returns> + public int Compare(BaseItem x, BaseItem y) + { + return GetDate(x).CompareTo(GetDate(y)); + } + + /// <summary> + /// Gets the date. + /// </summary> + /// <param name="x">The x.</param> + /// <returns>DateTime.</returns> + private DateTime GetDate(BaseItem x) + { + var hasStartDate = x as LiveTvProgram; + + if (hasStartDate != null) + { + return hasStartDate.StartDate; + } + return DateTime.MinValue; + } + + /// <summary> + /// Gets the name. + /// </summary> + /// <value>The name.</value> + public string Name + { + get { return ItemSortBy.StartDate; } + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index 99d758233..7b1fa4dec 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Server.Implementations.Sync public string Name { - get { return "App Sync"; } + get { return "Mobile Sync"; } } public IEnumerable<SyncTarget> GetAllSyncTargets() diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs index 73400f834..f881a2055 100644 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs @@ -195,17 +195,39 @@ namespace MediaBrowser.Server.Implementations.Sync } }; - var maxAudioChannels = supportsAc3 || supportsDca ? "5" : "2"; codecProfiles.Add(new CodecProfile { Type = CodecType.VideoAudio, + Codec = "ac3", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, - Value = maxAudioChannels, + Value = "5", + IsRequired = true + }, + new ProfileCondition + { + Condition = ProfileConditionType.Equals, + Property = ProfileConditionValue.IsSecondaryAudio, + Value = "false", + IsRequired = false + } + } + }); + codecProfiles.Add(new CodecProfile + { + Type = CodecType.VideoAudio, + Codec = "ac3", + Conditions = new[] + { + new ProfileCondition + { + Condition = ProfileConditionType.LessThanEqual, + Property = ProfileConditionValue.AudioChannels, + Value = "2", IsRequired = true }, new ProfileCondition diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 26413c033..1a8b55a25 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -1,7 +1,8 @@ -using System.Globalization; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; using MediaBrowser.Common.Progress; using MediaBrowser.Controller; +using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; @@ -10,12 +11,14 @@ using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.Sync; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; +using Patterns.IO; namespace MediaBrowser.Server.Implementations.Sync { @@ -25,13 +28,18 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly IServerApplicationHost _appHost; private readonly ILogger _logger; private readonly IFileSystem _fileSystem; + private readonly IConfigurationManager _config; - public MediaSync(ILogger logger, ISyncManager syncManager, IServerApplicationHost appHost, IFileSystem fileSystem) + public const string PathSeparatorString = "/"; + public const char PathSeparatorChar = '/'; + + public MediaSync(ILogger logger, ISyncManager syncManager, IServerApplicationHost appHost, IFileSystem fileSystem, IConfigurationManager config) { _logger = logger; _syncManager = syncManager; _appHost = appHost; _fileSystem = fileSystem; + _config = config; } public async Task Sync(IServerSyncProvider provider, @@ -67,7 +75,24 @@ namespace MediaBrowser.Server.Implementations.Sync SyncTarget target, CancellationToken cancellationToken) { - var jobItemIds = await dataProvider.GetSyncJobItemIds(target, serverId).ConfigureAwait(false); + var localItems = await dataProvider.GetLocalItems(target, serverId).ConfigureAwait(false); + var remoteFiles = await provider.GetFiles(new FileQuery(), target, cancellationToken).ConfigureAwait(false); + var remoteIds = remoteFiles.Items.Select(i => i.Id).ToList(); + + var jobItemIds = new List<string>(); + + foreach (var localItem in localItems) + { + // TODO: Remove this after a while + if (string.IsNullOrWhiteSpace(localItem.FileId)) + { + jobItemIds.Add(localItem.SyncJobItemId); + } + else if (remoteIds.Contains(localItem.FileId, StringComparer.OrdinalIgnoreCase)) + { + jobItemIds.Add(localItem.SyncJobItemId); + } + } var result = await _syncManager.SyncData(new SyncDataRequest { @@ -152,12 +177,14 @@ namespace MediaBrowser.Server.Implementations.Sync var transferSuccess = false; Exception transferException = null; + var options = _config.GetSyncOptions(); + try { var fileTransferProgress = new ActionableProgress<double>(); fileTransferProgress.RegisterAction(pct => progress.Report(pct * .92)); - var sendFileResult = await SendFile(provider, internalSyncJobItem.OutputPath, localItem.LocalPath, target, fileTransferProgress, cancellationToken).ConfigureAwait(false); + var sendFileResult = await SendFile(provider, internalSyncJobItem.OutputPath, localItem.LocalPath.Split(PathSeparatorChar), target, options, fileTransferProgress, cancellationToken).ConfigureAwait(false); if (localItem.Item.MediaSources != null) { @@ -171,6 +198,8 @@ namespace MediaBrowser.Server.Implementations.Sync } } + localItem.FileId = sendFileResult.Id; + // Create db record await dataProvider.AddOrUpdate(target, localItem).ConfigureAwait(false); @@ -179,7 +208,7 @@ namespace MediaBrowser.Server.Implementations.Sync var mediaSource = localItem.Item.MediaSources.FirstOrDefault(); if (mediaSource != null) { - await SendSubtitles(localItem, mediaSource, provider, dataProvider, target, cancellationToken).ConfigureAwait(false); + await SendSubtitles(localItem, mediaSource, provider, dataProvider, target, options, cancellationToken).ConfigureAwait(false); } } @@ -207,7 +236,7 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private async Task SendSubtitles(LocalItem localItem, MediaSourceInfo mediaSource, IServerSyncProvider provider, ISyncDataProvider dataProvider, SyncTarget target, CancellationToken cancellationToken) + private async Task SendSubtitles(LocalItem localItem, MediaSourceInfo mediaSource, IServerSyncProvider provider, ISyncDataProvider dataProvider, SyncTarget target, SyncOptions options, CancellationToken cancellationToken) { var failedSubtitles = new List<MediaStream>(); var requiresSave = false; @@ -219,13 +248,13 @@ namespace MediaBrowser.Server.Implementations.Sync try { var remotePath = GetRemoteSubtitlePath(localItem, mediaStream, provider, target); - var sendFileResult = await SendFile(provider, mediaStream.Path, remotePath, target, new Progress<double>(), cancellationToken).ConfigureAwait(false); + var sendFileResult = await SendFile(provider, mediaStream.Path, remotePath, target, options, new Progress<double>(), cancellationToken).ConfigureAwait(false); // This is the path that will be used when talking to the provider - mediaStream.ExternalId = remotePath; + mediaStream.ExternalId = sendFileResult.Id; // Keep track of all additional files for cleanup later. - localItem.AdditionalFiles.Add(remotePath); + localItem.AdditionalFiles.Add(sendFileResult.Id); // This is the public path clients will use mediaStream.Path = sendFileResult.Path; @@ -250,17 +279,15 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private string GetRemoteSubtitlePath(LocalItem item, MediaStream stream, IServerSyncProvider provider, SyncTarget target) + private string[] GetRemoteSubtitlePath(LocalItem item, MediaStream stream, IServerSyncProvider provider, SyncTarget target) { - var path = item.LocalPath; - var filename = GetSubtitleSaveFileName(item, stream.Language, stream.IsForced) + "." + stream.Codec.ToLower(); - var parentPath = provider.GetParentDirectoryPath(path, target); - - path = Path.Combine(parentPath, filename); + var pathParts = item.LocalPath.Split(PathSeparatorChar); + var list = pathParts.Take(pathParts.Length - 1).ToList(); + list.Add(filename); - return path; + return list.ToArray(); } private string GetSubtitleSaveFileName(LocalItem item, string language, bool isForced) @@ -294,12 +321,16 @@ namespace MediaBrowser.Server.Implementations.Sync foreach (var localItem in localItems) { var files = localItem.AdditionalFiles.ToList(); - files.Insert(0, localItem.LocalPath); + + // TODO: Remove this. Have to check it for now since this is a new property + if (!string.IsNullOrWhiteSpace(localItem.FileId)) + { + files.Insert(0, localItem.FileId); + } foreach (var file in files) { _logger.Debug("Removing {0} from {1}.", file, target.Name); - await provider.DeleteFile(file, target, cancellationToken).ConfigureAwait(false); } @@ -307,12 +338,19 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private async Task<SyncedFileInfo> SendFile(IServerSyncProvider provider, string inputPath, string remotePath, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken) + private async Task<SyncedFileInfo> SendFile(IServerSyncProvider provider, string inputPath, string[] pathParts, SyncTarget target, SyncOptions options, IProgress<double> progress, CancellationToken cancellationToken) { - _logger.Debug("Sending {0} to {1}. Remote path: {2}", inputPath, provider.Name, remotePath); - using (var stream = _fileSystem.GetFileStream(inputPath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) + _logger.Debug("Sending {0} to {1}. Remote path: {2}", inputPath, provider.Name, string.Join("/", pathParts)); + using (var fileStream = _fileSystem.GetFileStream(inputPath, FileMode.Open, FileAccess.Read, FileShare.Read, true)) { - return await provider.SendFile(stream, remotePath, target, progress, cancellationToken).ConfigureAwait(false); + Stream stream = fileStream; + + if (options.UploadSpeedLimitBytes > 0 && provider is IRemoteSyncProvider) + { + stream = new ThrottledStream(stream, options.UploadSpeedLimitBytes); + } + + return await provider.SendFile(stream, pathParts, target, progress, cancellationToken).ConfigureAwait(false); } } @@ -336,7 +374,7 @@ namespace MediaBrowser.Server.Implementations.Sync var path = GetDirectoryPath(provider, job, syncedItem, libraryItem, serverName); path.Add(GetLocalFileName(provider, libraryItem, originalFileName)); - var localPath = provider.GetFullPath(path, target); + var localPath = string.Join(PathSeparatorString, path.ToArray()); foreach (var mediaSource in libraryItem.MediaSources) { diff --git a/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs b/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs index a8bc24c2a..6f09e96f0 100644 --- a/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MultiProviderSync.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Common.Progress; using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; @@ -18,13 +19,15 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly IServerApplicationHost _appHost; private readonly ILogger _logger; private readonly IFileSystem _fileSystem; + private readonly IConfigurationManager _config; - public MultiProviderSync(SyncManager syncManager, IServerApplicationHost appHost, ILogger logger, IFileSystem fileSystem) + public MultiProviderSync(SyncManager syncManager, IServerApplicationHost appHost, ILogger logger, IFileSystem fileSystem, IConfigurationManager config) { _syncManager = syncManager; _appHost = appHost; _logger = logger; _fileSystem = fileSystem; + _config = config; } public async Task Sync(IEnumerable<IServerSyncProvider> providers, IProgress<double> progress, CancellationToken cancellationToken) @@ -56,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.Sync var dataProvider = _syncManager.GetDataProvider(target.Item1, target.Item2); - await new MediaSync(_logger, _syncManager, _appHost, _fileSystem) + await new MediaSync(_logger, _syncManager, _appHost, _fileSystem, _config) .Sync(target.Item1, dataProvider, target.Item2, innerProgress, cancellationToken) .ConfigureAwait(false); diff --git a/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs index 148602bd4..9477a23f1 100644 --- a/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs +++ b/MediaBrowser.Server.Implementations/Sync/ServerSyncScheduledTask.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.IO; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; @@ -17,13 +18,15 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly ILogger _logger; private readonly IFileSystem _fileSystem; private readonly IServerApplicationHost _appHost; + private readonly IConfigurationManager _config; - public ServerSyncScheduledTask(ISyncManager syncManager, ILogger logger, IFileSystem fileSystem, IServerApplicationHost appHost) + public ServerSyncScheduledTask(ISyncManager syncManager, ILogger logger, IFileSystem fileSystem, IServerApplicationHost appHost, IConfigurationManager config) { _syncManager = syncManager; _logger = logger; _fileSystem = fileSystem; _appHost = appHost; + _config = config; } public string Name @@ -46,7 +49,7 @@ namespace MediaBrowser.Server.Implementations.Sync public Task Execute(CancellationToken cancellationToken, IProgress<double> progress) { - return new MultiProviderSync((SyncManager)_syncManager, _appHost, _logger, _fileSystem) + return new MultiProviderSync((SyncManager)_syncManager, _appHost, _logger, _fileSystem, _config) .Sync(ServerSyncProviders, progress, cancellationToken); } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index 185c3464e..fd4092974 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -456,17 +456,18 @@ namespace MediaBrowser.Server.Implementations.Sync jobItem.Progress = 0; + var syncOptions = _config.GetSyncOptions(); var user = _userManager.GetUserById(job.UserId); var video = item as Video; if (video != null) { - await Sync(jobItem, job, video, user, enableConversion, progress, cancellationToken).ConfigureAwait(false); + await Sync(jobItem, job, video, user, enableConversion, syncOptions, progress, cancellationToken).ConfigureAwait(false); } else if (item is Audio) { - await Sync(jobItem, job, (Audio)item, user, enableConversion, progress, cancellationToken).ConfigureAwait(false); + await Sync(jobItem, job, (Audio)item, user, enableConversion, syncOptions, progress, cancellationToken).ConfigureAwait(false); } else if (item is Photo) @@ -480,7 +481,7 @@ namespace MediaBrowser.Server.Implementations.Sync } } - private async Task Sync(SyncJobItem jobItem, SyncJob job, Video item, User user, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken) + private async Task Sync(SyncJobItem jobItem, SyncJob job, Video item, User user, bool enableConversion, SyncOptions syncOptions, IProgress<double> progress, CancellationToken cancellationToken) { var jobOptions = _syncManager.GetVideoOptions(jobItem, job); var conversionOptions = new VideoOptions @@ -493,7 +494,7 @@ namespace MediaBrowser.Server.Implementations.Sync conversionOptions.ItemId = item.Id.ToString("N"); conversionOptions.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); - var streamInfo = new StreamBuilder().BuildVideoItem(conversionOptions); + var streamInfo = new StreamBuilder(_logger).BuildVideoItem(conversionOptions); var mediaSource = streamInfo.MediaSource; // No sense creating external subs if we're already burning one into the video @@ -542,7 +543,9 @@ namespace MediaBrowser.Server.Implementations.Sync jobItem.OutputPath = await _mediaEncoder.EncodeVideo(new EncodingJobOptions(streamInfo, conversionOptions.Profile) { - OutputDirectory = jobItem.TemporaryPath + OutputDirectory = jobItem.TemporaryPath, + CpuCoreLimit = syncOptions.TranscodingCpuCoreLimit, + ReadInputAtNativeFramerate = !syncOptions.EnableFullSpeedTranscoding }, innerProgress, cancellationToken); } @@ -677,7 +680,7 @@ namespace MediaBrowser.Server.Implementations.Sync private const int DatabaseProgressUpdateIntervalSeconds = 2; - private async Task Sync(SyncJobItem jobItem, SyncJob job, Audio item, User user, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken) + private async Task Sync(SyncJobItem jobItem, SyncJob job, Audio item, User user, bool enableConversion, SyncOptions syncOptions, IProgress<double> progress, CancellationToken cancellationToken) { var jobOptions = _syncManager.GetAudioOptions(jobItem, job); var conversionOptions = new AudioOptions @@ -690,7 +693,7 @@ namespace MediaBrowser.Server.Implementations.Sync conversionOptions.ItemId = item.Id.ToString("N"); conversionOptions.MediaSources = _mediaSourceManager.GetStaticMediaSources(item, false, user).ToList(); - var streamInfo = new StreamBuilder().BuildAudioItem(conversionOptions); + var streamInfo = new StreamBuilder(_logger).BuildAudioItem(conversionOptions); var mediaSource = streamInfo.MediaSource; jobItem.MediaSourceId = streamInfo.MediaSourceId; @@ -725,7 +728,8 @@ namespace MediaBrowser.Server.Implementations.Sync jobItem.OutputPath = await _mediaEncoder.EncodeAudio(new EncodingJobOptions(streamInfo, conversionOptions.Profile) { - OutputDirectory = jobItem.TemporaryPath + OutputDirectory = jobItem.TemporaryPath, + CpuCoreLimit = syncOptions.TranscodingCpuCoreLimit }, innerProgress, cancellationToken); } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index a39a2b1cd..6f0310e3c 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -512,12 +512,7 @@ namespace MediaBrowser.Server.Implementations.Sync var video = item as Video; if (video != null) { - if (video.VideoType == VideoType.Iso) - { - return false; - } - - if (video.VideoType == VideoType.BluRay || video.VideoType == VideoType.Dvd || video.VideoType == VideoType.HdDvd) + if (video.VideoType == VideoType.Iso || video.VideoType == VideoType.BluRay || video.VideoType == VideoType.Dvd || video.VideoType == VideoType.HdDvd) { return false; } @@ -552,7 +547,7 @@ namespace MediaBrowser.Server.Implementations.Sync } } - if (item is LiveTvChannel || item is IChannelItem || item is ILiveTvRecording) + if (item is LiveTvChannel || item is IChannelItem) { return false; } @@ -566,7 +561,7 @@ namespace MediaBrowser.Server.Implementations.Sync return true; } - return item.LocationType == LocationType.FileSystem || item is Season || item is ILiveTvRecording; + return item.LocationType == LocationType.FileSystem || item is Season; } private string GetDefaultName(BaseItem item) @@ -755,6 +750,9 @@ namespace MediaBrowser.Server.Implementations.Sync foreach (var jobItem in jobItemResult.Items) { + var requiresSaving = false; + var removeFromDevice = false; + if (request.LocalItemIds.Contains(jobItem.ItemId, StringComparer.OrdinalIgnoreCase)) { var job = _repo.GetJob(jobItem.JobId); @@ -764,13 +762,13 @@ namespace MediaBrowser.Server.Implementations.Sync { // Tell the device to remove it since it has been marked for removal _logger.Debug("Adding ItemIdsToRemove {0} because IsMarkedForRemoval is set.", jobItem.ItemId); - response.ItemIdsToRemove.Add(jobItem.ItemId); + removeFromDevice = true; } else if (user == null) { // Tell the device to remove it since the user is gone now _logger.Debug("Adding ItemIdsToRemove {0} because the user is no longer valid.", jobItem.ItemId); - response.ItemIdsToRemove.Add(jobItem.ItemId); + removeFromDevice = true; } else if (job.UnwatchedOnly) { @@ -782,23 +780,41 @@ namespace MediaBrowser.Server.Implementations.Sync { // Tell the device to remove it since it has been played _logger.Debug("Adding ItemIdsToRemove {0} because it has been marked played.", jobItem.ItemId); - response.ItemIdsToRemove.Add(jobItem.ItemId); + removeFromDevice = true; } } else { // Tell the device to remove it since it's no longer available _logger.Debug("Adding ItemIdsToRemove {0} because it is no longer available.", jobItem.ItemId); - response.ItemIdsToRemove.Add(jobItem.ItemId); + removeFromDevice = true; } } } else { - _logger.Debug("Setting status to RemovedFromDevice for {0} because it is no longer on the device.", jobItem.ItemId); - // Content is no longer on the device - jobItem.Status = SyncJobItemStatus.RemovedFromDevice; + if (jobItem.IsMarkedForRemoval) + { + jobItem.Status = SyncJobItemStatus.RemovedFromDevice; + } + else + { + _logger.Debug("Setting status to Queued for {0} because it is no longer on the device.", jobItem.ItemId); + jobItem.Status = SyncJobItemStatus.Queued; + } + requiresSaving = true; + } + + if (removeFromDevice) + { + response.ItemIdsToRemove.Add(jobItem.ItemId); + jobItem.IsMarkedForRemoval = true; + requiresSaving = true; + } + + if (requiresSaving) + { await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false); } } @@ -842,6 +858,9 @@ namespace MediaBrowser.Server.Implementations.Sync foreach (var jobItem in jobItemResult.Items) { + var requiresSaving = false; + var removeFromDevice = false; + if (request.SyncJobItemIds.Contains(jobItem.Id, StringComparer.OrdinalIgnoreCase)) { var job = _repo.GetJob(jobItem.JobId); @@ -851,13 +870,13 @@ namespace MediaBrowser.Server.Implementations.Sync { // Tell the device to remove it since it has been marked for removal _logger.Debug("Adding ItemIdsToRemove {0} because IsMarkedForRemoval is set.", jobItem.Id); - response.ItemIdsToRemove.Add(jobItem.Id); + removeFromDevice = true; } else if (user == null) { // Tell the device to remove it since the user is gone now _logger.Debug("Adding ItemIdsToRemove {0} because the user is no longer valid.", jobItem.Id); - response.ItemIdsToRemove.Add(jobItem.Id); + removeFromDevice = true; } else if (job.UnwatchedOnly) { @@ -869,23 +888,41 @@ namespace MediaBrowser.Server.Implementations.Sync { // Tell the device to remove it since it has been played _logger.Debug("Adding ItemIdsToRemove {0} because it has been marked played.", jobItem.Id); - response.ItemIdsToRemove.Add(jobItem.Id); + removeFromDevice = true; } } else { // Tell the device to remove it since it's no longer available _logger.Debug("Adding ItemIdsToRemove {0} because it is no longer available.", jobItem.Id); - response.ItemIdsToRemove.Add(jobItem.Id); + removeFromDevice = true; } } } else { - _logger.Debug("Setting status to RemovedFromDevice for {0} because it is no longer on the device.", jobItem.Id); - // Content is no longer on the device - jobItem.Status = SyncJobItemStatus.RemovedFromDevice; + if (jobItem.IsMarkedForRemoval) + { + jobItem.Status = SyncJobItemStatus.RemovedFromDevice; + } + else + { + _logger.Debug("Setting status to Queued for {0} because it is no longer on the device.", jobItem.Id); + jobItem.Status = SyncJobItemStatus.Queued; + } + requiresSaving = true; + } + + if (removeFromDevice) + { + response.ItemIdsToRemove.Add(jobItem.Id); + jobItem.IsMarkedForRemoval = true; + requiresSaving = true; + } + + if (requiresSaving) + { await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false); } } @@ -1168,13 +1205,18 @@ namespace MediaBrowser.Server.Implementations.Sync public IEnumerable<SyncQualityOption> GetQualityOptions(string targetId) { + return GetQualityOptions(targetId, null); + } + + public IEnumerable<SyncQualityOption> GetQualityOptions(string targetId, User user) + { foreach (var provider in _providers) { foreach (var target in GetSyncTargets(provider)) { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { - return GetQualityOptions(provider, target); + return GetQualityOptions(provider, target, user); } } } @@ -1182,12 +1224,19 @@ namespace MediaBrowser.Server.Implementations.Sync return new List<SyncQualityOption>(); } - private IEnumerable<SyncQualityOption> GetQualityOptions(ISyncProvider provider, SyncTarget target) + private IEnumerable<SyncQualityOption> GetQualityOptions(ISyncProvider provider, SyncTarget target, User user) { var hasQuality = provider as IHasSyncQuality; if (hasQuality != null) { - return hasQuality.GetQualityOptions(target); + var options = hasQuality.GetQualityOptions(target); + + if (user != null && !user.Policy.EnableSyncTranscoding) + { + options = options.Where(i => i.IsOriginalQuality); + } + + return options; } // Default options for providers that don't override @@ -1217,7 +1266,7 @@ namespace MediaBrowser.Server.Implementations.Sync }; } - public IEnumerable<SyncProfileOption> GetProfileOptions(string targetId) + public IEnumerable<SyncProfileOption> GetProfileOptions(string targetId, User user) { foreach (var provider in _providers) { @@ -1225,7 +1274,7 @@ namespace MediaBrowser.Server.Implementations.Sync { if (string.Equals(target.Id, targetId, StringComparison.OrdinalIgnoreCase)) { - return GetProfileOptions(provider, target); + return GetProfileOptions(provider, target, user); } } } @@ -1233,7 +1282,12 @@ namespace MediaBrowser.Server.Implementations.Sync return new List<SyncProfileOption>(); } - private IEnumerable<SyncProfileOption> GetProfileOptions(ISyncProvider provider, SyncTarget target) + public IEnumerable<SyncProfileOption> GetProfileOptions(string targetId) + { + return GetProfileOptions(targetId, null); + } + + private IEnumerable<SyncProfileOption> GetProfileOptions(ISyncProvider provider, SyncTarget target, User user) { var hasQuality = provider as IHasSyncQuality; if (hasQuality != null) @@ -1251,20 +1305,23 @@ namespace MediaBrowser.Server.Implementations.Sync EnableQualityOptions = false }); - list.Add(new SyncProfileOption + if (user == null || user.Policy.EnableSyncTranscoding) { - 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 = "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", - Id = "general", - Description = "Designed for compatibility with Chromecast, Roku, Smart TV's, and other similar devices. Targets H264/AAC/AC3 video and MP3 audio.", - IsDefault = true - }); + list.Add(new SyncProfileOption + { + Name = "General", + Id = "general", + Description = "Designed for compatibility with Chromecast, Roku, Smart TV's, and other similar devices. Targets H264/AAC/AC3 video and MP3 audio.", + IsDefault = true + }); + } return list; } diff --git a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs index 40d40d415..f7f320741 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs @@ -109,8 +109,13 @@ namespace MediaBrowser.Server.Implementations.Sync var dataProvider = _syncManager.GetDataProvider(provider, target); var localItem = await dataProvider.Get(target, openKeys[2]).ConfigureAwait(false); + var fileId = localItem.FileId; + if (string.IsNullOrWhiteSpace(fileId)) + { + } + var requiresDynamicAccess = (IHasDynamicAccess)provider; - var dynamicInfo = await requiresDynamicAccess.GetSyncedFileInfo(localItem.LocalPath, target, cancellationToken).ConfigureAwait(false); + var dynamicInfo = await requiresDynamicAccess.GetSyncedFileInfo(fileId, target, cancellationToken).ConfigureAwait(false); var mediaSource = localItem.Item.MediaSources.First(); mediaSource.LiveStreamId = Guid.NewGuid().ToString(); diff --git a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs index 3323ae148..dc95ee316 100644 --- a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Controller; using MediaBrowser.Controller.Sync; @@ -12,6 +11,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using Patterns.IO; namespace MediaBrowser.Server.Implementations.Sync { @@ -29,8 +29,6 @@ namespace MediaBrowser.Server.Implementations.Sync private readonly IApplicationPaths _appPaths; private readonly IServerApplicationHost _appHost; - private readonly SemaphoreSlim _cacheFileLock = new SemaphoreSlim(1, 1); - public TargetDataProvider(IServerSyncProvider provider, SyncTarget target, IServerApplicationHost appHost, ILogger logger, IJsonSerializer json, IFileSystem fileSystem, IApplicationPaths appPaths) { _logger = logger; @@ -42,7 +40,7 @@ namespace MediaBrowser.Server.Implementations.Sync _appHost = appHost; } - private string GetRemotePath() + private string[] GetRemotePath() { var parts = new List<string> { @@ -52,7 +50,7 @@ namespace MediaBrowser.Server.Implementations.Sync parts = parts.Select(i => GetValidFilename(_provider, i)).ToList(); - return _provider.GetFullPath(parts, _target); + return parts.ToArray(); } private string GetValidFilename(IServerSyncProvider provider, string filename) @@ -65,22 +63,22 @@ namespace MediaBrowser.Server.Implementations.Sync { if (_items == null) { - try + _logger.Debug("Getting {0} from {1}", string.Join(MediaSync.PathSeparatorString, GetRemotePath().ToArray()), _provider.Name); + + var fileResult = await _provider.GetFiles(new FileQuery { - var path = GetRemotePath(); + FullPath = GetRemotePath().ToArray() - _logger.Debug("Getting {0} from {1}", path, _provider.Name); + }, _target, cancellationToken).ConfigureAwait(false); - using (var stream = await _provider.GetFile(path, _target, new Progress<double>(), cancellationToken)) + if (fileResult.Items.Length > 0) + { + using (var stream = await _provider.GetFile(fileResult.Items[0].Id, _target, new Progress<double>(), cancellationToken)) { _items = _json.DeserializeFromStream<List<LocalItem>>(stream); } } - catch (FileNotFoundException) - { - _items = new List<LocalItem>(); - } - catch (DirectoryNotFoundException) + else { _items = new List<LocalItem>(); } @@ -133,14 +131,9 @@ namespace MediaBrowser.Server.Implementations.Sync } } - public Task<List<string>> GetServerItemIds(SyncTarget target, string serverId) - { - return GetData(items => items.Where(i => string.Equals(i.ServerId, serverId, StringComparison.OrdinalIgnoreCase)).Select(i => i.ItemId).ToList()); - } - - public Task<List<string>> GetSyncJobItemIds(SyncTarget target, string serverId) + public Task<List<LocalItem>> GetLocalItems(SyncTarget target, string serverId) { - return GetData(items => items.Where(i => string.Equals(i.ServerId, serverId, StringComparison.OrdinalIgnoreCase)).Select(i => i.SyncJobItemId).Where(i => !string.IsNullOrWhiteSpace(i)).ToList()); + return GetData(items => items.Where(i => string.Equals(i.ServerId, serverId, StringComparison.OrdinalIgnoreCase)).ToList()); } public Task AddOrUpdate(SyncTarget target, LocalItem item) diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs index d6a94210c..47487bf4c 100644 --- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs +++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs @@ -1,5 +1,6 @@ using MediaBrowser.Common.Configuration; using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.TV; @@ -22,8 +23,8 @@ namespace MediaBrowser.Server.Implementations.UserViews private readonly IUserManager _userManager; private readonly ILibraryManager _libraryManager; - public DynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IUserManager userManager, ILibraryManager libraryManager) - : base(fileSystem, providerManager, applicationPaths) + public DynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, IUserManager userManager, ILibraryManager libraryManager) + : base(fileSystem, providerManager, applicationPaths, imageProcessor) { _userManager = userManager; _libraryManager = libraryManager; @@ -107,7 +108,7 @@ namespace MediaBrowser.Server.Implementations.UserViews User = _userManager.GetUserById(view.UserId.Value), CollapseBoxSetItems = false, Recursive = recursive, - ExcludeItemTypes = new[] { "UserView", "CollectionFolder" } + ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Playlist" } }).ConfigureAwait(false); @@ -202,6 +203,7 @@ namespace MediaBrowser.Server.Implementations.UserViews SpecialFolder.MusicGenres, SpecialFolder.MusicGenre, SpecialFolder.MusicLatest, + SpecialFolder.MusicPlaylists, SpecialFolder.MusicSongs, SpecialFolder.MusicFavorites, SpecialFolder.MusicFavoriteArtists, @@ -238,26 +240,28 @@ namespace MediaBrowser.Server.Implementations.UserViews return collectionStripViewTypes.Contains(view.ViewType ?? string.Empty); } - protected override async Task<Stream> CreateImageAsync(IHasImages item, List<BaseItem> itemsWithImages, ImageType imageType, int imageIndex) + protected override bool CreateImage(IHasImages item, List<BaseItem> itemsWithImages, string outputPath, ImageType imageType, int imageIndex) { var view = (UserView)item; if (imageType == ImageType.Primary && IsUsingCollectionStrip(view)) { if (itemsWithImages.Count == 0 && !string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase)) { - return null; + return false; } - var stream = new StripCollageBuilder(ApplicationPaths).BuildThumbCollage(GetStripCollageImagePaths(itemsWithImages, view.ViewType), item.Name, 960, 540); - return stream; + CreateThumbCollage(item, itemsWithImages, outputPath, 960, 540, false, item.Name); + return true; } - return await base.CreateImageAsync(item, itemsWithImages, imageType, imageIndex); + return base.CreateImage(item, itemsWithImages, outputPath, imageType, imageIndex); } - private IEnumerable<String> GetStripCollageImagePaths(IEnumerable<BaseItem> items, string viewType) + protected override IEnumerable<String> GetStripCollageImagePaths(IHasImages primaryItem, IEnumerable<BaseItem> items) { - if (string.Equals(viewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase)) + var userView = primaryItem as UserView; + + if (userView != null && string.Equals(userView.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase)) { var list = new List<string>(); for (int i = 1; i <= 8; i++) @@ -267,9 +271,7 @@ namespace MediaBrowser.Server.Implementations.UserViews return list; } - return items - .Select(i => i.GetImagePath(ImageType.Primary) ?? i.GetImagePath(ImageType.Thumb)) - .Where(i => !string.IsNullOrWhiteSpace(i)); + return base.GetStripCollageImagePaths(primaryItem, items); } private string ExtractLiveTvResource(string name, IApplicationPaths paths) diff --git a/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs b/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs deleted file mode 100644 index 0bf4d8e4a..000000000 --- a/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs +++ /dev/null @@ -1,180 +0,0 @@ -using ImageMagickSharp; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Server.Implementations.Drawing; -using MediaBrowser.Server.Implementations.Photos; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace MediaBrowser.Server.Implementations.UserViews -{ - public class StripCollageBuilder - { - private readonly IApplicationPaths _appPaths; - - public StripCollageBuilder(IApplicationPaths appPaths) - { - _appPaths = appPaths; - } - - public Stream BuildThumbCollage(IEnumerable<string> paths, string text, int width, int height) - { - using (var wand = BuildThumbCollageWand(paths, width, height)) - { - return DynamicImageHelpers.GetStream(wand, _appPaths); - } - } - - private string[] ProjectPaths(IEnumerable<string> paths, int count) - { - var clone = paths.ToList(); - var list = new List<string>(); - - while (list.Count < count) - { - foreach (var path in clone) - { - list.Add(path); - - if (list.Count >= count) - { - break; - } - } - } - - return list.Take(count).ToArray(); - } - - private MagickWand BuildThumbCollageWandWithText(IEnumerable<string> paths, string text, int width, int height) - { - var inputPaths = ProjectPaths(paths, 8); - using (var wandImages = new MagickWand(inputPaths)) - { - var wand = new MagickWand(width, height); - wand.OpenImage("gradient:#111111-#111111"); - using (var draw = new DrawingWand()) - { - using (var fcolor = new PixelWand(ColorName.White)) - { - draw.FillColor = fcolor; - draw.Font = MontserratLightFont; - draw.FontSize = 50; - draw.FontWeight = FontWeightType.LightStyle; - draw.TextAntialias = true; - } - - var fontMetrics = wand.QueryFontMetrics(draw, text); - var textContainerY = Convert.ToInt32(height * .165); - wand.CurrentImage.AnnotateImage(draw, (width - fontMetrics.TextWidth) / 2, textContainerY, 0.0, text); - - var iSlice = Convert.ToInt32(width * .1166666667); - int iTrans = Convert.ToInt32(height * 0.2); - int iHeight = Convert.ToInt32(height * 0.46296296296296296296296296296296); - var horizontalImagePadding = Convert.ToInt32(width * 0.0125); - - foreach (var element in wandImages.ImageList) - { - int iWidth = (int)Math.Abs(iHeight * element.Width / element.Height); - element.Gravity = GravityType.CenterGravity; - element.BackgroundColor = new PixelWand("none", 1); - element.ResizeImage(iWidth, iHeight, FilterTypes.LanczosFilter); - int ix = (int)Math.Abs((iWidth - iSlice) / 2); - element.CropImage(iSlice, iHeight, ix, 0); - - element.ExtentImage(iSlice, iHeight, 0 - horizontalImagePadding, 0); - } - - wandImages.SetFirstIterator(); - using (var wandList = wandImages.AppendImages()) - { - wandList.CurrentImage.TrimImage(1); - using (var mwr = wandList.CloneMagickWand()) - { - mwr.CurrentImage.ResizeImage(wandList.CurrentImage.Width, (wandList.CurrentImage.Height / 2), FilterTypes.LanczosFilter, 1); - mwr.CurrentImage.FlipImage(); - - mwr.CurrentImage.AlphaChannel = AlphaChannelType.DeactivateAlphaChannel; - mwr.CurrentImage.ColorizeImage(ColorName.Black, ColorName.Grey70); - - using (var mwg = new MagickWand(wandList.CurrentImage.Width, iTrans)) - { - mwg.OpenImage("gradient:black-none"); - var verticalSpacing = Convert.ToInt32(height * 0.01111111111111111111111111111111); - mwr.CurrentImage.CompositeImage(mwg, CompositeOperator.DstInCompositeOp, 0, verticalSpacing); - - wandList.AddImage(mwr); - int ex = (int)(wand.CurrentImage.Width - mwg.CurrentImage.Width) / 2; - wand.CurrentImage.CompositeImage(wandList.AppendImages(true), CompositeOperator.AtopCompositeOp, ex, Convert.ToInt32(height * 0.26851851851851851851851851851852)); - } - } - } - } - - return wand; - } - } - - private MagickWand BuildThumbCollageWand(IEnumerable<string> paths, int width, int height) - { - var inputPaths = ProjectPaths(paths, 8); - using (var wandImages = new MagickWand(inputPaths)) - { - var wand = new MagickWand(width, height); - wand.OpenImage("gradient:#111111-#111111"); - using (var draw = new DrawingWand()) - { - var iSlice = Convert.ToInt32(width * .1166666667); - int iTrans = Convert.ToInt32(height * .25); - int iHeight = Convert.ToInt32(height * .62); - var horizontalImagePadding = Convert.ToInt32(width * 0.0125); - - foreach (var element in wandImages.ImageList) - { - int iWidth = (int)Math.Abs(iHeight * element.Width / element.Height); - element.Gravity = GravityType.CenterGravity; - element.BackgroundColor = ColorName.Black; - element.ResizeImage(iWidth, iHeight, FilterTypes.LanczosFilter); - int ix = (int)Math.Abs((iWidth - iSlice) / 2); - element.CropImage(iSlice, iHeight, ix, 0); - - element.ExtentImage(iSlice, iHeight, 0 - horizontalImagePadding, 0); - } - - wandImages.SetFirstIterator(); - using (var wandList = wandImages.AppendImages()) - { - wandList.CurrentImage.TrimImage(1); - using (var mwr = wandList.CloneMagickWand()) - { - mwr.CurrentImage.ResizeImage(wandList.CurrentImage.Width, (wandList.CurrentImage.Height / 2), FilterTypes.LanczosFilter, 1); - mwr.CurrentImage.FlipImage(); - - mwr.CurrentImage.AlphaChannel = AlphaChannelType.DeactivateAlphaChannel; - mwr.CurrentImage.ColorizeImage(ColorName.Black, ColorName.Grey60); - - using (var mwg = new MagickWand(wandList.CurrentImage.Width, iTrans)) - { - mwg.OpenImage("gradient:black-none"); - var verticalSpacing = Convert.ToInt32(height * 0.01111111111111111111111111111111); - mwr.CurrentImage.CompositeImage(mwg, CompositeOperator.CopyOpacityCompositeOp, 0, verticalSpacing); - - wandList.AddImage(mwr); - int ex = (int)(wand.CurrentImage.Width - mwg.CurrentImage.Width) / 2; - wand.CurrentImage.CompositeImage(wandList.AppendImages(true), CompositeOperator.AtopCompositeOp, ex, Convert.ToInt32(height * .085)); - } - } - } - } - - return wand; - } - } - - private string MontserratLightFont - { - get { return PlayedIndicatorDrawer.ExtractFont("MontserratLight.otf", _appPaths); } - } - } -} diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index 438ccff92..f374cbea1 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?>
<packages>
- <package id="ImageMagickSharp" version="1.0.0.11" targetFramework="net45" />
<package id="MediaBrowser.Naming" version="1.0.0.32" targetFramework="net45" />
- <package id="Mono.Nat" version="1.2.21.0" targetFramework="net45" />
+ <package id="Mono.Nat" version="1.2.23.0" targetFramework="net45" />
<package id="morelinq" version="1.1.0" targetFramework="net45" />
+ <package id="Patterns.IO" version="1.0.0.3" targetFramework="net45" />
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
- <package id="SocketHttpListener" version="1.0.0.3" targetFramework="net45" />
+ <package id="SocketHttpListener" version="1.0.0.4" targetFramework="net45" />
</packages>
\ No newline at end of file |
