aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-14 09:24:30 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-14 09:24:30 -0400
commit9c5cceb4ecc277ffb5a3a988f655ad674bf41c58 (patch)
tree0077c03cb06e2dc7700315f90db9ee51fedeb00d /MediaBrowser.Server.Implementations
parent02e25b48550ffef016d20fe3f070c8552633cbef (diff)
update translations
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Activity/ActivityManager.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Activity/ActivityRepository.cs30
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs31
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs28
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs5
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs115
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserViewManager.cs9
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs103
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs74
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json2
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/da.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/el.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json34
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json44
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/he.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/it.json22
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json40
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json28
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json38
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json52
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json4
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ar.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ca.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/cs.json11
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/da.json9
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/de.json17
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/el.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/en_GB.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/en_US.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/es.json13
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/es_MX.json73
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/fr.json67
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/he.json11
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/it.json81
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/kk.json77
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ko.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ms.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/nb.json13
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/nl.json33
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pl.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json11
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json13
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/ru.json81
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json21
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/sv.json13
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/tr.json9
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/vi.json5
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json7
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj3
-rw-r--r--MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Playlists/PlaylistImageEnhancer.cs15
-rw-r--r--MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs28
60 files changed, 871 insertions, 487 deletions
diff --git a/MediaBrowser.Server.Implementations/Activity/ActivityManager.cs b/MediaBrowser.Server.Implementations/Activity/ActivityManager.cs
index 46eaa7f21..7b123bad2 100644
--- a/MediaBrowser.Server.Implementations/Activity/ActivityManager.cs
+++ b/MediaBrowser.Server.Implementations/Activity/ActivityManager.cs
@@ -32,9 +32,9 @@ namespace MediaBrowser.Server.Implementations.Activity
EventHelper.FireEventIfNotNull(EntryCreated, this, new GenericEventArgs<ActivityLogEntry>(entry), _logger);
}
- public QueryResult<ActivityLogEntry> GetActivityLogEntries(int? startIndex, int? limit)
+ public QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit)
{
- return _repo.GetActivityLogEntries(startIndex, limit);
+ return _repo.GetActivityLogEntries(minDate, startIndex, limit);
}
}
}
diff --git a/MediaBrowser.Server.Implementations/Activity/ActivityRepository.cs b/MediaBrowser.Server.Implementations/Activity/ActivityRepository.cs
index 787cbcc5b..f491a5c44 100644
--- a/MediaBrowser.Server.Implementations/Activity/ActivityRepository.cs
+++ b/MediaBrowser.Server.Implementations/Activity/ActivityRepository.cs
@@ -139,7 +139,7 @@ namespace MediaBrowser.Server.Implementations.Activity
}
}
- public QueryResult<ActivityLogEntry> GetActivityLogEntries(int? startIndex, int? limit)
+ public QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit)
{
using (var cmd = _connection.CreateCommand())
{
@@ -147,17 +147,33 @@ namespace MediaBrowser.Server.Implementations.Activity
var whereClauses = new List<string>();
- if (startIndex.HasValue && startIndex.Value > 0)
+ if (minDate.HasValue)
{
- whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM ActivityLogEntries ORDER BY DateCreated DESC LIMIT {0})",
- startIndex.Value.ToString(_usCulture)));
+ whereClauses.Add("DateCreated>=@DateCreated");
+ cmd.Parameters.Add(cmd, "@DateCreated", DbType.Date).Value = minDate.Value;
}
- if (whereClauses.Count > 0)
+ var whereTextWithoutPaging = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ if (startIndex.HasValue && startIndex.Value > 0)
{
- cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray());
+ var pagingWhereText = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM ActivityLogEntries {0} ORDER BY DateCreated DESC LIMIT {1})",
+ pagingWhereText,
+ startIndex.Value.ToString(_usCulture)));
}
+ var whereText = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ cmd.CommandText += whereText;
+
cmd.CommandText += " ORDER BY DateCreated DESC";
if (limit.HasValue)
@@ -165,7 +181,7 @@ namespace MediaBrowser.Server.Implementations.Activity
cmd.CommandText += " LIMIT " + limit.Value.ToString(_usCulture);
}
- cmd.CommandText += "; select count (Id) from ActivityLogEntries";
+ cmd.CommandText += "; select count (Id) from ActivityLogEntries" + whereTextWithoutPaging;
var list = new List<ActivityLogEntry>();
var count = 0;
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs b/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
index 567092cae..65e5a0549 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelDownloadScheduledTask.cs
@@ -7,6 +7,7 @@ using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Channels;
+using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo;
@@ -154,7 +155,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
try
{
- await DownloadChannelItem(item, cancellationToken, path);
+ await DownloadChannelItem(item, options, cancellationToken, path);
}
catch (OperationCanceledException)
{
@@ -176,9 +177,18 @@ namespace MediaBrowser.Server.Implementations.Channels
}
private async Task DownloadChannelItem(BaseItemDto item,
+ ChannelOptions channelOptions,
CancellationToken cancellationToken,
string path)
{
+ if (channelOptions.DownloadSizeLimit.HasValue)
+ {
+ if (IsSizeLimitReached(path, channelOptions.DownloadSizeLimit.Value))
+ {
+ return;
+ }
+ }
+
var sources = await _manager.GetChannelItemMediaSources(item.Id, cancellationToken)
.ConfigureAwait(false);
@@ -253,6 +263,25 @@ namespace MediaBrowser.Server.Implementations.Channels
}
}
+ private bool IsSizeLimitReached(string path, double gbLimit)
+ {
+ var byteLimit = gbLimit*1000000000;
+
+ long total = 0;
+
+ foreach (var file in new DirectoryInfo(path).EnumerateFiles("*", SearchOption.AllDirectories))
+ {
+ total += file.Length;
+
+ if (total >= byteLimit)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
private async Task RefreshMediaSourceItems(IEnumerable<MediaSourceInfo> items, CancellationToken cancellationToken)
{
foreach (var item in items)
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs
index b8290fda7..0bd772a56 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/ActivityLogEntryPoint.cs
@@ -61,15 +61,15 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
public void Run()
{
- _taskManager.TaskExecuting += _taskManager_TaskExecuting;
- _taskManager.TaskCompleted += _taskManager_TaskCompleted;
+ //_taskManager.TaskExecuting += _taskManager_TaskExecuting;
+ //_taskManager.TaskCompleted += _taskManager_TaskCompleted;
- _installationManager.PluginInstalled += _installationManager_PluginInstalled;
- _installationManager.PluginUninstalled += _installationManager_PluginUninstalled;
- _installationManager.PluginUpdated += _installationManager_PluginUpdated;
+ //_installationManager.PluginInstalled += _installationManager_PluginInstalled;
+ //_installationManager.PluginUninstalled += _installationManager_PluginUninstalled;
+ //_installationManager.PluginUpdated += _installationManager_PluginUpdated;
- _libraryManager.ItemAdded += _libraryManager_ItemAdded;
- _libraryManager.ItemRemoved += _libraryManager_ItemRemoved;
+ //_libraryManager.ItemAdded += _libraryManager_ItemAdded;
+ //_libraryManager.ItemRemoved += _libraryManager_ItemRemoved;
_sessionManager.SessionStarted += _sessionManager_SessionStarted;
_sessionManager.AuthenticationFailed += _sessionManager_AuthenticationFailed;
@@ -79,7 +79,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
_sessionManager.PlaybackStart += _sessionManager_PlaybackStart;
_sessionManager.PlaybackStopped += _sessionManager_PlaybackStopped;
- _subManager.SubtitlesDownloaded += _subManager_SubtitlesDownloaded;
+ //_subManager.SubtitlesDownloaded += _subManager_SubtitlesDownloaded;
_subManager.SubtitleDownloadFailure += _subManager_SubtitleDownloadFailure;
_userManager.UserCreated += _userManager_UserCreated;
@@ -87,8 +87,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
_userManager.UserDeleted += _userManager_UserDeleted;
_userManager.UserConfigurationUpdated += _userManager_UserConfigurationUpdated;
- _config.ConfigurationUpdated += _config_ConfigurationUpdated;
- _config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
+ //_config.ConfigurationUpdated += _config_ConfigurationUpdated;
+ //_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
//_logManager.LoggerLoaded += _logManager_LoggerLoaded;
@@ -165,6 +165,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (string.IsNullOrWhiteSpace(session.UserName))
{
name = string.Format(_localization.GetLocalizedString("DeviceOfflineWithName"), session.DeviceName);
+
+ // Causing too much spam for now
+ return;
}
else
{
@@ -288,6 +291,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (string.IsNullOrWhiteSpace(session.UserName))
{
name = string.Format(_localization.GetLocalizedString("DeviceOnlineWithName"), session.DeviceName);
+
+ // Causing too much spam for now
+ return;
}
else
{
@@ -394,6 +400,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (result.Status == TaskCompletionStatus.Cancelled)
{
+ return;
CreateLogEntry(new ActivityLogEntry
{
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCancelledWithName"), task.Name),
@@ -403,6 +410,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
}
else if (result.Status == TaskCompletionStatus.Completed)
{
+ return;
CreateLogEntry(new ActivityLogEntry
{
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCompletedWithName"), task.Name),
diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
index 90b77828b..044ed25f9 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs
@@ -35,8 +35,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private IHttpListener _listener;
- private const int IdleTimeout = 300;
-
private readonly ContainerAdapter _containerAdapter;
public event EventHandler<WebSocketConnectEventArgs> WebSocketConnected;
@@ -152,7 +150,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First());
_listener = NativeWebSocket.IsSupported
- ? _listener = new WebSocketSharpListener(_logger)
+ ? _listener = new HttpListenerServer(_logger)
+ //? _listener = new WebSocketSharpListener(_logger)
: _listener = new WebSocketSharpListener(_logger);
_listener.WebSocketHandler = WebSocketHandler;
diff --git a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
index cd871d8eb..477aa3878 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/SocketSharp/WebSocketSharpListener.cs
@@ -7,16 +7,17 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using WebSocketSharp.Net;
-using WebSocketSharp.Server;
namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
{
public class WebSocketSharpListener : IHttpListener
{
private readonly ConcurrentDictionary<string, string> _localEndPoints = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase);
- private WebSocketSharp.Server.HttpServer _httpsv;
+ private WebSocketSharp.Net.HttpListener _listener;
+ private readonly AutoResetEvent _listenForNextRequest = new AutoResetEvent(false);
private readonly ILogger _logger;
@@ -38,16 +39,85 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
public void Start(IEnumerable<string> urlPrefixes)
{
- _httpsv = new WebSocketSharp.Server.HttpServer(8096, false, urlPrefixes.First());
+ if (_listener == null)
+ _listener = new WebSocketSharp.Net.HttpListener();
- _httpsv.OnRequest += _httpsv_OnRequest;
+ foreach (var prefix in urlPrefixes)
+ {
+ _logger.Info("Adding HttpListener prefix " + prefix);
+ _listener.Prefixes.Add(prefix);
+ }
+
+ _listener.Start();
- _httpsv.Start();
+ Task.Factory.StartNew(Listen, TaskCreationOptions.LongRunning);
+ }
+
+ private bool IsListening
+ {
+ get { return _listener != null && _listener.IsListening; }
}
- void _httpsv_OnRequest(object sender, HttpRequestEventArgs e)
+ // Loop here to begin processing of new requests.
+ private void Listen()
{
- Task.Factory.StartNew(() => InitTask(e.Context));
+ while (IsListening)
+ {
+ if (_listener == null) return;
+
+ try
+ {
+ _listener.BeginGetContext(ListenerCallback, _listener);
+ _listenForNextRequest.WaitOne();
+ }
+ catch (Exception ex)
+ {
+ _logger.Error("Listen()", ex);
+ return;
+ }
+ if (_listener == null) return;
+ }
+ }
+
+ // Handle the processing of a request in here.
+ private void ListenerCallback(IAsyncResult asyncResult)
+ {
+ var listener = asyncResult.AsyncState as HttpListener;
+ HttpListenerContext context;
+
+ if (listener == null) return;
+ var isListening = listener.IsListening;
+
+ try
+ {
+ if (!isListening)
+ {
+ _logger.Debug("Ignoring ListenerCallback() as HttpListener is no longer listening"); return;
+ }
+ // The EndGetContext() method, as with all Begin/End asynchronous methods in the .NET Framework,
+ // blocks until there is a request to be processed or some type of data is available.
+ context = listener.EndGetContext(asyncResult);
+ }
+ catch (Exception ex)
+ {
+ // You will get an exception when httpListener.Stop() is called
+ // because there will be a thread stopped waiting on the .EndGetContext()
+ // method, and again, that is just the way most Begin/End asynchronous
+ // methods of the .NET Framework work.
+ var errMsg = ex + ": " + IsListening;
+ _logger.Warn(errMsg);
+ return;
+ }
+ finally
+ {
+ // Once we know we have a request (or exception), we signal the other thread
+ // so that it calls the BeginGetContext() (or possibly exits if we're not
+ // listening any more) method to start handling the next incoming request
+ // while we continue to process this request on a different thread.
+ _listenForNextRequest.Set();
+ }
+
+ Task.Factory.StartNew(() => InitTask(context));
}
private void InitTask(HttpListenerContext context)
@@ -169,20 +239,39 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
public void Stop()
{
- _httpsv.Stop();
+ if (_listener != null)
+ {
+ foreach (var prefix in _listener.Prefixes.ToList())
+ {
+ _listener.Prefixes.Remove(prefix);
+ }
+
+ _listener.Close();
+ }
}
- private readonly object _disposeLock = new object();
public void Dispose()
{
+ Dispose(true);
+ }
+
+ private bool _disposed;
+ private readonly object _disposeLock = new object();
+ protected virtual void Dispose(bool disposing)
+ {
+ if (_disposed) return;
+
lock (_disposeLock)
{
- if (_httpsv != null)
+ if (_disposed) return;
+
+ if (disposing)
{
- _httpsv.OnRequest -= _httpsv_OnRequest;
- _httpsv.Stop();
- _httpsv = null;
+ Stop();
}
+
+ //release unmanaged resources here...
+ _disposed = true;
}
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 8310895e6..297d5e032 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -906,7 +906,7 @@ namespace MediaBrowser.Server.Implementations.Library
// Ensure the location is available.
Directory.CreateDirectory(ConfigurationManager.ApplicationPaths.PeoplePath);
- return new PeopleValidator(this, _logger).ValidatePeople(cancellationToken, new MetadataRefreshOptions(), progress);
+ return new PeopleValidator(this, _logger, ConfigurationManager).ValidatePeople(cancellationToken, progress);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
index 0d54d94e8..e3ac2025f 100644
--- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
@@ -93,7 +93,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (user.Configuration.DisplayCollectionsView &&
recursiveChildren.OfType<BoxSet>().Any())
{
- list.Add(await GetUserView(CollectionType.BoxSets, user, CollectionType.BoxSets, cancellationToken).ConfigureAwait(false));
+ list.Add(await GetUserView(CollectionType.BoxSets, user, string.Empty, cancellationToken).ConfigureAwait(false));
}
if (recursiveChildren.OfType<Playlist>().Any())
@@ -101,6 +101,11 @@ namespace MediaBrowser.Server.Implementations.Library
list.Add(_playlists.GetPlaylistsFolder(user.Id.ToString("N")));
}
+ if (user.Configuration.DisplayFoldersView)
+ {
+ list.Add(await GetUserView(CollectionType.Folders, user, "zz_" + CollectionType.Folders, cancellationToken).ConfigureAwait(false));
+ }
+
if (query.IncludeExternalContent)
{
var channelResult = await _channelManager.GetChannels(new ChannelQuery
@@ -131,7 +136,7 @@ namespace MediaBrowser.Server.Implementations.Library
return _libraryManager.Sort(list, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).Cast<Folder>();
}
- private Task<UserView> GetUserView(string type, User user, string sortName, CancellationToken cancellationToken)
+ public Task<UserView> GetUserView(string type, User user, string sortName, CancellationToken cancellationToken)
{
var name = _localizationManager.GetLocalizedString("ViewType" + type);
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs
index 05c972a4e..059ad2481 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs
@@ -1,8 +1,13 @@
using MediaBrowser.Common.Progress;
+using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Configuration;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -23,46 +28,128 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary>
private readonly ILogger _logger;
+ private readonly IServerConfigurationManager _config;
+
/// <summary>
/// Initializes a new instance of the <see cref="PeopleValidator" /> class.
/// </summary>
/// <param name="libraryManager">The library manager.</param>
/// <param name="logger">The logger.</param>
- public PeopleValidator(ILibraryManager libraryManager, ILogger logger)
+ public PeopleValidator(ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config)
{
_libraryManager = libraryManager;
_logger = logger;
+ _config = config;
+ }
+
+ private bool DownloadMetadata(PersonInfo i, PeopleMetadataOptions options)
+ {
+ if (i.IsType(PersonType.Actor))
+ {
+ return options.DownloadActorMetadata;
+ }
+ if (i.IsType(PersonType.Director))
+ {
+ return options.DownloadDirectorMetadata;
+ }
+ if (i.IsType(PersonType.Composer))
+ {
+ return options.DownloadComposerMetadata;
+ }
+ if (i.IsType(PersonType.Writer))
+ {
+ return options.DownloadWriterMetadata;
+ }
+ if (i.IsType(PersonType.Producer))
+ {
+ return options.DownloadProducerMetadata;
+ }
+ if (i.IsType(PersonType.GuestStar))
+ {
+ return options.DownloadGuestStarMetadata;
+ }
+
+ return options.DownloadOtherPeopleMetadata;
+ }
+
+ private IEnumerable<PersonInfo> GetPeopleToValidate(BaseItem item, PeopleMetadataOptions options)
+ {
+ return item.People.Where(i =>
+ {
+ if (i.IsType(PersonType.Actor))
+ {
+ return options.DownloadActorMetadata;
+ }
+ if (i.IsType(PersonType.Director))
+ {
+ return options.DownloadDirectorMetadata;
+ }
+ if (i.IsType(PersonType.Composer))
+ {
+ return options.DownloadComposerMetadata;
+ }
+ if (i.IsType(PersonType.Writer))
+ {
+ return options.DownloadWriterMetadata;
+ }
+ if (i.IsType(PersonType.Producer))
+ {
+ return options.DownloadProducerMetadata;
+ }
+ if (i.IsType(PersonType.GuestStar))
+ {
+ return options.DownloadGuestStarMetadata;
+ }
+
+ return options.DownloadOtherPeopleMetadata;
+ });
}
/// <summary>
/// Validates the people.
/// </summary>
/// <param name="cancellationToken">The cancellation token.</param>
- /// <param name="options">The options.</param>
/// <param name="progress">The progress.</param>
/// <returns>Task.</returns>
- public async Task ValidatePeople(CancellationToken cancellationToken, MetadataRefreshOptions options, IProgress<double> progress)
+ public async Task ValidatePeople(CancellationToken cancellationToken, IProgress<double> progress)
{
var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(pct => progress.Report(pct * .15));
+ var peopleOptions = _config.Configuration.PeopleMetadataOptions;
+
var people = _libraryManager.RootFolder.GetRecursiveChildren()
- .SelectMany(c => c.People)
+ .SelectMany(i => i.People)
.Where(i => !string.IsNullOrWhiteSpace(i.Name))
- .Select(i => i.Name)
- .Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
- var numComplete = 0;
+ var dict = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
foreach (var person in people)
{
+ bool current;
+ if (!dict.TryGetValue(person.Name, out current) || !current)
+ {
+ dict[person.Name] = DownloadMetadata(person, peopleOptions);
+ }
+ }
+
+ var numComplete = 0;
+
+ foreach (var person in dict)
+ {
cancellationToken.ThrowIfCancellationRequested();
try
{
- var item = _libraryManager.GetPerson(person);
+ var item = _libraryManager.GetPerson(person.Key);
+
+ var options = new MetadataRefreshOptions
+ {
+ MetadataRefreshMode = person.Value ? MetadataRefreshMode.Default : MetadataRefreshMode.ValidationOnly,
+ ImageRefreshMode = person.Value ? ImageRefreshMode.Default : ImageRefreshMode.ValidationOnly
+ };
await item.RefreshMetadata(options, cancellationToken).ConfigureAwait(false);
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index ad2b50365..710781462 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -128,7 +128,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
_taskManager.CancelIfRunningAndQueue<RefreshChannelsScheduledTask>();
}
- public async Task<QueryResult<ChannelInfoDto>> GetChannels(LiveTvChannelQuery query, CancellationToken cancellationToken)
+ public async Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query, CancellationToken cancellationToken)
{
var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId));
@@ -217,9 +217,24 @@ namespace MediaBrowser.Server.Implementations.LiveTv
allEnumerable = allEnumerable.Take(query.Limit.Value);
}
+ var result = new QueryResult<LiveTvChannel>
+ {
+ Items = allEnumerable.ToArray(),
+ TotalRecordCount = allChannels.Count
+ };
+
+ return result;
+ }
+
+ public async Task<QueryResult<ChannelInfoDto>> GetChannels(LiveTvChannelQuery query, CancellationToken cancellationToken)
+ {
+ var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId));
+
+ var internalResult = await GetInternalChannels(query, cancellationToken).ConfigureAwait(false);
+
var returnList = new List<ChannelInfoDto>();
- foreach (var channel in allEnumerable)
+ foreach (var channel in internalResult.Items)
{
var currentProgram = await GetCurrentProgram(channel.ExternalId, cancellationToken).ConfigureAwait(false);
@@ -229,7 +244,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var result = new QueryResult<ChannelInfoDto>
{
Items = returnList.ToArray(),
- TotalRecordCount = allChannels.Count
+ TotalRecordCount = internalResult.TotalRecordCount
};
return result;
@@ -260,12 +275,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return obj;
}
- private async Task RefreshIfNeeded(IEnumerable<LiveTvProgram> programs, CancellationToken cancellationToken)
+ private Task RefreshIfNeeded(IEnumerable<LiveTvProgram> programs, CancellationToken cancellationToken)
{
- foreach (var program in programs)
+ var list = programs.ToList();
+
+ Task.Run(async () =>
{
- await RefreshIfNeeded(program, cancellationToken).ConfigureAwait(false);
- }
+ foreach (var program in list)
+ {
+ await RefreshIfNeeded(program, CancellationToken.None).ConfigureAwait(false);
+ }
+
+ }, cancellationToken);
+
+ return Task.FromResult(true);
}
private async Task RefreshIfNeeded(LiveTvProgram program, CancellationToken cancellationToken)
@@ -275,9 +298,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return;
}
- await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
-
_refreshedPrograms.TryAdd(program.Id, true);
+
+ await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
}
public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken)
@@ -1028,15 +1051,15 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return channels.Select(i => new Tuple<string, ChannelInfo>(service.Name, i));
}
- public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, CancellationToken cancellationToken)
+ public async Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken)
{
var service = ActiveService;
if (service == null)
{
- return new QueryResult<RecordingInfoDto>
+ return new QueryResult<BaseItem>
{
- Items = new RecordingInfoDto[] { }
+ Items = new BaseItem[] { }
};
}
@@ -1121,7 +1144,30 @@ namespace MediaBrowser.Server.Implementations.LiveTv
entities = entities.Take(query.Limit.Value);
}
- var returnArray = entities
+ return new QueryResult<BaseItem>
+ {
+ Items = entities.Cast<BaseItem>().ToArray(),
+ TotalRecordCount = entityList.Count
+ };
+ }
+
+ public async Task<QueryResult<RecordingInfoDto>> GetRecordings(RecordingQuery query, CancellationToken cancellationToken)
+ {
+ var service = ActiveService;
+
+ if (service == null)
+ {
+ return new QueryResult<RecordingInfoDto>
+ {
+ Items = new RecordingInfoDto[] { }
+ };
+ }
+
+ var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId));
+
+ var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false);
+
+ var returnArray = internalResult.Items.Cast<ILiveTvRecording>()
.Select(i =>
{
var channel = string.IsNullOrEmpty(i.RecordingInfo.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.RecordingInfo.ChannelId));
@@ -1132,7 +1178,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return new QueryResult<RecordingInfoDto>
{
Items = returnArray,
- TotalRecordCount = entityList.Count
+ TotalRecordCount = internalResult.TotalRecordCount
};
}
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
index 10f84a8b1..15c953171 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ar.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
index 3b607c105..5522a2970 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ca.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
index 41f3c3181..40d3aadbe 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/cs.json
@@ -58,7 +58,7 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "P\u0159ehr\u00e1t",
"ButtonEdit": "Upravit",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
index 76aa151ca..7a029af44 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/da.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Afspil",
"ButtonEdit": "Rediger",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
index a6a6f929a..9b48db51d 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/el.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
index 2690aee1a..0b28351ca 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_GB.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
index 3210756b9..6a4dfe037 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/en_US.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
index 0a4031fd2..d8ed66489 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/es_MX.json
@@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "Ver grabaciones de series",
"ValueOriginalAirDate": "Fecha de transmisi\u00f3n original: {0}",
"ButtonRemoveFromPlaylist": "Eliminar de la lista de reproducci\u00f3n",
- "HeaderSpecials": "Specials",
- "HeaderTrailers": "Trailers",
+ "HeaderSpecials": "Especiales",
+ "HeaderTrailers": "Avances",
"HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
+ "HeaderResolution": "Resoluci\u00f3n",
"HeaderVideo": "Video",
- "HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
+ "HeaderRuntime": "Duraci\u00f3n",
+ "HeaderCommunityRating": "Calificaci\u00f3n de la comunidad",
+ "HeaderParentalRating": "Calificaci\u00f3n parental",
+ "HeaderReleaseDate": "Fecha de estreno",
+ "HeaderDateAdded": "Fecha de adici\u00f3n",
"HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
- "HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderSeason": "Temporada",
+ "HeaderSeasonNumber": "N\u00famero de temporada",
+ "HeaderNetwork": "Cadena",
+ "HeaderYear": "A\u00f1o",
+ "HeaderGameSystem": "Sistema de Juegos",
+ "HeaderPlayers": "Jugadores",
+ "HeaderEmbeddedImage": "Im\u00e1gen embebida",
+ "HeaderTrack": "Pista",
+ "HeaderDisc": "Disco"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
index 08e8f6ade..c2bca5298 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/fr.json
@@ -321,34 +321,34 @@
"ButtonNew": "Nouveau",
"MessageInternetExplorerWebm": "Pour de meilleurs r\u00e9sultats avec Internet Explorer, merci d'installer le plugin WebM pour IE.",
"HeaderVideoError": "Erreur vid\u00e9o",
- "ButtonAddToPlaylist": "Add to playlist",
- "HeaderAddToPlaylist": "Add to Playlist",
+ "ButtonAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
+ "HeaderAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"LabelName": "Nom:",
"ButtonSubmit": "Soumettre",
- "LabelSelectPlaylist": "Playlist:",
- "OptionNewPlaylist": "New playlist...",
- "MessageAddedToPlaylistSuccess": "Ok",
- "ButtonViewSeriesRecording": "View series recording",
- "ValueOriginalAirDate": "Original air date: {0}",
+ "LabelSelectPlaylist": "Liste de lecture:",
+ "OptionNewPlaylist": "Nouvelle liste de lecture...",
+ "MessageAddedToPlaylistSuccess": "OK",
+ "ButtonViewSeriesRecording": "Voir enregistrements de s\u00e9ries",
+ "ValueOriginalAirDate": "Date de diffusion originale: {0}",
"ButtonRemoveFromPlaylist": "Remove from playlist",
"HeaderSpecials": "Specials",
- "HeaderTrailers": "Trailers",
+ "HeaderTrailers": "Bande-Annonces",
"HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
- "HeaderVideo": "Video",
+ "HeaderResolution": "R\u00e9solution",
+ "HeaderVideo": "Vid\u00e9o",
"HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
- "HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
+ "HeaderCommunityRating": "Note de communaut\u00e9",
+ "HeaderParentalRating": "Note parentale",
+ "HeaderReleaseDate": "Date de lancement",
+ "HeaderDateAdded": "Date ajout\u00e9e",
+ "HeaderSeries": "S\u00e9ries",
+ "HeaderSeason": "Saison",
+ "HeaderSeasonNumber": "Num\u00e9ro de saison",
+ "HeaderNetwork": "R\u00e9seau",
+ "HeaderYear": "Ann\u00e9e",
+ "HeaderGameSystem": "Plateforme de jeu",
+ "HeaderPlayers": "Lecteurs",
"HeaderEmbeddedImage": "Embedded image",
"HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderDisc": "Disque"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
index c9925a171..a5d9e5280 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/he.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "\u05e0\u05d2\u05df",
"ButtonEdit": "\u05e2\u05e8\u05d5\u05da",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
index 3ed57d473..bef7dcbf6 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/it.json
@@ -321,15 +321,15 @@
"ButtonNew": "Nuovo",
"MessageInternetExplorerWebm": "Se utilizzi internet explorer installa WebM plugin",
"HeaderVideoError": "Video Error",
- "ButtonAddToPlaylist": "Add to playlist",
- "HeaderAddToPlaylist": "Add to Playlist",
+ "ButtonAddToPlaylist": "Aggiungi alla playlist",
+ "HeaderAddToPlaylist": "Aggiungi alla playlist",
"LabelName": "Nome:",
"ButtonSubmit": "Invia",
"LabelSelectPlaylist": "Playlist:",
- "OptionNewPlaylist": "New playlist...",
+ "OptionNewPlaylist": "Nuova playlist...",
"MessageAddedToPlaylistSuccess": "Ok",
- "ButtonViewSeriesRecording": "View series recording",
- "ValueOriginalAirDate": "Original air date: {0}",
+ "ButtonViewSeriesRecording": "Vista delle serie in registrazione",
+ "ValueOriginalAirDate": "Prima messa in onda (originale): {0}",
"ButtonRemoveFromPlaylist": "Remove from playlist",
"HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers",
@@ -345,10 +345,10 @@
"HeaderSeason": "Season",
"HeaderSeasonNumber": "Season number",
"HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
- "HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderYear": "Anno",
+ "HeaderGameSystem": "Gioco Sistema",
+ "HeaderPlayers": "Giocatori",
+ "HeaderEmbeddedImage": "Immagine incorporata",
+ "HeaderTrack": "Traccia",
+ "HeaderDisc": "Disco"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
index 68bb3bd48..1e1356408 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/kk.json
@@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "\u0421\u0435\u0440\u0438\u0430\u043b \u0436\u0430\u0437\u0431\u0430\u0441\u044b\u043d \u049b\u0430\u0440\u0430\u0443",
"ValueOriginalAirDate": "\u0411\u0430\u0441\u0442\u0430\u043f\u049b\u044b \u044d\u0444\u0438\u0440: {0}",
"ButtonRemoveFromPlaylist": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0456\u043d\u0435\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u0443",
- "HeaderSpecials": "Specials",
- "HeaderTrailers": "Trailers",
- "HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
- "HeaderVideo": "Video",
- "HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
- "HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
- "HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderSpecials": "\u0410\u0440\u043d\u0430\u0439\u044b\u043b\u0430\u0440",
+ "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440",
+ "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441",
+ "HeaderResolution": "\u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b",
+ "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435",
+ "HeaderRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b",
+ "HeaderCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b",
+ "HeaderParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b",
+ "HeaderReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b",
+ "HeaderDateAdded": "\u04ae\u0441\u0442\u0435\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b",
+ "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b",
+ "HeaderSeason": "\u041c\u0430\u0443\u0441\u044b\u043c",
+ "HeaderSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456",
+ "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0436\u0435\u043b\u0456",
+ "HeaderYear": "\u0416\u044b\u043b\u044b",
+ "HeaderGameSystem": "\u041e\u0439\u044b\u043d \u0436\u04af\u0439\u0435\u0441\u0456",
+ "HeaderPlayers": "\u041e\u0439\u044b\u043d\u0448\u044b\u043b\u0430\u0440",
+ "HeaderEmbeddedImage": "\u0415\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0443\u0440\u0435\u0442",
+ "HeaderTrack": "\u0416\u043e\u043b\u0448\u044b\u049b",
+ "HeaderDisc": "\u0414\u0438\u0441\u043a\u0456"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
index 885c0e58b..542c8eff3 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ms.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
index 0c6058190..ef49504e2 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/nl.json
@@ -334,21 +334,21 @@
"HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers",
"HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
+ "HeaderResolution": "Resolutie",
"HeaderVideo": "Video",
- "HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
+ "HeaderRuntime": "Speelduur",
+ "HeaderCommunityRating": "Gemeenschap cijfer",
+ "HeaderParentalRating": "Kijkwijzer classificering",
+ "HeaderReleaseDate": "Releasedatum ",
+ "HeaderDateAdded": "Datum toegevoegd",
"HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
+ "HeaderSeason": "Seizoen",
+ "HeaderSeasonNumber": "Seizoen nummer",
+ "HeaderNetwork": "Zender",
+ "HeaderYear": "Jaar",
+ "HeaderGameSystem": "Spelsysteem",
+ "HeaderPlayers": "Spelers",
+ "HeaderEmbeddedImage": "Ingesloten afbeelding",
"HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderDisc": "Schijf"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
index c169a30cd..08055fdf5 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pl.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
index 14d99a62d..ea9c0eb0a 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/pt_BR.json
@@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "Visualizar grava\u00e7\u00e3o de s\u00e9ries",
"ValueOriginalAirDate": "Data original de exibi\u00e7\u00e3o: {0}",
"ButtonRemoveFromPlaylist": "Remover da lista de reprodu\u00e7\u00e3o",
- "HeaderSpecials": "Specials",
+ "HeaderSpecials": "Especiais",
"HeaderTrailers": "Trailers",
- "HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
- "HeaderVideo": "Video",
- "HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
- "HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
- "HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "HeaderAudio": "\u00c1udio",
+ "HeaderResolution": "Resolu\u00e7\u00e3o",
+ "HeaderVideo": "V\u00eddeo",
+ "HeaderRuntime": "Dura\u00e7\u00e3o",
+ "HeaderCommunityRating": "Classifica\u00e7\u00e3o da Comunidade",
+ "HeaderParentalRating": "Classifica\u00e7\u00e3o parental",
+ "HeaderReleaseDate": "Data de lan\u00e7amento",
+ "HeaderDateAdded": "Data de adi\u00e7\u00e3o",
+ "HeaderSeries": "S\u00e9rie",
+ "HeaderSeason": "Temporada",
+ "HeaderSeasonNumber": "N\u00famero da temporada",
+ "HeaderNetwork": "Rede de TV",
+ "HeaderYear": "Ano",
+ "HeaderGameSystem": "Sistema do jogo",
+ "HeaderPlayers": "Jogadores",
+ "HeaderEmbeddedImage": "Imagem incorporada",
+ "HeaderTrack": "Faixa",
+ "HeaderDisc": "Disco"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
index a85e19581..03638ac4b 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/ru.json
@@ -29,7 +29,7 @@
"MessageKeysLinked": "\u041a\u043b\u044e\u0447\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b.",
"HeaderConfirmation": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435",
"MessageKeyUpdated": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d.",
- "MessageKeyRemoved": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u0443\u0431\u0440\u0430\u043d.",
+ "MessageKeyRemoved": "\u041a\u043b\u044e\u0447 \u0441\u043f\u043e\u043d\u0441\u043e\u0440\u0430 \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d.",
"ErrorLaunchingChromecast": "\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Chromecast. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0432\u0430\u0448\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u043a \u0431\u0435\u0441\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.",
"HeaderSearch": "\u041f\u043e\u0438\u0441\u043a",
"LabelArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c",
@@ -63,7 +63,7 @@
"ButtonPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438",
"ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c",
"ButtonQueue": "\u041e\u0447\u0435\u0440\u0435\u0434\u044c",
- "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440 \u0442\u0440\u0435\u0439\u043b\u0435\u0440",
+ "ButtonPlayTrailer": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0435\u0439\u043b\u0435\u0440",
"ButtonPlaylist": "\u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f",
"ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430",
"LabelEnabled": "\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e",
@@ -77,7 +77,7 @@
"MessageInvalidUser": "\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c.",
"HeaderAllRecordings": "\u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438",
"RecommendationBecauseYouLike": "\u0418\u0431\u043e \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f {0}",
- "RecommendationBecauseYouWatched": "\u0422\u0430\u043a \u043a\u0430\u043a \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 {0}",
+ "RecommendationBecauseYouWatched": "\u0418\u0431\u043e \u0432\u044b \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 {0}",
"RecommendationDirectedBy": "\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a {0}",
"RecommendationStarring": "\u0412 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 {0}",
"HeaderConfirmRecordingCancellation": "\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0442\u043c\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u0438",
@@ -144,7 +144,7 @@
"HeaderSelectChannelDownloadPathHelp": "\u041f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0438\u043b\u0438 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u043f\u0443\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u0435\u0448\u0430 \u043a\u0430\u043d\u0430\u043b\u043e\u0432. \u041f\u0430\u043f\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438.",
"OptionNewCollection": "\u041d\u043e\u0432\u0430\u044f...",
"ButtonAdd": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c",
- "ButtonRemove": "\u0423\u0431\u0440\u0430\u0442\u044c",
+ "ButtonRemove": "\u0418\u0437\u044a\u044f\u0442\u044c",
"LabelChapterDownloaders": "\u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u0441\u0446\u0435\u043d:",
"LabelChapterDownloadersHelp": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0438 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u0441\u0446\u0435\u043d \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430. \u0417\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a\u0438 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430 \u0431\u0443\u0434\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439.",
"HeaderFavoriteAlbums": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b",
@@ -284,7 +284,7 @@
"LabelPremiereProgram": "\u041f\u0420\u0415\u041c\u042c\u0415\u0420\u0410",
"LabelHDProgram": "HD",
"HeaderChangeFolderType": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u043f\u0430\u043f\u043a\u0438",
- "HeaderChangeFolderTypeHelp": "\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0442\u0438\u043f \u043f\u0430\u043f\u043a\u0438, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u0441 \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u043e\u043c.",
+ "HeaderChangeFolderTypeHelp": "\u0414\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u043f\u0430\u043f\u043a\u0438, \u0443\u0434\u0430\u043b\u0438\u0442\u0435 \u043c\u0435\u0434\u0438\u0430\u043f\u0430\u043f\u043a\u0443 \u0438 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0435\u0451 \u0441 \u043d\u043e\u0432\u044b\u043c \u0442\u0438\u043f\u043e\u043c.",
"HeaderAlert": "\u041e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u0435",
"MessagePleaseRestart": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435.",
"ButtonRestart": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c",
@@ -330,25 +330,25 @@
"MessageAddedToPlaylistSuccess": "\u041e\u041a",
"ButtonViewSeriesRecording": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c \u0441\u0435\u0440\u0438\u0430\u043b\u0430",
"ValueOriginalAirDate": "\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u044d\u0444\u0438\u0440: {0}",
- "ButtonRemoveFromPlaylist": "\u0423\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f",
- "HeaderSpecials": "Specials",
- "HeaderTrailers": "Trailers",
- "HeaderAudio": "Audio",
- "HeaderResolution": "Resolution",
- "HeaderVideo": "Video",
- "HeaderRuntime": "Runtime",
- "HeaderCommunityRating": "Community rating",
- "HeaderParentalRating": "Parental rating",
- "HeaderReleaseDate": "Release date",
- "HeaderDateAdded": "Date added",
- "HeaderSeries": "Series",
- "HeaderSeason": "Season",
- "HeaderSeasonNumber": "Season number",
- "HeaderNetwork": "Network",
- "HeaderYear": "Year",
- "HeaderGameSystem": "Game system",
- "HeaderPlayers": "Players",
- "HeaderEmbeddedImage": "Embedded image",
- "HeaderTrack": "Track",
- "HeaderDisc": "Disc"
+ "ButtonRemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f",
+ "HeaderSpecials": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435",
+ "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b",
+ "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e",
+ "HeaderResolution": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435",
+ "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e",
+ "HeaderRuntime": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c",
+ "HeaderCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430",
+ "HeaderParentalRating": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f",
+ "HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430",
+ "HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
+ "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b",
+ "HeaderSeason": "\u0421\u0435\u0437\u043e\u043d",
+ "HeaderSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430",
+ "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u044c",
+ "HeaderYear": "\u0413\u043e\u0434",
+ "HeaderGameSystem": "\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430",
+ "HeaderPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438",
+ "HeaderEmbeddedImage": "\u0412\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a",
+ "HeaderTrack": "\u0414\u043e\u0440\u043e\u0436\u043a\u0430",
+ "HeaderDisc": "\u0414\u0438\u0441\u043a"
} \ No newline at end of file
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
index 6df18ed31..4bf6e7714 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/vi.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "Play",
"ButtonEdit": "Edit",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
index b5e03e50b..20ad67cde 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/zh_TW.json
@@ -58,14 +58,14 @@
"ButtonMute": "Mute",
"ButtonUnmute": "Unmute",
"ButtonStop": "Stop",
- "ButtonNextTrack": "Next Track",
+ "ButtonNextTrack": "Next track",
"ButtonPause": "Pause",
"ButtonPlay": "\u64ad\u653e",
"ButtonEdit": "\u7de8\u8f2f",
"ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist",
- "ButtonPreviousTrack": "Previous Track",
+ "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled",
"LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information",
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/ar.json b/MediaBrowser.Server.Implementations/Localization/Server/ar.json
index 802cf8122..bdf866bda 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ar.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ar.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 706914be5..89207f4e8 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ca.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ca.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 e9b5c42d9..815789e92 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/cs.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/cs.json
@@ -480,7 +480,7 @@
"HeaderProgram": "Program",
"HeaderClients": "Klienti",
"LabelCompleted": "Hotovo",
- "LabelFailed": "Failed",
+ "LabelFailed": "Chyba",
"LabelSkipped": "P\u0159esko\u010deno",
"HeaderEpisodeOrganization": "Organizace epizod",
"LabelSeries": "Series:",
@@ -630,8 +630,8 @@
"ButtonFullscreen": "Toggle fullscreen",
"ButtonScenes": "Sc\u00e9ny",
"ButtonSubtitles": "Titulky",
- "ButtonAudioTracks": "Audio tracks",
- "ButtonPreviousTrack": "Previous track",
+ "ButtonAudioTracks": "Audio stopy",
+ "ButtonPreviousTrack": "P\u0159edchod\u00ed stopa",
"ButtonNextTrack": "Next track",
"ButtonStop": "Stop",
"ButtonPause": "Pause",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Spr\u00e1vce metadat",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Ozna\u010dit jako p\u0159e\u010dten\u00e9",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Nejsledovan\u011bj\u0161\u00ed",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 8d8904f52..07f577724 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/da.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/da.json
@@ -627,10 +627,10 @@
"TabNowPlaying": "Spiler nu",
"TabNavigation": "Navigation",
"TabControls": "Controls",
- "ButtonFullscreen": "Toggle fullscreen",
+ "ButtonFullscreen": "Skift til fuldsk\u00e6rm",
"ButtonScenes": "Scener",
"ButtonSubtitles": "Undertekster",
- "ButtonAudioTracks": "Audio tracks",
+ "ButtonAudioTracks": "Lyd filer",
"ButtonPreviousTrack": "Previous track",
"ButtonNextTrack": "Next track",
"ButtonStop": "Stop",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 1e7e9bcfb..6b5a38dc7 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/de.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/de.json
@@ -480,10 +480,10 @@
"HeaderProgram": "Programm",
"HeaderClients": "Clients",
"LabelCompleted": "Fertiggestellt",
- "LabelFailed": "Failed",
+ "LabelFailed": "Gescheitert",
"LabelSkipped": "\u00dcbersprungen",
"HeaderEpisodeOrganization": "Episodensortierung",
- "LabelSeries": "Series:",
+ "LabelSeries": "Serien:",
"LabelSeasonNumber": "Staffelnummer",
"LabelEpisodeNumber": "Episodennummer",
"LabelEndingEpisodeNumber": "Ending episode number",
@@ -627,12 +627,12 @@
"TabNowPlaying": "Aktuelle Wiedergabe",
"TabNavigation": "Navigation",
"TabControls": "Controls",
- "ButtonFullscreen": "Toggle fullscreen",
+ "ButtonFullscreen": "Schalte Vollbild um",
"ButtonScenes": "Szenen",
"ButtonSubtitles": "Untertitel",
- "ButtonAudioTracks": "Audio tracks",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonAudioTracks": "Audiospuren",
+ "ButtonPreviousTrack": "Vorheriger Track",
+ "ButtonNextTrack": "N\u00e4chster Track",
"ButtonStop": "Stop",
"ButtonPause": "Pause",
"LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadaten-Manager",
"HeaderPreferences": "Einstellungen",
"MessageLoadingChannels": "Lade Channel Inhalt...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Als gelesen markieren",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Meistgesehen",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 a72dbdf75..95b5be3e2 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/el.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/el.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 30215cb92..227ac09c0 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/en_GB.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 46e7e4512..8e243a682 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/en_US.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 bb40d7be8..75a2ae657 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/es.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/es.json
@@ -480,10 +480,10 @@
"HeaderProgram": "Programa",
"HeaderClients": "Clientes",
"LabelCompleted": "Completado",
- "LabelFailed": "Error",
+ "LabelFailed": "Err\u00f3neo",
"LabelSkipped": "Omitido",
"HeaderEpisodeOrganization": "Organizaci\u00f3n de episodios",
- "LabelSeries": "Series:",
+ "LabelSeries": "Serie:",
"LabelSeasonNumber": "Temporada n\u00famero:",
"LabelEpisodeNumber": "Episodio n\u00famero:",
"LabelEndingEpisodeNumber": "N\u00famero episodio final:",
@@ -627,10 +627,10 @@
"TabNowPlaying": "Reproduciendo ahora",
"TabNavigation": "Navegaci\u00f3n",
"TabControls": "Controles",
- "ButtonFullscreen": "Toggle fullscreen",
+ "ButtonFullscreen": "Pantalla completa",
"ButtonScenes": "Escenas",
"ButtonSubtitles": "Subt\u00edtulos",
- "ButtonAudioTracks": "Audio tracks",
+ "ButtonAudioTracks": "Pistas de audio",
"ButtonPreviousTrack": "Pista anterior",
"ButtonNextTrack": "Pista siguiente",
"ButtonStop": "Detener",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferencias",
"MessageLoadingChannels": "Cargando contenidos del canal...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marcar como le\u00eddo",
"OptionDefaultSort": "Por defecto",
"OptionCommunityMostWatchedSort": "M\u00e1s visto",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 4fcef706b..0eb48f1c0 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/es_MX.json
@@ -627,12 +627,12 @@
"TabNowPlaying": "Reproduci\u00e9ndo Ahora",
"TabNavigation": "Navegaci\u00f3n",
"TabControls": "Controles",
- "ButtonFullscreen": "Cambiar a pantalla completa",
+ "ButtonFullscreen": "Alternar pantalla completa",
"ButtonScenes": "Escenas",
"ButtonSubtitles": "Subt\u00edtulos",
"ButtonAudioTracks": "Pistas de audio",
- "ButtonPreviousTrack": "Pista anterior",
- "ButtonNextTrack": "Pista siguiente",
+ "ButtonPreviousTrack": "Pista Anterior",
+ "ButtonNextTrack": "Pista Siguiente",
"ButtonStop": "Detener",
"ButtonPause": "Pausar",
"LabelGroupMoviesIntoCollections": "Agrupar pel\u00edculas en colecciones",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Administrador de Metadatos",
"HeaderPreferences": "Preferencias",
"MessageLoadingChannels": "Cargando contenidos del canal...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marcar como Le\u00eddo",
"OptionDefaultSort": "Por defecto",
"OptionCommunityMostWatchedSort": "M\u00e1s Visto",
@@ -948,36 +949,38 @@
"OptionReportAlbums": "\u00c1lbums",
"OptionReportAdultVideos": "Videos para Adultos",
"ButtonMore": "M\u00e1s",
- "HeaderActivity": "Activity",
- "ScheduledTaskStartedWithName": "{0} started",
- "ScheduledTaskCancelledWithName": "{0} was cancelled",
- "ScheduledTaskCompletedWithName": "{0} completed",
- "ScheduledTaskFailed": "Scheduled task completed",
- "PluginInstalledWithName": "{0} was installed",
- "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",
- "DeviceOnlineWithName": "{0} is connected",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "DeviceOfflineWithName": "{0} has disconnected",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "LabelIpAddressValue": "Ip address: {0}",
- "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
- "UserCreatedWithName": "User {0} has been created",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserDeletedWithName": "User {0} has been deleted",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageApplicationUpdated": "Media Browser Server has been updated",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
- "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "HeaderActivity": "Actividad",
+ "ScheduledTaskStartedWithName": "{0} Iniciado",
+ "ScheduledTaskCancelledWithName": "{0} fue cancelado",
+ "ScheduledTaskCompletedWithName": "{0} completado",
+ "ScheduledTaskFailed": "Tarea programada completada",
+ "PluginInstalledWithName": "{0} fue instalado",
+ "PluginUpdatedWithName": "{0} fue actualizado",
+ "PluginUninstalledWithName": "{0} fue desinstalado",
+ "ScheduledTaskFailedWithName": "{0} fall\u00f3",
+ "ItemAddedWithName": "{0} fue agregado a la biblioteca",
+ "ItemRemovedWithName": "{0} fue removido de la biblioteca",
+ "DeviceOnlineWithName": "{0} est\u00e1 conectado",
+ "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}",
+ "DeviceOfflineWithName": "{0} se ha desconectado",
+ "UserOfflineFromDevice": "{0} se ha desconecatdo desde {1}",
+ "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}",
+ "SubtitleDownloadFailureForItem": "Fall\u00f3 la descarga de subt\u00edtulos para {0}",
+ "LabelRunningTimeValue": "Duraci\u00f3n: {0}",
+ "LabelIpAddressValue": "Direcci\u00f3n IP: {0}",
+ "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n del usuario {0}",
+ "UserCreatedWithName": "Se ha creado el usuario {0}",
+ "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}",
+ "UserDeletedWithName": "Se ha eliminado al usuario {0}",
+ "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor",
+ "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor",
+ "MessageApplicationUpdated": "Se ha actualizado el Servidor de Media Browser",
+ "AuthenticationSucceededWithUserName": "{0} autenticado con \u00e9xito",
+ "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesi\u00f3n de {0}",
+ "UserStartedPlayingItemWithValues": "{0} ha iniciado la reproducci\u00f3n de {1}",
+ "UserStoppedPlayingItemWithValues": "{0} ha detenido la reproducci\u00f3n de {1}",
+ "AppDeviceValues": "App: {0}, Dispositivo: {1}",
+ "ProviderValue": "Proveedor: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 84e255525..cef64513d 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/fr.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/fr.json
@@ -397,7 +397,7 @@
"HeaderCastCrew": "\u00c9quipe de tournage",
"HeaderAdditionalParts": "Parties Additionelles",
"ButtonSplitVersionsApart": "S\u00e9parer les versions",
- "ButtonPlayTrailer": "Trailer",
+ "ButtonPlayTrailer": "Bande-annonce",
"LabelMissing": "Manquant(s)",
"LabelOffline": "Hors ligne",
"PathSubstitutionHelp": "Les substitutions de chemins d'acc\u00e8s sont utilis\u00e9es pour faire correspondre un chemin d'acc\u00e8s du serveur \u00e0 un chemin d'acc\u00e8s accessible par les clients. En autorisant un acc\u00e8s direct aux m\u00e9dias du serveur, les clients pourront les lire directement du r\u00e9seau et \u00e9viter l'utilisation inutiles des ressources du serveur en demandant du transcodage.",
@@ -480,10 +480,10 @@
"HeaderProgram": "Programme",
"HeaderClients": "Clients",
"LabelCompleted": "Compl\u00e9t\u00e9",
- "LabelFailed": "Failed",
+ "LabelFailed": "\u00c9chec",
"LabelSkipped": "Saut\u00e9",
"HeaderEpisodeOrganization": "Organisation d'\u00e9pisodes",
- "LabelSeries": "Series:",
+ "LabelSeries": "S\u00e9ries:",
"LabelSeasonNumber": "Num\u00e9ro de saison",
"LabelEpisodeNumber": "Num\u00e9ro d'\u00e9pisode",
"LabelEndingEpisodeNumber": "Num\u00e9ro d'\u00e9pisode se terminant",
@@ -627,12 +627,12 @@
"TabNowPlaying": "En cours de lecture",
"TabNavigation": "Navigation",
"TabControls": "Contr\u00f4les",
- "ButtonFullscreen": "Basculer en plein \u00e9cran",
+ "ButtonFullscreen": "Plein \u00e9cran",
"ButtonScenes": "Sc\u00e8nes",
"ButtonSubtitles": "Sous-titres",
- "ButtonAudioTracks": "Pistes audio",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonAudioTracks": "Piste audio",
+ "ButtonPreviousTrack": "Piste pr\u00e9c\u00e9dante",
+ "ButtonNextTrack": "Piste suivante",
"ButtonStop": "Arr\u00eat",
"ButtonPause": "Pause",
"LabelGroupMoviesIntoCollections": "Grouper les films en collections",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Gestionnaire de m\u00e9tadonn\u00e9es",
"HeaderPreferences": "Pr\u00e9f\u00e9rences",
"MessageLoadingChannels": "Chargement du contenu de la cha\u00eene...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marquer lu",
"OptionDefaultSort": "Par d\u00e9faut",
"OptionCommunityMostWatchedSort": "Les plus \u00e9cout\u00e9s",
@@ -795,7 +796,7 @@
"MessageNoMovieSuggestionsAvailable": "Aucune suggestion de film n'est actuellement disponible. Commencez \u00e0 regarder et noter vos films pour avoir des suggestions.",
"MessageNoCollectionsAvailable": "Les Collections permettent le groupement de films, S\u00e9ries, Albums, Livres et Jeux. Cliquer sur \"Nouveau\" pour commencer la cr\u00e9ation des 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.",
- "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.",
+ "MessageNoPlaylistItemsAvailable": "Cette liste de lecture est pr\u00e9sentement vide.",
"HeaderWelcomeToMediaBrowserWebClient": "Bienvenue au client Web Media Browser",
"ButtonDismiss": "Annuler",
"MessageLearnHowToCustomize": "Apprenez comment personnaliser cette page selon vos propres go\u00fbts. S\u00e9lectionnez votre ic\u00f4ne d'utilisateur dans le coin en haut, \u00e0 droite de l'\u00e9cran pour visionner et mettre \u00e0 jour vos pr\u00e9f\u00e9rences. ",
@@ -896,43 +897,43 @@
"HeaderChapters": "Chapitres",
"HeaderResumeSettings": "Reprendre les param\u00e8tres",
"TabSync": "Sync",
- "TitleUsers": "Users",
+ "TitleUsers": "Utilisateurs",
"LabelProtocol": "Protocol:",
"OptionProtocolHttp": "Http",
"OptionProtocolHls": "Http Live Streaming",
- "LabelContext": "Context:",
- "OptionContextStreaming": "Streaming",
+ "LabelContext": "Contexte:",
+ "OptionContextStreaming": "Diffusion",
"OptionContextStatic": "Sync",
- "ButtonAddToPlaylist": "Add to playlist",
- "TabPlaylists": "Playlists",
+ "ButtonAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
+ "TabPlaylists": "Listes de lecture",
"ButtonClose": "Fermer",
- "LabelAllLanguages": "All languages",
- "HeaderBrowseOnlineImages": "Browse Online Images",
+ "LabelAllLanguages": "Toutes les langues",
+ "HeaderBrowseOnlineImages": "Parcourir les images en ligne",
"LabelSource": "Source:",
- "OptionAll": "All",
+ "OptionAll": "Tous",
"LabelImage": "Image:",
- "ButtonBrowseImages": "Browse Images",
+ "ButtonBrowseImages": "Parcourir les images:",
"HeaderImages": "Images",
- "HeaderBackdrops": "Backdrops",
+ "HeaderBackdrops": "Arri\u00e8re-plans",
"HeaderScreenshots": "Screenshots",
- "HeaderAddUpdateImage": "Add\/Update Image",
- "LabelJpgPngOnly": "JPG\/PNG only",
- "LabelImageType": "Image type:",
- "OptionPrimary": "Primary",
+ "HeaderAddUpdateImage": "Ajouter\/mettre \u00e0 jour image",
+ "LabelJpgPngOnly": "JPG\/PNG seulement",
+ "LabelImageType": "Type d'image:",
+ "OptionPrimary": "Principal",
"OptionArt": "Art",
- "OptionBox": "Box",
- "OptionBoxRear": "Box rear",
- "OptionDisc": "Disc",
+ "OptionBox": "Bo\u00eetier",
+ "OptionBoxRear": "Dos de bo\u00eetier",
+ "OptionDisc": "Disque",
"OptionLogo": "Logo",
"OptionMenu": "Menu",
"OptionScreenshot": "Screenshot",
- "OptionLocked": "Locked",
- "OptionUnidentified": "Unidentified",
- "OptionMissingParentalRating": "Missing parental rating",
+ "OptionLocked": "Verrouill\u00e9",
+ "OptionUnidentified": "Non identifi\u00e9",
+ "OptionMissingParentalRating": "Note de contr\u00f4le parental manquante",
"OptionStub": "Stub",
- "HeaderEpisodes": "Episodes:",
- "OptionSeason0": "Season 0",
- "LabelReport": "Report:",
+ "HeaderEpisodes": "\u00c9pisodes:",
+ "OptionSeason0": "Saison 0",
+ "LabelReport": "Rapport:",
"OptionReportSongs": "Songs",
"OptionReportSeries": "Series",
"OptionReportSeasons": "Seasons",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 5c05bda3b..3f656b60c 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/he.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/he.json
@@ -397,7 +397,7 @@
"HeaderCastCrew": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd \u05d5\u05e6\u05d5\u05d5\u05ea",
"HeaderAdditionalParts": "\u05d7\u05dc\u05e7\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd",
"ButtonSplitVersionsApart": "\u05e4\u05e6\u05dc \u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05d1\u05e0\u05e4\u05e8\u05d3",
- "ButtonPlayTrailer": "Trailer",
+ "ButtonPlayTrailer": "\u05d8\u05e8\u05d9\u05d9\u05dc\u05e8\u05d9\u05dd",
"LabelMissing": "\u05d7\u05e1\u05e8",
"LabelOffline": "\u05dc\u05d0 \u05de\u05e7\u05d5\u05d5\u05df",
"PathSubstitutionHelp": "\u05e0\u05ea\u05d9\u05d1\u05d9\u05dd \u05d7\u05dc\u05d5\u05e4\u05d9\u05d9\u05dd \u05d4\u05dd \u05dc\u05e6\u05d5\u05e8\u05da \u05de\u05d9\u05e4\u05d5\u05d9 \u05e0\u05ea\u05d9\u05d1\u05d9\u05dd \u05d1\u05e9\u05e8\u05ea \u05dc\u05e0\u05ea\u05d9\u05d1\u05d9\u05dd \u05e9\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05d2\u05e9\u05ea \u05d0\u05dc\u05d9\u05d4\u05dd. \u05e2\u05dc \u05d9\u05d3\u05d9 \u05d4\u05e8\u05e9\u05d0\u05d4 \u05dc\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4 \u05dc\u05de\u05d3\u05d9\u05d4 \u05d1\u05e9\u05e8\u05ea \u05d0\u05dd \u05d9\u05db\u05d5\u05dc\u05d9\u05dd \u05dc\u05e0\u05d2\u05df \u05d0\u05ea \u05d4\u05e7\u05d1\u05e6\u05d9\u05dd \u05d9\u05e9\u05d9\u05e8\u05d5\u05ea \u05e2\u05dc \u05d2\u05d1\u05d9 \u05d4\u05e8\u05e9\u05ea \u05d5\u05dc\u05d4\u05d9\u05de\u05e0\u05e2 \u05de\u05e9\u05d9\u05de\u05d5\u05e9 \u05d1\u05de\u05e9\u05d0\u05d1\u05d9 \u05d4\u05e9\u05e8\u05ea \u05dc\u05e6\u05d5\u05e8\u05da \u05e7\u05d9\u05d3\u05d5\u05d3 \u05d5\u05e9\u05d9\u05d3\u05d5\u05e8.",
@@ -480,10 +480,10 @@
"HeaderProgram": "\u05ea\u05d5\u05db\u05e0\u05d4",
"HeaderClients": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd",
"LabelCompleted": "\u05d4\u05d5\u05e9\u05dc\u05dd",
- "LabelFailed": "Failed",
+ "LabelFailed": "\u05e0\u05db\u05e9\u05dc",
"LabelSkipped": "\u05d3\u05d5\u05dc\u05d2",
"HeaderEpisodeOrganization": "\u05d0\u05d9\u05e8\u05d2\u05d5\u05df \u05e4\u05e8\u05e7\u05d9\u05dd",
- "LabelSeries": "Series:",
+ "LabelSeries": "\u05e1\u05d3\u05e8\u05d4:",
"LabelSeasonNumber": "\u05de\u05e1\u05e4\u05e8 \u05e2\u05d5\u05e0\u05d4:",
"LabelEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7:",
"LabelEndingEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d5\u05dd \u05e4\u05e8\u05e7:",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 17fef888a..b8ac892e4 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/it.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/it.json
@@ -480,10 +480,10 @@
"HeaderProgram": "Programma",
"HeaderClients": "Dispositivi",
"LabelCompleted": "Completato",
- "LabelFailed": "Failed",
+ "LabelFailed": "Fallito",
"LabelSkipped": "Saltato",
"HeaderEpisodeOrganization": "Organizzazione Episodi",
- "LabelSeries": "Series:",
+ "LabelSeries": "Serie:",
"LabelSeasonNumber": "Numero Stagione",
"LabelEpisodeNumber": "Numero Episodio",
"LabelEndingEpisodeNumber": "Ultimo Episodio Numero",
@@ -627,12 +627,12 @@
"TabNowPlaying": "In esecuzione",
"TabNavigation": "Navigazione",
"TabControls": "Controlli",
- "ButtonFullscreen": "Tutto Schermo",
+ "ButtonFullscreen": "Schermo intero",
"ButtonScenes": "Scene",
"ButtonSubtitles": "Sottotitoli",
- "ButtonAudioTracks": "Tracce audio",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonAudioTracks": "Traccia Audio",
+ "ButtonPreviousTrack": "Precedente traccia",
+ "ButtonNextTrack": "traccia Prossima",
"ButtonStop": "Stop",
"ButtonPause": "Pausa",
"LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collection",
@@ -788,14 +788,15 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferenze",
"MessageLoadingChannels": "Sto caricando il contenuto del canale",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Segna come letto",
"OptionDefaultSort": "Predefinito",
"OptionCommunityMostWatchedSort": "Pi\u00f9 visti",
"TabNextUp": "Da vedere",
"MessageNoMovieSuggestionsAvailable": "Nessun suggerimento di film sono attualmente disponibili. Iniziare a guardare e valutare i vostri film, e poi tornare per visualizzare le tue segnalazioni.",
"MessageNoCollectionsAvailable": "Collezioni permettono di godere di raggruppamenti personalizzati di film, serie, album, libri e giochi. Fare clic sul pulsante Nuovo per avviare la creazione di collezioni.",
- "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.",
- "MessageNoPlaylistItemsAvailable": "This playlist is currently empty.",
+ "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",
+ "MessageNoPlaylistItemsAvailable": "Questa playlist al momento \u00e8 vuota",
"HeaderWelcomeToMediaBrowserWebClient": "Benvenuti nel Media Browser Web client",
"ButtonDismiss": "Dismetti",
"MessageLearnHowToCustomize": "Ulteriori informazioni su come personalizzare questa pagina ai tuoi gusti personali. Fare clic sull'icona utente in alto a destra dello schermo per visualizzare e aggiornare le vostre preferenze.",
@@ -903,48 +904,48 @@
"LabelContext": "Contenuto:",
"OptionContextStreaming": "Streaming",
"OptionContextStatic": "Sinc",
- "ButtonAddToPlaylist": "Add to playlist",
+ "ButtonAddToPlaylist": "Aggiungi alla playlist",
"TabPlaylists": "Playlists",
"ButtonClose": "Chiudi",
- "LabelAllLanguages": "All languages",
- "HeaderBrowseOnlineImages": "Browse Online Images",
- "LabelSource": "Source:",
- "OptionAll": "All",
- "LabelImage": "Image:",
- "ButtonBrowseImages": "Browse Images",
- "HeaderImages": "Images",
- "HeaderBackdrops": "Backdrops",
- "HeaderScreenshots": "Screenshots",
- "HeaderAddUpdateImage": "Add\/Update Image",
- "LabelJpgPngOnly": "JPG\/PNG only",
- "LabelImageType": "Image type:",
- "OptionPrimary": "Primary",
+ "LabelAllLanguages": "Tutte le lingue",
+ "HeaderBrowseOnlineImages": "Sfoglia le immagini sul web",
+ "LabelSource": "Origine:",
+ "OptionAll": "Tutto",
+ "LabelImage": "Immagine:",
+ "ButtonBrowseImages": "Sfoglia immagini",
+ "HeaderImages": "Immagini",
+ "HeaderBackdrops": "Sfondi",
+ "HeaderScreenshots": "Immagini",
+ "HeaderAddUpdateImage": "Aggiungi\/aggiorna immagine",
+ "LabelJpgPngOnly": "JPG\/PNG solamente",
+ "LabelImageType": "Tipo immagine",
+ "OptionPrimary": "Primaria",
"OptionArt": "Art",
"OptionBox": "Box",
"OptionBoxRear": "Box rear",
"OptionDisc": "Disc",
"OptionLogo": "Logo",
"OptionMenu": "Menu",
- "OptionScreenshot": "Screenshot",
- "OptionLocked": "Locked",
- "OptionUnidentified": "Unidentified",
- "OptionMissingParentalRating": "Missing parental rating",
+ "OptionScreenshot": "Immagine",
+ "OptionLocked": "Bloccato",
+ "OptionUnidentified": "Non identificata",
+ "OptionMissingParentalRating": "Voto genitori mancante",
"OptionStub": "Stub",
- "HeaderEpisodes": "Episodes:",
- "OptionSeason0": "Season 0",
+ "HeaderEpisodes": "Episodi:",
+ "OptionSeason0": "Stagione 0",
"LabelReport": "Report:",
- "OptionReportSongs": "Songs",
+ "OptionReportSongs": "Canzoni",
"OptionReportSeries": "Series",
- "OptionReportSeasons": "Seasons",
+ "OptionReportSeasons": "Stagioni",
"OptionReportTrailers": "Trailers",
- "OptionReportMusicVideos": "Music videos",
- "OptionReportMovies": "Movies",
- "OptionReportHomeVideos": "Home videos",
- "OptionReportGames": "Games",
- "OptionReportEpisodes": "Episodes",
- "OptionReportCollections": "Collections",
- "OptionReportBooks": "Books",
- "OptionReportArtists": "Artists",
+ "OptionReportMusicVideos": "Video musicali",
+ "OptionReportMovies": "Film",
+ "OptionReportHomeVideos": "Video personali",
+ "OptionReportGames": "Giochi",
+ "OptionReportEpisodes": "Episodi",
+ "OptionReportCollections": "Collezioni",
+ "OptionReportBooks": "Libri",
+ "OptionReportArtists": "Cantanti",
"OptionReportAlbums": "Albums",
"OptionReportAdultVideos": "Adult videos",
"ButtonMore": "Pi\u00f9 info...",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 86dbc98a1..7765f843f 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/kk.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/kk.json
@@ -129,7 +129,7 @@
"OptionAscending": "\u0410\u0440\u0442\u0443\u044b \u0431\u043e\u0439\u044b\u043d\u0448\u0430",
"OptionDescending": "\u041a\u0435\u043c\u0443\u0456 \u0431\u043e\u0439\u044b\u043d\u0448\u0430",
"OptionRuntime": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443 \u0443\u0430\u049b\u044b\u0442\u044b",
- "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d-\u0430\u0439\u044b",
+ "OptionReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b",
"OptionPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0441\u0430\u043d\u044b",
"OptionDatePlayed": "\u041e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d \u043a\u04af\u043d-\u0430\u0439\u044b",
"OptionDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d-\u0430\u0439\u044b",
@@ -137,7 +137,7 @@
"OptionArtist": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b",
"OptionAlbum": "\u0410\u043b\u044c\u0431\u043e\u043c",
"OptionTrackName": "\u0416\u043e\u043b\u0448\u044b\u049b \u0430\u0442\u044b",
- "OptionCommunityRating": "\u049a\u043e\u0493\u0430\u043c\u0434\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443",
+ "OptionCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b",
"OptionNameSort": "\u0410\u0442\u044b",
"OptionFolderSort": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440",
"OptionBudget": "\u0411\u044e\u0434\u0436\u0435\u0442",
@@ -690,7 +690,7 @@
"LabelIdentificationFieldHelp": "\u0420\u0435\u0433\u0438\u0441\u0442\u0440 \u0435\u0441\u043a\u0435\u0440\u043c\u0435\u0439\u0442\u0456\u043d \u0456\u0448\u043a\u0456 \u0436\u043e\u043b \u043d\u0435\u043c\u0435\u0441\u0435 \u04b1\u0434\u0430\u0439\u044b \u04e9\u0440\u043d\u0435\u043a.",
"HeaderProfileServerSettingsHelp": "\u0411\u04b1\u043b \u043c\u04d9\u043d\u0434\u0435\u0440 Media Browser \u049b\u0430\u043b\u0430\u0439 \u04e9\u0437\u0456\u043d \u0436\u0430\u0431\u0434\u044b\u049b\u0442\u0430 \u043a\u04e9\u0440\u0441\u0435\u0442\u0435\u0442\u0456\u043d\u0456\u04a3 \u0431\u0430\u0441\u049b\u0430\u0440\u0430\u0434\u044b.",
"LabelMaxBitrate": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d:",
- "LabelMaxBitrateHelp": "\u04e8\u0442\u043a\u0456\u0437\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456 \u0448\u0435\u043a\u0442\u0435\u043b\u0433\u0435\u043d \u043e\u0440\u0442\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.",
+ "LabelMaxBitrateHelp": "\u04e8\u0442\u043a\u0456\u0437\u0443 \u043c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u0433\u0456 \u0448\u0435\u043a\u0442\u0435\u043b\u0433\u0435\u043d \u043e\u0440\u0442\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u044b\u043d, \u043d\u0435\u043c\u0435\u0441\u0435 \u0436\u0430\u0431\u0434\u044b\u049b\u049b\u0430 \u049b\u0430\u0436\u0435\u0442 \u0431\u043e\u043b\u0441\u0430 - \u04e9\u0437 \u0448\u0435\u0433\u0456\u043d \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.",
"LabelMaxStreamingBitrate": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u0430\u0493\u044b\u043d \u049b\u0430\u0440\u049b\u044b\u043d\u044b:",
"LabelMaxStreamingBitrateHelp": "\u0410\u0493\u044b\u043d\u043c\u0435\u043d \u0442\u0430\u0441\u044b\u043c\u0430\u043b\u0434\u0430\u0443 \u043a\u0435\u0437\u0456\u043d\u0434\u0435 \u0435\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u049b\u0430\u0440\u049b\u044b\u043d\u0434\u044b \u0430\u043d\u044b\u049b\u0442\u0430\u04a3\u044b\u0437.",
"LabelMaxStaticBitrate": "\u0415\u04a3 \u0436\u043e\u0493\u0430\u0440\u044b \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0434\u0430\u0443 \u049b\u0430\u0440\u049b\u044b\u043d\u044b:",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "\u041c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a \u0431\u0430\u0441\u049b\u0430\u0440\u0443\u0448\u044b",
"HeaderPreferences": "\u0422\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0434\u0435\u0440",
"MessageLoadingChannels": "\u0410\u0440\u043d\u0430\u043d\u044b\u04a3 \u043c\u0430\u0437\u043c\u04b1\u043d\u044b\u043d \u0436\u04af\u043a\u0442\u0435\u0443\u0434\u0435...",
+ "MessageLoadingContent": "\u041c\u0430\u0437\u043c\u04b1\u043d \u0436\u04af\u043a\u0442\u0435\u043b\u0443\u0434\u0435...",
"ButtonMarkRead": "\u041e\u049b\u044b\u043b\u0493\u0430\u043d \u0434\u0435\u043f \u0431\u0435\u043b\u0433\u0456\u043b\u0435\u0443",
"OptionDefaultSort": "\u04d8\u0434\u0435\u043f\u043a\u0456",
"OptionCommunityMostWatchedSort": "\u0415\u04a3 \u043a\u04e9\u043f \u049b\u0430\u0440\u0430\u043b\u0493\u0430\u043d\u0434\u0430\u0440",
@@ -832,7 +833,7 @@
"HeaderXbmcMetadataHelp": "Media Browser \u0431\u0430\u0493\u0434\u0430\u0440\u043b\u0430\u043c\u0430\u0441\u044b Xbmc Nfo \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u0436\u04d9\u043d\u0435 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0456\u043d\u0456\u04a3 \u043a\u0456\u0440\u0456\u043a\u0442\u0456\u0440\u043c\u0435 \u049b\u043e\u043b\u0434\u0430\u0443\u044b\u043d \u049b\u0430\u043c\u0442\u0438\u0434\u044b. Xbmc \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u049b\u043e\u0441\u0443 \u043d\u0435\u043c\u0435\u0441\u0435 \u04e9\u0448\u0456\u0440\u0443 \u04af\u0448\u0456\u043d \u049a\u044b\u0437\u043c\u0435\u0442\u0442\u0435\u0440 \u049b\u043e\u0439\u044b\u043d\u0434\u044b\u0441\u044b\u043d\u0434\u0430\u0493\u044b \u0442\u0430\u0441\u0443\u0448\u044b \u0442\u04af\u0440\u043b\u0435\u0440\u0456\u043d\u0435 \u0430\u0440\u043d\u0430\u043b\u0493\u0430\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.",
"LabelXbmcMetadataUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043d\u044b\u04a3 \u049b\u0430\u0440\u0430\u0443 \u043a\u04af\u0439\u0456\u043d nfo \u04af\u0448\u0456\u043d \u043c\u044b\u043d\u0430\u0493\u0430\u043d \u049b\u043e\u0441\u0443:",
"LabelXbmcMetadataUserHelp": "\u041a\u04e9\u0440\u0456\u043b\u0433\u0435\u043d \u043a\u04af\u0439\u0434\u0456 Media Browser \u0436\u04d9\u043d\u0435 Xbmc \u0430\u0440\u0430\u0441\u044b\u043d\u0434\u0430 \u04af\u0439\u043b\u0435\u0441\u0442\u0456\u0440\u0456\u043f \u0442\u04b1\u0440\u0443 \u04af\u0448\u0456\u043d \u0431\u04b1\u043d\u044b \u049b\u043e\u0441\u044b\u04a3\u044b\u0437.",
- "LabelXbmcMetadataDateFormat": "\u0416\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b\u043d\u044b\u04a3 \u043f\u0456\u0448\u0456\u043c\u0456:",
+ "LabelXbmcMetadataDateFormat": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b\u043d\u044b\u04a3 \u043f\u0456\u0448\u0456\u043c\u0456:",
"LabelXbmcMetadataDateFormatHelp": "\u041e\u0441\u044b \u043f\u0456\u0448\u0456\u043c\u0434\u0456 \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u043f nfo \u0456\u0448\u0456\u043d\u0434\u0435\u0433\u0456 \u0431\u0430\u0440\u043b\u044b\u049b \u043a\u04af\u043d-\u0430\u0439\u043b\u0430\u0440 \u043e\u049b\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0436\u0430\u0437\u044b\u043b\u0430\u0434\u044b.",
"LabelXbmcMetadataSaveImagePaths": "\u0421\u0443\u0440\u0435\u0442 \u0436\u043e\u043b\u044b\u043d nfo \u0444\u0430\u0439\u043b\u0434\u0430\u0440\u044b\u043d\u0434\u0430 \u0441\u0430\u049b\u0442\u0430\u0443",
"LabelXbmcMetadataSaveImagePathsHelp": "\u0415\u0433\u0435\u0440 \u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440\u0434\u0456\u04a3 Xbmc \u043d\u04b1\u0441\u049b\u0430\u0443\u043b\u044b\u049b \u04b1\u0441\u0442\u0430\u043d\u044b\u043c\u0434\u0430\u0440\u044b\u043d\u0430 \u0441\u0430\u0439 \u043a\u0435\u043b\u043c\u0435\u0433\u0435\u043d \u0430\u0442\u0430\u0443\u043b\u0430\u0440\u044b \u0431\u043e\u043b\u0441\u0430, \u0431\u04b1\u043b \u04b1\u0441\u044b\u043d\u044b\u043b\u0430\u0434\u044b.",
@@ -886,7 +887,7 @@
"TabSort": "\u0421\u04b1\u0440\u044b\u043f\u0442\u0430\u0443",
"TabFilter": "\u0421\u04af\u0437\u0443",
"ButtonView": "\u049a\u0430\u0440\u0430\u0443",
- "LabelPageSize": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0442\u0456\u04a3 \u0448\u0435\u0433\u0456:",
+ "LabelPageSize": "\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0442\u0435\u0440 \u0448\u0435\u0433\u0456:",
"LabelView": "\u041a\u04e9\u0440\u0456\u043d\u0456\u0441:",
"TabUsers": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b\u043b\u0430\u0440",
"HeaderFeatures": "\u041c\u04d9\u043b\u0456\u043c\u0435\u0442\u0442\u0435\u0440",
@@ -948,36 +949,38 @@
"OptionReportAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440",
"OptionReportAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440",
"ButtonMore": "\u041a\u04e9\u0431\u0456\u0440\u0435\u043a",
- "HeaderActivity": "Activity",
- "ScheduledTaskStartedWithName": "{0} started",
- "ScheduledTaskCancelledWithName": "{0} was cancelled",
- "ScheduledTaskCompletedWithName": "{0} completed",
- "ScheduledTaskFailed": "Scheduled task completed",
- "PluginInstalledWithName": "{0} was installed",
- "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",
- "DeviceOnlineWithName": "{0} is connected",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "DeviceOfflineWithName": "{0} has disconnected",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "LabelIpAddressValue": "Ip address: {0}",
- "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
- "UserCreatedWithName": "User {0} has been created",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserDeletedWithName": "User {0} has been deleted",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageApplicationUpdated": "Media Browser Server has been updated",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
- "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "HeaderActivity": "\u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0435\u0440",
+ "ScheduledTaskStartedWithName": "{0} \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0434\u044b",
+ "ScheduledTaskCancelledWithName": "{0} \u0431\u043e\u043b\u0434\u044b\u0440\u044b\u043b\u043c\u0430\u0434\u044b",
+ "ScheduledTaskCompletedWithName": "{0} \u0430\u044f\u049b\u0442\u0430\u043b\u0434\u044b",
+ "ScheduledTaskFailed": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0430\u044f\u049b\u0442\u0430\u043b\u0434\u044b",
+ "PluginInstalledWithName": "{0} \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b",
+ "PluginUpdatedWithName": "{0} \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
+ "PluginUninstalledWithName": "{0} \u0436\u043e\u0439\u044b\u043b\u0434\u044b",
+ "ScheduledTaskFailedWithName": "{0} \u0441\u04d9\u0442\u0441\u0456\u0437 \u0431\u043e\u043b\u0434\u044b",
+ "ItemAddedWithName": "{0} (\u0442\u0430\u0441\u0443\u0448\u044b\u0445\u0430\u043d\u0430\u0493\u0430 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456)",
+ "ItemRemovedWithName": "{0} (\u0442\u0430\u0441\u0443\u0448\u044b\u0445\u0430\u043d\u0430\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b)",
+ "DeviceOnlineWithName": "{0} \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d",
+ "UserOnlineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d",
+ "DeviceOfflineWithName": "{0} \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d",
+ "UserOfflineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d",
+ "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 {0} \u04af\u0448\u0456\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0434\u044b",
+ "SubtitleDownloadFailureForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 {0} \u04af\u0448\u0456\u043d \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u044b\u043d\u0443\u044b \u0441\u04d9\u0442\u0441\u0456\u0437 \u0431\u043e\u043b\u0434\u044b",
+ "LabelRunningTimeValue": "\u0406\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u0443\u0430\u049b\u044b\u0442\u044b: {0}",
+ "LabelIpAddressValue": "IP \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b: {0}",
+ "UserConfigurationUpdatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0441\u044b {0} \u04af\u0448\u0456\u043d \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
+ "UserCreatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d",
+ "UserPasswordChangedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u04af\u0448\u0456\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0434\u0456",
+ "UserDeletedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u043e\u0439\u044b\u043b\u0493\u0430\u043d",
+ "MessageServerConfigurationUpdated": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0441\u044b \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
+ "MessageNamedServerConfigurationUpdatedWithValue": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0441\u044b\u043d\u044b\u04a3 {0} \u0431\u04e9\u043b\u0456\u043c\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
+ "MessageApplicationUpdated": "Media Browser Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b",
+ "AuthenticationSucceededWithUserName": "{0} \u0442\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b\u0493\u044b \u0441\u04d9\u0442\u0442\u0456 \u0440\u0430\u0441\u0442\u0430\u043b\u0434\u044b",
+ "FailedLoginAttemptWithUserName": "{0} \u0430\u0440\u049b\u044b\u043b\u044b \u043a\u0456\u0440\u0443 \u04d9\u0440\u0435\u043a\u0435\u0442\u0456 \u0441\u04d9\u0442\u0441\u0456\u0437",
+ "UserStartedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b \u0431\u0430\u0441\u0442\u0430\u043b\u0434\u044b",
+ "UserStoppedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b \u0442\u043e\u049b\u0442\u0430\u043b\u0434\u044b",
+ "AppDeviceValues": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430: {0}, \u0416\u0430\u0431\u0434\u044b\u049b: {1}",
+ "ProviderValue": "\u0416\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456: {0}",
+ "LabelChannelDownloadSizeLimit": "\u0416\u04af\u043a\u0442\u0435\u043c\u0435 \u04e9\u043b\u0448\u0435\u043c\u0456\u043d\u0456\u04a3 \u0448\u0435\u0433\u0456 (GB)",
+ "LabelChannelDownloadSizeLimitHelp": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440\u0434\u044b \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443 \u049b\u0430\u043b\u0442\u0430\u0441\u044b\u043d\u044b\u04a3 \u04e9\u043b\u0448\u0435\u043c\u0456\u043d \u0448\u0435\u043a\u0442\u0435\u0439\u0434\u0456"
} \ 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 9db84f032..2324e6fe6 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ko.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ko.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 1685edf96..4ab79f420 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ms.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ms.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 c8dd0cb08..9a3535791 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/nb.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/nb.json
@@ -627,12 +627,12 @@
"TabNowPlaying": "Spilles Av",
"TabNavigation": "Navigering",
"TabControls": "Kontrollerer",
- "ButtonFullscreen": "Veksle fullskjerm",
+ "ButtonFullscreen": "Toggle fullscreen",
"ButtonScenes": "Scener",
"ButtonSubtitles": "Undertekster",
- "ButtonAudioTracks": "Lyd spor",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonAudioTracks": "Audio tracks",
+ "ButtonPreviousTrack": "Forrige Spor",
+ "ButtonNextTrack": "Neste Spor",
"ButtonStop": "Stopp",
"ButtonPause": "Pause",
"LabelGroupMoviesIntoCollections": "Grupper filmer inni samlinger",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Behandler",
"HeaderPreferences": "Preferanser",
"MessageLoadingChannels": "Laster kanal innhold...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marker Som Lest",
"OptionDefaultSort": "Standard",
"OptionCommunityMostWatchedSort": "Mest Sett",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 c1055c77f..c98fb435c 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/nl.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/nl.json
@@ -523,7 +523,7 @@
"HeaderHelpImproveMediaBrowser": "Help Media Browser te verbeteren",
"HeaderRunningTasks": "Actieve taken",
"HeaderActiveDevices": "Actieve apparaten",
- "HeaderPendingInstallations": "In afwachting van Installaties",
+ "HeaderPendingInstallations": "In afwachting van installaties",
"HeaerServerInformation": "Server Informatie",
"ButtonRestartNow": "Nu opnieuw opstarten",
"ButtonRestart": "Herstart",
@@ -627,12 +627,12 @@
"TabNowPlaying": "Wordt nu afgespeeld",
"TabNavigation": "Navigatie",
"TabControls": "Besturing",
- "ButtonFullscreen": "Schakelen tussen volledig scherm ",
+ "ButtonFullscreen": "Volledig scherm in-\/uitschakelen",
"ButtonScenes": "Scenes",
"ButtonSubtitles": "Ondertitels",
"ButtonAudioTracks": "Audio tracks",
- "ButtonPreviousTrack": "Vorige track",
- "ButtonNextTrack": "Volgende track",
+ "ButtonPreviousTrack": "Vorig nummer",
+ "ButtonNextTrack": "Volgend nummer",
"ButtonStop": "Stop",
"ButtonPause": "Pauze",
"LabelGroupMoviesIntoCollections": "Groepeer films in verzamelingen",
@@ -693,8 +693,8 @@
"LabelMaxBitrateHelp": "Geef een max. bitrate in bandbreedte beperkte omgevingen, of als het apparaat zijn eigen limiet heeft.",
"LabelMaxStreamingBitrate": "Maximale streaming bitrate:",
"LabelMaxStreamingBitrateHelp": "Geef een maximale bitrate voor streaming op.",
- "LabelMaxStaticBitrate": "Maxmimale sync bitrate:",
- "LabelMaxStaticBitrateHelp": "Geef een maximale bitrate voor sync in hoge kwaliteit op.",
+ "LabelMaxStaticBitrate": "Maximale Synchronisatie bitrate:",
+ "LabelMaxStaticBitrateHelp": "Geef een maximale bitrate op voor synchroniseren in hoge kwaliteit.",
"OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "Indien ingeschakeld, zal deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegerd.",
"LabelFriendlyName": "Aangepaste naam",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Voorkeuren",
"MessageLoadingChannels": "Laden kanaal inhoud ...",
+ "MessageLoadingContent": "Inhoud wordt geladen ...",
"ButtonMarkRead": "Markeren als gelezen",
"OptionDefaultSort": "Standaard",
"OptionCommunityMostWatchedSort": "Meest bekeken",
@@ -891,18 +892,18 @@
"TabUsers": "Gebruikers",
"HeaderFeatures": "Toevoegingen",
"HeaderAdvanced": "Geavanceerd",
- "ButtonSync": "Sync",
+ "ButtonSync": "Synchronisatie",
"TabScheduledTasks": "Geplande taken",
"HeaderChapters": "Hoofdstukken",
"HeaderResumeSettings": "Instellingen voor Hervatten",
- "TabSync": "Sync",
+ "TabSync": "Synchronisatie",
"TitleUsers": "Gebruikers",
"LabelProtocol": "Protokol:",
"OptionProtocolHttp": "Http",
"OptionProtocolHls": "Http Live Streaming",
"LabelContext": "Context:",
"OptionContextStreaming": "Streaming",
- "OptionContextStatic": "Sync",
+ "OptionContextStatic": "Synchronisatie",
"ButtonAddToPlaylist": "Toevoegen aan afspeellijst",
"TabPlaylists": "Afspeellijst",
"ButtonClose": "Sluiten",
@@ -960,12 +961,12 @@
"ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek",
"ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek",
"DeviceOnlineWithName": "{0} is verbonden",
- "UserOnlineFromDevice": "{0} is online van {1}",
- "DeviceOfflineWithName": "{0} is afgebroken",
- "UserOfflineFromDevice": "{0} is afgebroken van {1}",
+ "UserOnlineFromDevice": "{0} is aangemeld met {1}",
+ "DeviceOfflineWithName": "{0} is losgekoppeld",
+ "UserOfflineFromDevice": "{0} is losgekoppeld bij {1}",
"SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload",
"SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt",
- "LabelRunningTimeValue": "Speelduur: {0}",
+ "LabelRunningTimeValue": "Looptijd: {0}",
"LabelIpAddressValue": "IP adres: {0}",
"UserConfigurationUpdatedWithName": "Gebruikersinstellingen voor {0} zijn bijgewerkte",
"UserCreatedWithName": "Gebruiker {0} is aangemaakt",
@@ -974,10 +975,12 @@
"MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt",
"MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt",
"MessageApplicationUpdated": "Media Browser Server is bijgewerkt",
- "AuthenticationSucceededWithUserName": "{0} is succesvol geauthenticeerd",
+ "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
"FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}",
"UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart",
"UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt",
"AppDeviceValues": "App: {0}, Apparaat: {1}",
- "ProviderValue": "Aanbieder: {0}"
+ "ProviderValue": "Aanbieder: {0}",
+ "LabelChannelDownloadSizeLimit": "Downloadlimiet (GB): ",
+ "LabelChannelDownloadSizeLimitHelp": "Beperk de grootte van de kanaal download map"
} \ 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 49081ab60..568d26fd2 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pl.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pl.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 445e86e7a..6ccd60090 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_BR.json
@@ -627,12 +627,12 @@
"TabNowPlaying": "Reproduzindo Agora",
"TabNavigation": "Navega\u00e7\u00e3o",
"TabControls": "Controles",
- "ButtonFullscreen": "Alternar para tela cheia",
+ "ButtonFullscreen": "Alternar tela cheia",
"ButtonScenes": "Cenas",
"ButtonSubtitles": "Legendas",
"ButtonAudioTracks": "Faixas de \u00e1udio",
- "ButtonPreviousTrack": "Faixa anterior",
- "ButtonNextTrack": "Pr\u00f3xima faixa",
+ "ButtonPreviousTrack": "Faixa Anterior",
+ "ButtonNextTrack": "Pr\u00f3xima Faixa",
"ButtonStop": "Parar",
"ButtonPause": "Pausar",
"LabelGroupMoviesIntoCollections": "Agrupar filmes nas cole\u00e7\u00f5es",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Gerenciador de Metadados",
"HeaderPreferences": "Prefer\u00eancias",
"MessageLoadingChannels": "Carregando conte\u00fado do canal...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marcar com lido",
"OptionDefaultSort": "Padr\u00e3o",
"OptionCommunityMostWatchedSort": "Mais Assistidos",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} come\u00e7ou a executar {1}",
"UserStoppedPlayingItemWithValues": "{0} parou de executar {1}",
"AppDeviceValues": "App: {0}, Dispositivo: {1}",
- "ProviderValue": "Provedor: {0}"
+ "ProviderValue": "Provedor: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 84a4e2ae7..31cb033a8 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/pt_PT.json
@@ -480,10 +480,10 @@
"HeaderProgram": "Programa",
"HeaderClients": "Clientes",
"LabelCompleted": "Terminado",
- "LabelFailed": "Failed",
+ "LabelFailed": "Falhou",
"LabelSkipped": "Ignorado",
"HeaderEpisodeOrganization": "Organiza\u00e7\u00e3o dos Epis\u00f3dios",
- "LabelSeries": "Series:",
+ "LabelSeries": "S\u00e9rie:",
"LabelSeasonNumber": "N\u00famero da temporada",
"LabelEpisodeNumber": "N\u00famero do epis\u00f3dio",
"LabelEndingEpisodeNumber": "N\u00famero do epis\u00f3dio final",
@@ -631,8 +631,8 @@
"ButtonScenes": "Cenas",
"ButtonSubtitles": "Legendas",
"ButtonAudioTracks": "Faixas de \u00e1udio",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonPreviousTrack": "Faixa Anterior",
+ "ButtonNextTrack": "Pr\u00f3xima Faixa",
"ButtonStop": "Parar",
"ButtonPause": "Pausar",
"LabelGroupMoviesIntoCollections": "Group movies into collections",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 455492feb..da8b6364d 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/ru.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/ru.json
@@ -326,7 +326,7 @@
"ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c",
"ButtonRecord": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c",
"ButtonDelete": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c",
- "ButtonRemove": "\u0423\u0431\u0440\u0430\u0442\u044c",
+ "ButtonRemove": "\u0418\u0437\u044a\u044f\u0442\u044c",
"OptionRecordSeries": "\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u0438",
"HeaderDetails": "\u0414\u0435\u0442\u0430\u043b\u0438",
"TitleLiveTV": "\u0422\u0412 \u044d\u0444\u0438\u0440",
@@ -426,7 +426,7 @@
"OptionEnableDebugTranscodingLoggingHelp": "\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0451\u043c\u0430, \u0430 \u044d\u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0438\u043b\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u043e\u043b\u0430\u0434\u043e\u043a.",
"OptionUpscaling": "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u043f\u043e\u0432\u044b\u0448\u0430\u044e\u0448\u0438\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c",
"OptionUpscalingHelp": "\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0432\u0438\u0434\u0435\u043e, \u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440.",
- "EditCollectionItemsHelp": "\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0438\u043b\u0438 \u0443\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u043b\u044e\u0431\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b, \u0441\u0435\u0440\u0438\u0430\u043b\u044b, \u0430\u043b\u044c\u0431\u043e\u043c\u044b, \u043a\u043d\u0438\u0433\u0438 \u0438\u043b\u0438 \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.",
+ "EditCollectionItemsHelp": "\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u0438\u0437\u044b\u043c\u0430\u044e\u0442\u0441\u044f \u043b\u044e\u0431\u044b\u0435 \u0444\u0438\u043b\u044c\u043c\u044b, \u0441\u0435\u0440\u0438\u0430\u043b\u044b, \u0430\u043b\u044c\u0431\u043e\u043c\u044b, \u043a\u043d\u0438\u0433\u0438 \u0438\u043b\u0438 \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.",
"HeaderAddTitles": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f",
"LabelEnableDlnaPlayTo": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e DLNA \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u041d\u0430",
"LabelEnableDlnaPlayToHelp": "Media Browser \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0442\u0438 \u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438.",
@@ -480,7 +480,7 @@
"HeaderProgram": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430",
"HeaderClients": "\u041a\u043b\u0438\u0435\u043d\u0442\u044b",
"LabelCompleted": "\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e",
- "LabelFailed": "\u041d\u0435\u0443\u0434\u0430\u0447\u0430",
+ "LabelFailed": "\u041d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e",
"LabelSkipped": "\u041e\u0442\u043b\u043e\u0436\u0435\u043d\u043e",
"HeaderEpisodeOrganization": "\u0420\u0435\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u0430",
"LabelSeries": "\u0421\u0435\u0440\u0438\u0430\u043b:",
@@ -630,7 +630,7 @@
"ButtonFullscreen": "\u041f\u043e\u043b\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d",
"ButtonScenes": "\u0421\u0446\u0435\u043d\u044b",
"ButtonSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b",
- "ButtonAudioTracks": "\u0410\u0443\u0434\u0438\u043e \u0434\u043e\u0440\u043e\u0436\u043a\u0438",
+ "ButtonAudioTracks": "\u0410\u0443\u0434\u0438\u043e\u0434\u043e\u0440\u043e\u0436\u043a\u0438",
"ButtonPreviousTrack": "\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430",
"ButtonNextTrack": "\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430",
"ButtonStop": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c",
@@ -690,7 +690,7 @@
"LabelIdentificationFieldHelp": "\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0435\u0437 \u0443\u0447\u0451\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043b\u0438\u0431\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435.",
"HeaderProfileServerSettingsHelp": "\u042d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442, \u043a\u0430\u043a Media Browser \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435.",
"LabelMaxBitrate": "\u041c\u0430\u043a\u0441. \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c:",
- "LabelMaxBitrateHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0430\u0445 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u043b\u0438\u0431\u043e \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0451 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.",
+ "LabelMaxBitrateHelp": "\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0430\u0445 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e, \u043b\u0438\u0431\u043e, \u0435\u0441\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 - \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435.",
"LabelMaxStreamingBitrate": "\u041c\u0430\u043a\u0441. \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c:",
"LabelMaxStreamingBitrateHelp": "\u0423\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435.",
"LabelMaxStaticBitrate": "\u041c\u0430\u043a\u0441. \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438:",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "\u0414\u0438\u0441\u043f\u0435\u0442\u0447\u0435\u0440 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445",
"HeaderPreferences": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",
"MessageLoadingChannels": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u0430...",
+ "MessageLoadingContent": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435...",
"ButtonMarkRead": "\u041e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043a\u0430\u043a \u043f\u0440\u043e\u0447\u0442\u0451\u043d\u043d\u043e\u0435",
"OptionDefaultSort": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f",
"OptionCommunityMostWatchedSort": "\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0435",
@@ -886,7 +887,7 @@
"TabSort": "\u041f\u043e\u0440\u044f\u0434\u043e\u043a",
"TabFilter": "\u0424\u0438\u043b\u044c\u0442\u0440\u044b",
"ButtonView": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c",
- "LabelPageSize": "\u041c\u0430\u043a\u0441. \u0447\u0438\u0441\u043b\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432:",
+ "LabelPageSize": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432:",
"LabelView": "\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435:",
"TabUsers": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438",
"HeaderFeatures": "\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b",
@@ -904,7 +905,7 @@
"OptionContextStreaming": "\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430",
"OptionContextStatic": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f",
"ButtonAddToPlaylist": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0441\u043f\u0440-\u0438\u044f",
- "TabPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f",
+ "TabPlaylists": "\u0421\u043f\u0438\u0441\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f",
"ButtonClose": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c",
"LabelAllLanguages": "\u0412\u0441\u0435 \u044f\u0437\u044b\u043a\u0438",
"HeaderBrowseOnlineImages": "\u041e\u0431\u0437\u043e\u0440 \u0440\u0438\u0441\u0443\u043d\u043a\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438",
@@ -948,36 +949,38 @@
"OptionReportAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b",
"OptionReportAdultVideos": "\u0412\u0437\u0440\u043e\u0441\u043b\u043e\u0435 \u0432\u0438\u0434\u0435\u043e",
"ButtonMore": "\u0415\u0449\u0451",
- "HeaderActivity": "Activity",
- "ScheduledTaskStartedWithName": "{0} started",
- "ScheduledTaskCancelledWithName": "{0} was cancelled",
- "ScheduledTaskCompletedWithName": "{0} completed",
- "ScheduledTaskFailed": "Scheduled task completed",
- "PluginInstalledWithName": "{0} was installed",
- "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",
- "DeviceOnlineWithName": "{0} is connected",
- "UserOnlineFromDevice": "{0} is online from {1}",
- "DeviceOfflineWithName": "{0} has disconnected",
- "UserOfflineFromDevice": "{0} has disconnected from {1}",
- "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}",
- "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}",
- "LabelRunningTimeValue": "Running time: {0}",
- "LabelIpAddressValue": "Ip address: {0}",
- "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}",
- "UserCreatedWithName": "User {0} has been created",
- "UserPasswordChangedWithName": "Password has been changed for user {0}",
- "UserDeletedWithName": "User {0} has been deleted",
- "MessageServerConfigurationUpdated": "Server configuration has been updated",
- "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated",
- "MessageApplicationUpdated": "Media Browser Server has been updated",
- "AuthenticationSucceededWithUserName": "{0} successfully authenticated",
- "FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
- "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
- "AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "HeaderActivity": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f",
+ "ScheduledTaskStartedWithName": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e",
+ "ScheduledTaskCancelledWithName": "{0} - \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e",
+ "ScheduledTaskCompletedWithName": "{0} - \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e",
+ "ScheduledTaskFailed": "\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u043e",
+ "PluginInstalledWithName": "{0} - \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
+ "PluginUpdatedWithName": "{0} - \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e",
+ "PluginUninstalledWithName": "{0} - \u0443\u0434\u0430\u043b\u0435\u043d\u043e",
+ "ScheduledTaskFailedWithName": "{0} - \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e",
+ "ItemAddedWithName": "{0} (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443)",
+ "ItemRemovedWithName": "{0} ( \u0438\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438)",
+ "DeviceOnlineWithName": "{0} - \u0432 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438",
+ "UserOnlineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 {1}",
+ "DeviceOfflineWithName": "{0} - \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435",
+ "UserOfflineFromDevice": "{0} - \u043f\u0440\u0435\u0440\u0432\u0430\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 {1}",
+ "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u0434\u043b\u044f {0}",
+ "SubtitleDownloadFailureForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0434\u043b\u044f {0} - \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",
+ "LabelRunningTimeValue": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: {0}",
+ "LabelIpAddressValue": "IP \u0430\u0434\u0440\u0435\u0441: {0}",
+ "UserConfigurationUpdatedWithName": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f {0}",
+ "UserCreatedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d",
+ "UserPasswordChangedWithName": "\u041f\u0430\u0440\u043e\u043b\u044c \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f {0}",
+ "UserDeletedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d",
+ "MessageServerConfigurationUpdated": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430",
+ "MessageNamedServerConfigurationUpdatedWithValue": "\u0420\u0430\u0437\u0434\u0435\u043b {0} \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d",
+ "MessageApplicationUpdated": "Media Browser Server \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d",
+ "AuthenticationSucceededWithUserName": "{0} \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d",
+ "FailedLoginAttemptWithUserName": "\u041d\u0435\u0443\u0434\u0430\u0447\u043d\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 {0}",
+ "UserStartedPlayingItemWithValues": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 {1}",
+ "UserStoppedPlayingItemWithValues": "{0} - \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 {1}",
+ "AppDeviceValues": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435: {0}, \u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e: {1}",
+ "ProviderValue": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a: {0}",
+ "LabelChannelDownloadSizeLimit": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043f\u043a\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u0430\u043d\u0430\u043b\u043e\u0432"
} \ 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 973089795..d09548bab 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -703,6 +703,10 @@
"LabelMaxStreamingBitrateHelp": "Specify a max bitrate when streaming.",
"LabelMaxStaticBitrate": "Max sync bitrate:",
"LabelMaxStaticBitrateHelp": "Specify a max bitrate when syncing content at high quality.",
+ "LabelMusicStaticBitrate": "Music sync bitrate:",
+ "LabelMusicStaticBitrateHelp": "Specify a max bitrate when syncing music",
+ "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:",
+ "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music",
"OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.",
"LabelFriendlyName": "Friendly name",
@@ -802,6 +806,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -994,8 +999,20 @@
"MessageApplicationUpdated": "Media Browser Server has been updated",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}",
- "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
+ "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder",
+ "HeaderRecentActivity": "Recent Activity",
+ "HeaderPeople": "People",
+ "HeaderDownloadPeopleMetadataFor": "Download biography and images for:",
+ "OptionComposers": "Composers",
+ "OptionOthers": "Others",
+ "HeaderDownloadPeopleMetadataForHelp": "Enabling additional options will provide more on-screen information but will result in slower library scans.",
+ "ViewTypeFolders": "Folders",
+ "LabelDisplayFoldersView": "Display a folders view to show plain media folders",
+ "ViewTypeLiveTvRecordingGroups": "Recordings",
+ "ViewTypeLiveTvChannels": "Channels"
}
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/sv.json b/MediaBrowser.Server.Implementations/Localization/Server/sv.json
index 6b46d9c2d..e06a5d94a 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/sv.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/sv.json
@@ -480,10 +480,10 @@
"HeaderProgram": "Program",
"HeaderClients": "Klienter",
"LabelCompleted": "Klar",
- "LabelFailed": "Failed",
+ "LabelFailed": "Misslyckades",
"LabelSkipped": "Hoppades \u00f6ver",
"HeaderEpisodeOrganization": "Katalogisering av avsnitt",
- "LabelSeries": "Series:",
+ "LabelSeries": "Serie:",
"LabelSeasonNumber": "S\u00e4songsnummer:",
"LabelEpisodeNumber": "Avsnittsnummer:",
"LabelEndingEpisodeNumber": "Avslutande avsnittsnummer:",
@@ -631,8 +631,8 @@
"ButtonScenes": "Scener",
"ButtonSubtitles": "Undertexter",
"ButtonAudioTracks": "Ljudsp\u00e5r",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonPreviousTrack": "F\u00f6reg\u00e5ende sp\u00e5r",
+ "ButtonNextTrack": "N\u00e4sta sp\u00e5r",
"ButtonStop": "Stopp",
"ButtonPause": "Paus",
"LabelGroupMoviesIntoCollections": "Gruppera filmer i samlingsboxar",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadatahanteraren",
"HeaderPreferences": "Inst\u00e4llningar",
"MessageLoadingChannels": "H\u00e4mtar kanalinneh\u00e5ll...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Markera som l\u00e4st",
"OptionDefaultSort": "F\u00f6rval",
"OptionCommunityMostWatchedSort": "Oftast visade",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 8b29b4da8..98218bb77 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/tr.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/tr.json
@@ -631,8 +631,8 @@
"ButtonScenes": "Sahneler",
"ButtonSubtitles": "Altyaz\u0131lar",
"ButtonAudioTracks": "Audio tracks",
- "ButtonPreviousTrack": "Previous track",
- "ButtonNextTrack": "Next track",
+ "ButtonPreviousTrack": "\u00d6nceki Par\u00e7a",
+ "ButtonNextTrack": "Sonraki Par\u00e7a",
"ButtonStop": "Durdur",
"ButtonPause": "Duraklat",
"LabelGroupMoviesIntoCollections": "Group movies into collections",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 47ed8e035..ef9f681b5 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/vi.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/vi.json
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 723c792dc..c541c80bd 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/zh_TW.json
@@ -397,7 +397,7 @@
"HeaderCastCrew": "\u62cd\u651d\u4eba\u54e1\u53ca\u6f14\u54e1",
"HeaderAdditionalParts": "\u9644\u52a0\u90e8\u4efd",
"ButtonSplitVersionsApart": "Split Versions Apart",
- "ButtonPlayTrailer": "Trailer",
+ "ButtonPlayTrailer": "\u9810\u544a",
"LabelMissing": "\u7f3a\u5c11",
"LabelOffline": "\u96e2\u7dda",
"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.",
@@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...",
+ "MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched",
@@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {1}",
- "ProviderValue": "Provider: {0}"
+ "ProviderValue": "Provider: {0}",
+ "LabelChannelDownloadSizeLimit": "Download size limit (GB):",
+ "LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} \ 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 af9c7563b..3ff164443 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -93,7 +93,8 @@
<HintPath>..\ThirdParty\ServiceStack.Text\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="Mono.Posix" Condition=" '$(ConfigurationName)' == 'Release Mono' " />
- <Reference Include="websocket-sharp">
+ <Reference Include="websocket-sharp, Version=1.0.2.508, Culture=neutral, PublicKeyToken=5660b08a1845a91e, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
<HintPath>..\ThirdParty\WebsocketSharp\websocket-sharp.dll</HintPath>
</Reference>
</ItemGroup>
diff --git a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
index e7e53181c..3d0e36ead 100644
--- a/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
+++ b/MediaBrowser.Server.Implementations/Playlists/ManualPlaylistsFolder.cs
@@ -57,7 +57,7 @@ namespace MediaBrowser.Server.Implementations.Playlists
public BasePluginFolder GetFolder()
{
- var path = Path.Combine(_appPaths.CachePath, "playlists");
+ var path = Path.Combine(_appPaths.DataPath, "playlists");
Directory.CreateDirectory(path);
diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageEnhancer.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageEnhancer.cs
index 768d37264..6b3170e42 100644
--- a/MediaBrowser.Server.Implementations/Playlists/PlaylistImageEnhancer.cs
+++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistImageEnhancer.cs
@@ -76,17 +76,16 @@ namespace MediaBrowser.Server.Implementations.Playlists
})
.Where(i => i != null)
.DistinctBy(i => i.Id)
- .OrderBy(i => Guid.NewGuid())
- .Take(4)
- .OrderBy(i => i.Name)
.ToList();
- if (items.Count == 0)
- {
- return new List<BaseItem>();
- }
+ // Rotate the images no more than once per day
+ var random = new Random(DateTime.Now.DayOfYear).Next();
- return items;
+ return items
+ .OrderBy(i => random - items.IndexOf(i))
+ .Take(4)
+ .OrderBy(i => i.Name)
+ .ToList();
}
private const string Version = "3";
diff --git a/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs b/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs
index 43a960ea2..cd20ad74d 100644
--- a/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs
+++ b/MediaBrowser.Server.Implementations/Security/AuthenticationRepository.cs
@@ -157,12 +157,6 @@ namespace MediaBrowser.Server.Implementations.Security
var startIndex = query.StartIndex ?? 0;
- if (startIndex > 0)
- {
- whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM AccessTokens ORDER BY DateCreated LIMIT {0})",
- startIndex.ToString(_usCulture)));
- }
-
if (!string.IsNullOrWhiteSpace(query.AccessToken))
{
whereClauses.Add("AccessToken=@AccessToken");
@@ -187,11 +181,27 @@ namespace MediaBrowser.Server.Implementations.Security
cmd.Parameters.Add(cmd, "@IsActive", DbType.Boolean).Value = query.IsActive.Value;
}
- if (whereClauses.Count > 0)
+ var whereTextWithoutPaging = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ if (startIndex > 0)
{
- cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray());
+ var pagingWhereText = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM AccessTokens {0} ORDER BY DateCreated LIMIT {1})",
+ pagingWhereText,
+ startIndex.ToString(_usCulture)));
}
+ var whereText = whereClauses.Count == 0 ?
+ string.Empty :
+ " where " + string.Join(" AND ", whereClauses.ToArray());
+
+ cmd.CommandText += whereText;
+
cmd.CommandText += " ORDER BY DateCreated";
if (query.Limit.HasValue)
@@ -199,7 +209,7 @@ namespace MediaBrowser.Server.Implementations.Security
cmd.CommandText += " LIMIT " + query.Limit.Value.ToString(_usCulture);
}
- cmd.CommandText += "; select count (Id) from AccessTokens";
+ cmd.CommandText += "; select count (Id) from AccessTokens" + whereTextWithoutPaging;
var list = new List<AuthenticationInfo>();
var count = 0;