update translations

This commit is contained in:
Luke Pulverenti 2014-08-14 09:24:30 -04:00
parent 02e25b4855
commit 9c5cceb4ec
124 changed files with 1569 additions and 534 deletions

View file

@ -3,6 +3,8 @@ using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Activity; using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using ServiceStack; using ServiceStack;
using System;
using System.Globalization;
namespace MediaBrowser.Api.System namespace MediaBrowser.Api.System
{ {
@ -22,6 +24,9 @@ namespace MediaBrowser.Api.System
/// <value>The limit.</value> /// <value>The limit.</value>
[ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")] [ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? Limit { get; set; } public int? Limit { get; set; }
[ApiMember(Name = "MinDate", Description = "Optional. The minimum date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
public string MinDate { get; set; }
} }
[Authenticated] [Authenticated]
@ -36,7 +41,11 @@ namespace MediaBrowser.Api.System
public object Get(GetActivityLogs request) public object Get(GetActivityLogs request)
{ {
var result = _activityManager.GetActivityLogEntries(request.StartIndex, request.Limit); DateTime? minDate = string.IsNullOrWhiteSpace(request.MinDate) ?
(DateTime?)null :
DateTime.Parse(request.MinDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
var result = _activityManager.GetActivityLogEntries(minDate, request.StartIndex, request.Limit);
return ToOptimizedResult(result); return ToOptimizedResult(result);
} }

View file

@ -318,11 +318,12 @@ namespace MediaBrowser.Api.UserLibrary
.OrderByDescending(i => i.DateCreated) .OrderByDescending(i => i.DateCreated)
.Where(i => i.LocationType != LocationType.Virtual); .Where(i => i.LocationType != LocationType.Virtual);
if (request.IsFolder.HasValue)
{ //if (request.IsFolder.HasValue)
var val = request.IsFolder.Value; //{
libraryItems = libraryItems.Where(f => f.IsFolder == val); //var val = request.IsFolder.Value;
} libraryItems = libraryItems.Where(f => f.IsFolder == false);
//}
if (!string.IsNullOrEmpty(request.IncludeItemTypes)) if (!string.IsNullOrEmpty(request.IncludeItemTypes))
{ {

View file

@ -12,6 +12,6 @@ namespace MediaBrowser.Controller.Activity
Task Create(ActivityLogEntry entry); Task Create(ActivityLogEntry entry);
QueryResult<ActivityLogEntry> GetActivityLogEntries(int? startIndex, int? limit); QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit);
} }
} }

View file

@ -1,5 +1,6 @@
using MediaBrowser.Model.Activity; using MediaBrowser.Model.Activity;
using MediaBrowser.Model.Querying; using MediaBrowser.Model.Querying;
using System;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace MediaBrowser.Controller.Activity namespace MediaBrowser.Controller.Activity
@ -8,6 +9,6 @@ namespace MediaBrowser.Controller.Activity
{ {
Task Create(ActivityLogEntry entry); Task Create(ActivityLogEntry entry);
QueryResult<ActivityLogEntry> GetActivityLogEntries(int? startIndex, int? limit); QueryResult<ActivityLogEntry> GetActivityLogEntries(DateTime? minDate, int? startIndex, int? limit);
} }
} }

View file

@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Channels; using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using System.Collections.Generic;
namespace MediaBrowser.Controller.Channels namespace MediaBrowser.Controller.Channels
{ {

View file

@ -2,6 +2,7 @@
using MediaBrowser.Common.IO; using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
@ -66,6 +67,15 @@ namespace MediaBrowser.Controller.Entities
/// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value> /// <value><c>true</c> if this instance is in mixed folder; otherwise, <c>false</c>.</value>
public bool IsInMixedFolder { get; set; } public bool IsInMixedFolder { get; set; }
[IgnoreDataMember]
public virtual bool SupportsRemoteImageDownloading
{
get
{
return true;
}
}
private string _name; private string _name;
/// <summary> /// <summary>
/// Gets or sets the name. /// Gets or sets the name.
@ -227,6 +237,7 @@ namespace MediaBrowser.Controller.Entities
public static IItemRepository ItemRepository { get; set; } public static IItemRepository ItemRepository { get; set; }
public static IFileSystem FileSystem { get; set; } public static IFileSystem FileSystem { get; set; }
public static IUserDataManager UserDataManager { get; set; } public static IUserDataManager UserDataManager { get; set; }
public static ILiveTvManager LiveTvManager { get; set; }
/// <summary> /// <summary>
/// Returns a <see cref="System.String" /> that represents this instance. /// Returns a <see cref="System.String" /> that represents this instance.

View file

@ -840,7 +840,7 @@ namespace MediaBrowser.Controller.Entities
if (includeLinkedChildren) if (includeLinkedChildren)
{ {
foreach (var child in GetLinkedChildren()) foreach (var child in GetLinkedChildren(user))
{ {
if (child.IsVisible(user)) if (child.IsVisible(user))
{ {
@ -924,6 +924,31 @@ namespace MediaBrowser.Controller.Entities
.Where(i => i != null); .Where(i => i != null);
} }
protected virtual bool FilterLinkedChildrenPerUser
{
get
{
return false;
}
}
public IEnumerable<BaseItem> GetLinkedChildren(User user)
{
if (!FilterLinkedChildrenPerUser)
{
return GetLinkedChildren();
}
var locations = user.RootFolder
.Children
.OfType<CollectionFolder>()
.SelectMany(i => i.PhysicalLocations)
.ToList();
return LinkedChildren.Where(i => string.IsNullOrWhiteSpace(i.Path) || locations.Any(l => FileSystem.ContainsSubPath(l, i.Path)))
.Select(GetLinkedChild)
.Where(i => i != null);
}
/// <summary> /// <summary>
/// Gets the linked children. /// Gets the linked children.

View file

@ -154,6 +154,12 @@ namespace MediaBrowser.Controller.Entities
/// </summary> /// </summary>
/// <value><c>true</c> if this instance is locked; otherwise, <c>false</c>.</value> /// <value><c>true</c> if this instance is locked; otherwise, <c>false</c>.</value>
bool IsLocked { get; } bool IsLocked { get; }
/// <summary>
/// Gets a value indicating whether [supports remote image downloading].
/// </summary>
/// <value><c>true</c> if [supports remote image downloading]; otherwise, <c>false</c>.</value>
bool SupportsRemoteImageDownloading { get; }
} }
public static class HasImagesExtensions public static class HasImagesExtensions

View file

@ -9,6 +9,12 @@ namespace MediaBrowser.Controller.Entities
{ {
public interface IHasMediaSources public interface IHasMediaSources
{ {
/// <summary>
/// Gets the identifier.
/// </summary>
/// <value>The identifier.</value>
Guid Id { get; }
/// <summary> /// <summary>
/// Gets the media sources. /// Gets the media sources.
/// </summary> /// </summary>

View file

@ -19,7 +19,6 @@ namespace MediaBrowser.Controller.Entities
/// <summary> /// <summary>
/// Serves as a cache /// Serves as a cache
/// </summary> /// </summary>
[IgnoreDataMember]
public Guid? ItemId { get; set; } public Guid? ItemId { get; set; }
public static LinkedChild Create(BaseItem item) public static LinkedChild Create(BaseItem item)

View file

@ -1,5 +1,6 @@
using System.Runtime.Serialization; using System.Runtime.Serialization;
using MediaBrowser.Common.Progress; using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
@ -26,6 +27,14 @@ namespace MediaBrowser.Controller.Entities.Movies
Keywords = new List<string>(); Keywords = new List<string>();
} }
protected override bool FilterLinkedChildrenPerUser
{
get
{
return true;
}
}
public List<Guid> LocalTrailerIds { get; set; } public List<Guid> LocalTrailerIds { get; set; }
/// <summary> /// <summary>
@ -72,6 +81,8 @@ namespace MediaBrowser.Controller.Entities.Movies
{ {
var children = base.GetChildren(user, includeLinkedChildren); var children = base.GetChildren(user, includeLinkedChildren);
children = Playlist.FilterInaccessibleItems(children, user);
if (string.Equals(DisplayOrder, ItemSortBy.SortName, StringComparison.OrdinalIgnoreCase)) if (string.Equals(DisplayOrder, ItemSortBy.SortName, StringComparison.OrdinalIgnoreCase))
{ {
// Sort by name // Sort by name
@ -83,11 +94,17 @@ namespace MediaBrowser.Controller.Entities.Movies
// Sort by release date // Sort by release date
return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending); return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending);
} }
// Default sorting // Default sorting
return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending); return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending);
} }
public override IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true)
{
var children = base.GetRecursiveChildren(user, includeLinkedChildren);
return Playlist.FilterInaccessibleItems(children, user);
}
public BoxSetInfo GetLookupInfo() public BoxSetInfo GetLookupInfo()
{ {
return GetItemLookupInfo<BoxSetInfo>(); return GetItemLookupInfo<BoxSetInfo>();

View file

@ -188,6 +188,20 @@ namespace MediaBrowser.Controller.Entities.TV
return false; return false;
} }
[IgnoreDataMember]
public override bool SupportsRemoteImageDownloading
{
get
{
if (IsMissingEpisode)
{
return false;
}
return true;
}
}
[IgnoreDataMember] [IgnoreDataMember]
public bool IsMissingEpisode public bool IsMissingEpisode
{ {

View file

@ -1,15 +1,20 @@
using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
using MediaBrowser.Model.LiveTv;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Entities namespace MediaBrowser.Controller.Entities
{ {
public class UserView : Folder public class UserView : Folder
{ {
public string ViewType { get; set; } public string ViewType { get; set; }
public static IUserViewManager UserViewManager { get; set; }
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{ {
@ -17,6 +22,23 @@ namespace MediaBrowser.Controller.Entities
switch (ViewType) switch (ViewType)
{ {
case CollectionType.LiveTvChannels:
return LiveTvManager.GetInternalChannels(new LiveTvChannelQuery
{
UserId = user.Id.ToString("N")
}, CancellationToken.None).Result.Items;
case CollectionType.LiveTvRecordingGroups:
return LiveTvManager.GetInternalRecordings(new RecordingQuery
{
UserId = user.Id.ToString("N"),
Status = RecordingStatus.Completed
}, CancellationToken.None).Result.Items;
case CollectionType.LiveTv:
return GetLiveTvFolders(user).Result;
case CollectionType.Folders:
return user.RootFolder.GetChildren(user, includeLinkedChildren);
case CollectionType.Games: case CollectionType.Games:
return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren))
.OfType<GameSystem>(); .OfType<GameSystem>();
@ -34,6 +56,16 @@ namespace MediaBrowser.Controller.Entities
} }
} }
private async Task<IEnumerable<BaseItem>> GetLiveTvFolders(User user)
{
var list = new List<BaseItem>();
list.Add(await UserViewManager.GetUserView(CollectionType.LiveTvChannels, user, string.Empty, CancellationToken.None).ConfigureAwait(false));
list.Add(await UserViewManager.GetUserView(CollectionType.LiveTvRecordingGroups, user, string.Empty, CancellationToken.None).ConfigureAwait(false));
return list;
}
protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user) protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
{ {
return GetChildren(user, false); return GetChildren(user, false);

View file

@ -9,5 +9,7 @@ namespace MediaBrowser.Controller.Library
public interface IUserViewManager public interface IUserViewManager
{ {
Task<IEnumerable<Folder>> GetUserViews(UserViewQuery query, CancellationToken cancellationToken); Task<IEnumerable<Folder>> GetUserViews(UserViewQuery query, CancellationToken cancellationToken);
Task<UserView> GetUserView(string type, User user, string sortName, CancellationToken cancellationToken);
} }
} }

View file

@ -280,5 +280,22 @@ namespace MediaBrowser.Controller.LiveTv
/// </summary> /// </summary>
/// <returns>IEnumerable{User}.</returns> /// <returns>IEnumerable{User}.</returns>
IEnumerable<User> GetEnabledUsers(); IEnumerable<User> GetEnabledUsers();
/// <summary>
/// Gets the internal channels.
/// </summary>
/// <param name="query">The query.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;QueryResult&lt;LiveTvChannel&gt;&gt;.</returns>
Task<QueryResult<LiveTvChannel>> GetInternalChannels(LiveTvChannelQuery query,
CancellationToken cancellationToken);
/// <summary>
/// Gets the internal recordings.
/// </summary>
/// <param name="query">The query.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;QueryResult&lt;BaseItem&gt;&gt;.</returns>
Task<QueryResult<BaseItem>> GetInternalRecordings(RecordingQuery query, CancellationToken cancellationToken);
} }
} }

View file

@ -0,0 +1,22 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Configuration;
namespace MediaBrowser.Controller.LiveTv
{
public class RecordingGroup : Folder
{
protected override bool GetBlockUnratedValue(UserConfiguration config)
{
// Don't block.
return false;
}
public override bool SupportsLocalMetadata
{
get
{
return false;
}
}
}
}

View file

@ -168,6 +168,7 @@
<Compile Include="Library\LibraryManagerExtensions.cs" /> <Compile Include="Library\LibraryManagerExtensions.cs" />
<Compile Include="Library\PlaybackStopEventArgs.cs" /> <Compile Include="Library\PlaybackStopEventArgs.cs" />
<Compile Include="Library\UserDataSaveEventArgs.cs" /> <Compile Include="Library\UserDataSaveEventArgs.cs" />
<Compile Include="LiveTv\RecordingGroup.cs" />
<Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" /> <Compile Include="LiveTv\RecordingStatusChangedEventArgs.cs" />
<Compile Include="LiveTv\ILiveTvRecording.cs" /> <Compile Include="LiveTv\ILiveTvRecording.cs" />
<Compile Include="LiveTv\LiveStreamInfo.cs" /> <Compile Include="LiveTv\LiveStreamInfo.cs" />

View file

@ -12,6 +12,14 @@ namespace MediaBrowser.Controller.Playlists
{ {
public string OwnerUserId { get; set; } public string OwnerUserId { get; set; }
protected override bool FilterLinkedChildrenPerUser
{
get
{
return true;
}
}
public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{ {
return GetPlayableItems(user); return GetPlayableItems(user);
@ -34,7 +42,12 @@ namespace MediaBrowser.Controller.Playlists
public static IEnumerable<BaseItem> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user) public static IEnumerable<BaseItem> GetPlaylistItems(string playlistMediaType, IEnumerable<BaseItem> inputItems, User user)
{ {
return inputItems.SelectMany(i => if (user != null)
{
inputItems = inputItems.Where(i => i.IsVisible(user));
}
inputItems = inputItems.SelectMany(i =>
{ {
var folder = i as Folder; var folder = i as Folder;
@ -58,6 +71,31 @@ namespace MediaBrowser.Controller.Playlists
return new[] { i }; return new[] { i };
}).Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase)); }).Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase));
return FilterInaccessibleItems(inputItems, user);
}
public static IEnumerable<BaseItem> FilterInaccessibleItems(IEnumerable<BaseItem> items, User user)
{
return items;
//var locations = user.RootFolder.Children.OfType<CollectionFolder>().SelectMany(i => i.PhysicalLocations).ToList();
//return items.Where(i =>
//{
// var parent = i.Parent;
// while (parent != null)
// {
// parent = parent.Parent;
// if (parent != null && parent.Parent is AggregateFolder)
// {
// break;
// }
// }
// return parent == null || locations.Contains(parent.Path, StringComparer.OrdinalIgnoreCase);
//});
} }
[IgnoreDataMember] [IgnoreDataMember]

View file

@ -442,10 +442,6 @@ namespace MediaBrowser.Dlna.ContentDirectory
private async Task<IEnumerable<BaseItem>> GetUserViewChildren(UserView folder, User user, SortCriteria sort) private async Task<IEnumerable<BaseItem>> GetUserViewChildren(UserView folder, User user, SortCriteria sort)
{ {
if (string.Equals(folder.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
{
return new List<BaseItem>();
}
if (string.Equals(folder.ViewType, CollectionType.Channels, StringComparison.OrdinalIgnoreCase)) if (string.Equals(folder.ViewType, CollectionType.Channels, StringComparison.OrdinalIgnoreCase))
{ {
var result = await _channelManager.GetChannelsInternal(new ChannelQuery() var result = await _channelManager.GetChannelsInternal(new ChannelQuery()
@ -468,6 +464,22 @@ namespace MediaBrowser.Dlna.ContentDirectory
{ {
return SortItems(folder.GetChildren(user, true).OfType<MusicArtist>(), user, sort); return SortItems(folder.GetChildren(user, true).OfType<MusicArtist>(), user, sort);
} }
if (string.Equals(folder.ViewType, CollectionType.Folders, StringComparison.OrdinalIgnoreCase))
{
return SortItems(folder.GetChildren(user, true), user, sort);
}
if (string.Equals(folder.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
{
return SortItems(folder.GetChildren(user, true), user, sort);
}
if (string.Equals(folder.ViewType, CollectionType.LiveTvRecordingGroups, StringComparison.OrdinalIgnoreCase))
{
return SortItems(folder.GetChildren(user, true), user, sort);
}
if (string.Equals(folder.ViewType, CollectionType.LiveTvChannels, StringComparison.OrdinalIgnoreCase))
{
return SortItems(folder.GetChildren(user, true), user, sort);
}
return GetPlainFolderChildrenSorted(folder, user, sort); return GetPlainFolderChildrenSorted(folder, user, sort);
} }

View file

@ -80,16 +80,18 @@ namespace MediaBrowser.Dlna.Didl
// refID? // refID?
// storeAttribute(itemNode, object, ClassProperties.REF_ID, false); // storeAttribute(itemNode, object, ClassProperties.REF_ID, false);
var audio = item as Audio; var hasMediaSources = item as IHasMediaSources;
if (audio != null)
{
AddAudioResource(element, audio, deviceId, filter, streamInfo);
}
var video = item as Video; if (hasMediaSources != null)
if (video != null)
{ {
AddVideoResource(element, video, deviceId, filter, streamInfo); if (string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase))
{
AddAudioResource(element, hasMediaSources, deviceId, filter, streamInfo);
}
else if (string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{
AddVideoResource(element, hasMediaSources, deviceId, filter, streamInfo);
}
} }
AddCover(item, element); AddCover(item, element);
@ -97,7 +99,7 @@ namespace MediaBrowser.Dlna.Didl
return element; return element;
} }
private void AddVideoResource(XmlElement container, Video video, string deviceId, Filter filter, StreamInfo streamInfo = null) private void AddVideoResource(XmlElement container, IHasMediaSources video, string deviceId, Filter filter, StreamInfo streamInfo = null)
{ {
if (streamInfo == null) if (streamInfo == null)
{ {
@ -181,7 +183,7 @@ namespace MediaBrowser.Dlna.Didl
} }
} }
private void AddVideoResource(XmlElement container, Video video, string deviceId, Filter filter, string contentFeatures, StreamInfo streamInfo) private void AddVideoResource(XmlElement container, IHasMediaSources video, string deviceId, Filter filter, string contentFeatures, StreamInfo streamInfo)
{ {
var res = container.OwnerDocument.CreateElement(string.Empty, "res", NS_DIDL); var res = container.OwnerDocument.CreateElement(string.Empty, "res", NS_DIDL);
@ -270,7 +272,7 @@ namespace MediaBrowser.Dlna.Didl
container.AppendChild(res); container.AppendChild(res);
} }
private void AddAudioResource(XmlElement container, Audio audio, string deviceId, Filter filter, StreamInfo streamInfo = null) private void AddAudioResource(XmlElement container, IHasMediaSources audio, string deviceId, Filter filter, StreamInfo streamInfo = null)
{ {
var res = container.OwnerDocument.CreateElement(string.Empty, "res", NS_DIDL); var res = container.OwnerDocument.CreateElement(string.Empty, "res", NS_DIDL);
@ -636,9 +638,12 @@ namespace MediaBrowser.Dlna.Didl
if (!_profile.EnableAlbumArtInDidl) if (!_profile.EnableAlbumArtInDidl)
{ {
if (!(item is Photo) && !(item is Video)) if (!string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase) && !string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase))
{ {
return; if (!item.IsFolder)
{
return;
}
} }
} }

View file

@ -32,6 +32,8 @@ namespace MediaBrowser.Dlna.Profiles
MaxStreamingBitrate = 8000000; MaxStreamingBitrate = 8000000;
MaxStaticBitrate = 8000000; MaxStaticBitrate = 8000000;
MusicStreamingTranscodingBitrate = 128000;
MusicSyncBitrate = 128000;
EnableAlbumArtInDidl = false; EnableAlbumArtInDidl = false;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -25,6 +25,8 @@
<MaxIconHeight>48</MaxIconHeight> <MaxIconHeight>48</MaxIconHeight>
<MaxStreamingBitrate>8000000</MaxStreamingBitrate> <MaxStreamingBitrate>8000000</MaxStreamingBitrate>
<MaxStaticBitrate>8000000</MaxStaticBitrate> <MaxStaticBitrate>8000000</MaxStaticBitrate>
<MusicStreamingTranscodingBitrate>128000</MusicStreamingTranscodingBitrate>
<MusicSyncBitrate>128000</MusicSyncBitrate>
<XDlnaDoc>DMS-1.50</XDlnaDoc> <XDlnaDoc>DMS-1.50</XDlnaDoc>
<SonyAggregationFlags>10</SonyAggregationFlags> <SonyAggregationFlags>10</SonyAggregationFlags>
<ProtocolInfo>http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo> <ProtocolInfo>http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000</ProtocolInfo>
@ -107,4 +109,5 @@
<Conditions /> <Conditions />
</ResponseProfile> </ResponseProfile>
</ResponseProfiles> </ResponseProfiles>
<SubtitleProfiles />
</Profile> </Profile>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -184,7 +184,7 @@ namespace MediaBrowser.Dlna.Ssdp
values["ST"] = d.Type; values["ST"] = d.Type;
values["USN"] = d.USN; values["USN"] = d.USN;
SendDatagram(header, values, endpoint); SendDatagram(header, values, endpoint, null);
if (_config.GetDlnaConfiguration().EnableDebugLogging) if (_config.GetDlnaConfiguration().EnableDebugLogging)
{ {

View file

@ -761,6 +761,9 @@
<Compile Include="..\MediaBrowser.Model\Querying\ItemsResult.cs"> <Compile Include="..\MediaBrowser.Model\Querying\ItemsResult.cs">
<Link>Querying\ItemsResult.cs</Link> <Link>Querying\ItemsResult.cs</Link>
</Compile> </Compile>
<Compile Include="..\MediaBrowser.Model\Querying\LatestItemsQuery.cs">
<Link>Querying\LatestItemsQuery.cs</Link>
</Compile>
<Compile Include="..\MediaBrowser.Model\Querying\NextUpQuery.cs"> <Compile Include="..\MediaBrowser.Model\Querying\NextUpQuery.cs">
<Link>Querying\NextUpQuery.cs</Link> <Link>Querying\NextUpQuery.cs</Link>
</Compile> </Compile>

View file

@ -718,6 +718,9 @@
<Compile Include="..\MediaBrowser.Model\Querying\ItemsResult.cs"> <Compile Include="..\MediaBrowser.Model\Querying\ItemsResult.cs">
<Link>Querying\ItemsResult.cs</Link> <Link>Querying\ItemsResult.cs</Link>
</Compile> </Compile>
<Compile Include="..\MediaBrowser.Model\Querying\LatestItemsQuery.cs">
<Link>Querying\LatestItemsQuery.cs</Link>
</Compile>
<Compile Include="..\MediaBrowser.Model\Querying\NextUpQuery.cs"> <Compile Include="..\MediaBrowser.Model\Querying\NextUpQuery.cs">
<Link>Querying\NextUpQuery.cs</Link> <Link>Querying\NextUpQuery.cs</Link>
</Compile> </Compile>

View file

@ -203,6 +203,13 @@ namespace MediaBrowser.Model.ApiClient
/// <exception cref="ArgumentNullException">id</exception> /// <exception cref="ArgumentNullException">id</exception>
Task<BaseItemDto> GetItemAsync(string id, string userId); Task<BaseItemDto> GetItemAsync(string id, string userId);
/// <summary>
/// Gets the latest items.
/// </summary>
/// <param name="query">The query.</param>
/// <returns>Task&lt;QueryResult&lt;BaseItemDto&gt;&gt;.</returns>
Task<QueryResult<BaseItemDto>> GetLatestItems(LatestItemsQuery query);
/// <summary> /// <summary>
/// Gets the intros async. /// Gets the intros async.
/// </summary> /// </summary>

View file

@ -9,9 +9,12 @@
public string[] DownloadingChannels { get; set; } public string[] DownloadingChannels { get; set; }
public double? DownloadSizeLimit { get; set; }
public ChannelOptions() public ChannelOptions()
{ {
DownloadingChannels = new string[] { }; DownloadingChannels = new string[] { };
DownloadSizeLimit = 1;
MaxDownloadAge = 30; MaxDownloadAge = 30;
} }
} }

View file

@ -186,6 +186,7 @@ namespace MediaBrowser.Model.Configuration
public bool DefaultMetadataSettingsApplied { get; set; } public bool DefaultMetadataSettingsApplied { get; set; }
public bool EnableTokenAuthentication { get; set; } public bool EnableTokenAuthentication { get; set; }
public PeopleMetadataOptions PeopleMetadataOptions { get; set; }
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ServerConfiguration" /> class. /// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
@ -229,6 +230,8 @@ namespace MediaBrowser.Model.Configuration
UICulture = "en-us"; UICulture = "en-us";
PeopleMetadataOptions = new PeopleMetadataOptions();
MetadataOptions = new[] MetadataOptions = new[]
{ {
new MetadataOptions(1, 1280) {ItemType = "Book"}, new MetadataOptions(1, 1280) {ItemType = "Book"},
@ -288,4 +291,21 @@ namespace MediaBrowser.Model.Configuration
}; };
} }
} }
public class PeopleMetadataOptions
{
public bool DownloadActorMetadata { get; set; }
public bool DownloadDirectorMetadata { get; set; }
public bool DownloadProducerMetadata { get; set; }
public bool DownloadWriterMetadata { get; set; }
public bool DownloadComposerMetadata { get; set; }
public bool DownloadOtherPeopleMetadata { get; set; }
public bool DownloadGuestStarMetadata { get; set; }
public PeopleMetadataOptions()
{
DownloadActorMetadata = true;
DownloadDirectorMetadata = true;
}
}
} }

View file

@ -73,6 +73,7 @@ namespace MediaBrowser.Model.Configuration
public SubtitlePlaybackMode SubtitleMode { get; set; } public SubtitlePlaybackMode SubtitleMode { get; set; }
public bool DisplayCollectionsView { get; set; } public bool DisplayCollectionsView { get; set; }
public bool DisplayFoldersView { get; set; }
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="UserConfiguration" /> class. /// Initializes a new instance of the <see cref="UserConfiguration" /> class.

View file

@ -36,6 +36,12 @@ namespace MediaBrowser.Model.Dlna
/// <value>The context.</value> /// <value>The context.</value>
public EncodingContext Context { get; set; } public EncodingContext Context { get; set; }
/// <summary>
/// Gets or sets the audio transcoding bitrate.
/// </summary>
/// <value>The audio transcoding bitrate.</value>
public int? AudioTranscodingBitrate { get; set; }
/// <summary> /// <summary>
/// Gets the maximum bitrate. /// Gets the maximum bitrate.
/// </summary> /// </summary>

View file

@ -52,6 +52,9 @@ namespace MediaBrowser.Model.Dlna
public int? MaxStreamingBitrate { get; set; } public int? MaxStreamingBitrate { get; set; }
public int? MaxStaticBitrate { get; set; } public int? MaxStaticBitrate { get; set; }
public int? MusicStreamingTranscodingBitrate { get; set; }
public int? MusicSyncBitrate { get; set; }
/// <summary> /// <summary>
/// Controls the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace. /// Controls the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.
/// </summary> /// </summary>

View file

@ -217,10 +217,11 @@ namespace MediaBrowser.Model.Dlna
playlistItem.MaxAudioChannels = Math.Min(options.MaxAudioChannels.Value, currentValue); playlistItem.MaxAudioChannels = Math.Min(options.MaxAudioChannels.Value, currentValue);
} }
if (!playlistItem.AudioBitrate.HasValue) var configuredBitrate = options.AudioTranscodingBitrate ??
{ (options.Context == EncodingContext.Static ? options.Profile.MusicSyncBitrate : options.Profile.MusicStreamingTranscodingBitrate) ??
playlistItem.AudioBitrate = 128000; 128000;
}
playlistItem.AudioBitrate = Math.Min(configuredBitrate, playlistItem.AudioBitrate ?? configuredBitrate);
} }
return playlistItem; return playlistItem;

View file

@ -24,5 +24,9 @@
public const string Channels = "channels"; public const string Channels = "channels";
public const string LiveTv = "livetv"; public const string LiveTv = "livetv";
public const string Playlists = "playlists"; public const string Playlists = "playlists";
public const string Folders = "folders";
public const string LiveTvChannels = "LiveTvChannels";
public const string LiveTvRecordingGroups = "LiveTvRecordingGroups";
} }
} }

View file

@ -243,6 +243,7 @@
<Compile Include="Querying\ItemCountsQuery.cs" /> <Compile Include="Querying\ItemCountsQuery.cs" />
<Compile Include="Querying\ItemsByNameQuery.cs" /> <Compile Include="Querying\ItemsByNameQuery.cs" />
<Compile Include="Entities\BaseItemInfo.cs" /> <Compile Include="Entities\BaseItemInfo.cs" />
<Compile Include="Querying\LatestItemsQuery.cs" />
<Compile Include="Querying\NextUpQuery.cs" /> <Compile Include="Querying\NextUpQuery.cs" />
<Compile Include="Querying\QueryResult.cs" /> <Compile Include="Querying\QueryResult.cs" />
<Compile Include="Querying\SeasonQuery.cs" /> <Compile Include="Querying\SeasonQuery.cs" />

View file

@ -0,0 +1,54 @@

namespace MediaBrowser.Model.Querying
{
public class LatestItemsQuery
{
/// <summary>
/// The user to localize search results for
/// </summary>
/// <value>The user id.</value>
public string UserId { get; set; }
/// <summary>
/// Specify this to localize the search to a specific item or folder. Omit to use the root.
/// </summary>
/// <value>The parent id.</value>
public string ParentId { get; set; }
/// <summary>
/// Skips over a given number of items within the results. Use for paging.
/// </summary>
/// <value>The start index.</value>
public int? StartIndex { get; set; }
/// <summary>
/// The maximum number of items to return
/// </summary>
/// <value>The limit.</value>
public int? Limit { get; set; }
/// <summary>
/// Fields to return within the items, in addition to basic information
/// </summary>
/// <value>The fields.</value>
public ItemFields[] Fields { get; set; }
/// <summary>
/// Gets or sets the include item types.
/// </summary>
/// <value>The include item types.</value>
public string[] IncludeItemTypes { get; set; }
/// <summary>
/// Gets or sets a value indicating whether this instance is played.
/// </summary>
/// <value><c>null</c> if [is played] contains no value, <c>true</c> if [is played]; otherwise, <c>false</c>.</value>
public bool? IsPlayed { get; set; }
/// <summary>
/// Gets or sets a value indicating whether [group items].
/// </summary>
/// <value><c>true</c> if [group items]; otherwise, <c>false</c>.</value>
public bool GroupItems { get; set; }
}
}

View file

@ -236,6 +236,11 @@ namespace MediaBrowser.Providers.Manager
{ {
try try
{ {
if (!item.SupportsRemoteImageDownloading)
{
return;
}
if (!refreshOptions.ReplaceAllImages && if (!refreshOptions.ReplaceAllImages &&
refreshOptions.ReplaceImages.Count == 0 && refreshOptions.ReplaceImages.Count == 0 &&
ContainsImages(item, provider.GetSupportedImages(item).ToList(), savedOptions, backdropLimit, screenshotLimit)) ContainsImages(item, provider.GetSupportedImages(item).ToList(), savedOptions, backdropLimit, screenshotLimit))

View file

@ -1,5 +1,7 @@
using MediaBrowser.Common.IO; using System.Linq;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Playlists; using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities; using MediaBrowser.Model.Entities;
@ -40,7 +42,11 @@ namespace MediaBrowser.Providers.Playlists
if (mergeMetadataSettings) if (mergeMetadataSettings)
{ {
target.LinkedChildren = source.LinkedChildren; var list = source.LinkedChildren.ToList();
list.AddRange(target.LinkedChildren);
target.LinkedChildren = list;
} }
} }
} }

View file

@ -188,9 +188,11 @@ namespace MediaBrowser.Providers.TV
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{ {
if (item.LocationType != LocationType.Virtual) var episode = (Episode)item;
if (!episode.IsVirtualUnaired)
{ {
// For non-virtual items, only enable if configured // For non-unaired items, only enable if configured
if (!_config.Configuration.EnableTvDbUpdates) if (!_config.Configuration.EnableTvDbUpdates)
{ {
return false; return false;
@ -199,7 +201,6 @@ namespace MediaBrowser.Providers.TV
if (!item.HasImage(ImageType.Primary)) if (!item.HasImage(ImageType.Primary))
{ {
var episode = (Episode)item;
var series = episode.Series; var series = episode.Series;
var seriesId = series != null ? series.GetProviderId(MetadataProviders.Tvdb) : null; var seriesId = series != null ? series.GetProviderId(MetadataProviders.Tvdb) : null;

View file

@ -32,9 +32,9 @@ namespace MediaBrowser.Server.Implementations.Activity
EventHelper.FireEventIfNotNull(EntryCreated, this, new GenericEventArgs<ActivityLogEntry>(entry), _logger); 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);
} }
} }
} }

View file

@ -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()) using (var cmd = _connection.CreateCommand())
{ {
@ -147,16 +147,32 @@ namespace MediaBrowser.Server.Implementations.Activity
var whereClauses = new List<string>(); var whereClauses = new List<string>();
if (minDate.HasValue)
{
whereClauses.Add("DateCreated>=@DateCreated");
cmd.Parameters.Add(cmd, "@DateCreated", DbType.Date).Value = minDate.Value;
}
var whereTextWithoutPaging = whereClauses.Count == 0 ?
string.Empty :
" where " + string.Join(" AND ", whereClauses.ToArray());
if (startIndex.HasValue && startIndex.Value > 0) if (startIndex.HasValue && startIndex.Value > 0)
{ {
whereClauses.Add(string.Format("Id NOT IN (SELECT Id FROM ActivityLogEntries ORDER BY DateCreated DESC LIMIT {0})", 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))); startIndex.Value.ToString(_usCulture)));
} }
if (whereClauses.Count > 0) var whereText = whereClauses.Count == 0 ?
{ string.Empty :
cmd.CommandText += " where " + string.Join(" AND ", whereClauses.ToArray()); " where " + string.Join(" AND ", whereClauses.ToArray());
}
cmd.CommandText += whereText;
cmd.CommandText += " ORDER BY DateCreated DESC"; cmd.CommandText += " ORDER BY DateCreated DESC";
@ -165,7 +181,7 @@ namespace MediaBrowser.Server.Implementations.Activity
cmd.CommandText += " LIMIT " + limit.Value.ToString(_usCulture); 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 list = new List<ActivityLogEntry>();
var count = 0; var count = 0;

View file

@ -7,6 +7,7 @@ using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Channels; using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dto; using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo; using MediaBrowser.Model.MediaInfo;
@ -154,7 +155,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{ {
try try
{ {
await DownloadChannelItem(item, cancellationToken, path); await DownloadChannelItem(item, options, cancellationToken, path);
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {
@ -176,9 +177,18 @@ namespace MediaBrowser.Server.Implementations.Channels
} }
private async Task DownloadChannelItem(BaseItemDto item, private async Task DownloadChannelItem(BaseItemDto item,
ChannelOptions channelOptions,
CancellationToken cancellationToken, CancellationToken cancellationToken,
string path) string path)
{ {
if (channelOptions.DownloadSizeLimit.HasValue)
{
if (IsSizeLimitReached(path, channelOptions.DownloadSizeLimit.Value))
{
return;
}
}
var sources = await _manager.GetChannelItemMediaSources(item.Id, cancellationToken) var sources = await _manager.GetChannelItemMediaSources(item.Id, cancellationToken)
.ConfigureAwait(false); .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) private async Task RefreshMediaSourceItems(IEnumerable<MediaSourceInfo> items, CancellationToken cancellationToken)
{ {
foreach (var item in items) foreach (var item in items)

View file

@ -61,15 +61,15 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
public void Run() public void Run()
{ {
_taskManager.TaskExecuting += _taskManager_TaskExecuting; //_taskManager.TaskExecuting += _taskManager_TaskExecuting;
_taskManager.TaskCompleted += _taskManager_TaskCompleted; //_taskManager.TaskCompleted += _taskManager_TaskCompleted;
_installationManager.PluginInstalled += _installationManager_PluginInstalled; //_installationManager.PluginInstalled += _installationManager_PluginInstalled;
_installationManager.PluginUninstalled += _installationManager_PluginUninstalled; //_installationManager.PluginUninstalled += _installationManager_PluginUninstalled;
_installationManager.PluginUpdated += _installationManager_PluginUpdated; //_installationManager.PluginUpdated += _installationManager_PluginUpdated;
_libraryManager.ItemAdded += _libraryManager_ItemAdded; //_libraryManager.ItemAdded += _libraryManager_ItemAdded;
_libraryManager.ItemRemoved += _libraryManager_ItemRemoved; //_libraryManager.ItemRemoved += _libraryManager_ItemRemoved;
_sessionManager.SessionStarted += _sessionManager_SessionStarted; _sessionManager.SessionStarted += _sessionManager_SessionStarted;
_sessionManager.AuthenticationFailed += _sessionManager_AuthenticationFailed; _sessionManager.AuthenticationFailed += _sessionManager_AuthenticationFailed;
@ -79,7 +79,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
_sessionManager.PlaybackStart += _sessionManager_PlaybackStart; _sessionManager.PlaybackStart += _sessionManager_PlaybackStart;
_sessionManager.PlaybackStopped += _sessionManager_PlaybackStopped; _sessionManager.PlaybackStopped += _sessionManager_PlaybackStopped;
_subManager.SubtitlesDownloaded += _subManager_SubtitlesDownloaded; //_subManager.SubtitlesDownloaded += _subManager_SubtitlesDownloaded;
_subManager.SubtitleDownloadFailure += _subManager_SubtitleDownloadFailure; _subManager.SubtitleDownloadFailure += _subManager_SubtitleDownloadFailure;
_userManager.UserCreated += _userManager_UserCreated; _userManager.UserCreated += _userManager_UserCreated;
@ -87,8 +87,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
_userManager.UserDeleted += _userManager_UserDeleted; _userManager.UserDeleted += _userManager_UserDeleted;
_userManager.UserConfigurationUpdated += _userManager_UserConfigurationUpdated; _userManager.UserConfigurationUpdated += _userManager_UserConfigurationUpdated;
_config.ConfigurationUpdated += _config_ConfigurationUpdated; //_config.ConfigurationUpdated += _config_ConfigurationUpdated;
_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated; //_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
//_logManager.LoggerLoaded += _logManager_LoggerLoaded; //_logManager.LoggerLoaded += _logManager_LoggerLoaded;
@ -165,6 +165,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (string.IsNullOrWhiteSpace(session.UserName)) if (string.IsNullOrWhiteSpace(session.UserName))
{ {
name = string.Format(_localization.GetLocalizedString("DeviceOfflineWithName"), session.DeviceName); name = string.Format(_localization.GetLocalizedString("DeviceOfflineWithName"), session.DeviceName);
// Causing too much spam for now
return;
} }
else else
{ {
@ -288,6 +291,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (string.IsNullOrWhiteSpace(session.UserName)) if (string.IsNullOrWhiteSpace(session.UserName))
{ {
name = string.Format(_localization.GetLocalizedString("DeviceOnlineWithName"), session.DeviceName); name = string.Format(_localization.GetLocalizedString("DeviceOnlineWithName"), session.DeviceName);
// Causing too much spam for now
return;
} }
else else
{ {
@ -394,6 +400,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
if (result.Status == TaskCompletionStatus.Cancelled) if (result.Status == TaskCompletionStatus.Cancelled)
{ {
return;
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCancelledWithName"), task.Name), Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCancelledWithName"), task.Name),
@ -403,6 +410,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
} }
else if (result.Status == TaskCompletionStatus.Completed) else if (result.Status == TaskCompletionStatus.Completed)
{ {
return;
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCompletedWithName"), task.Name), Name = string.Format(_localization.GetLocalizedString("ScheduledTaskCompletedWithName"), task.Name),

View file

@ -35,8 +35,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer
private IHttpListener _listener; private IHttpListener _listener;
private const int IdleTimeout = 300;
private readonly ContainerAdapter _containerAdapter; private readonly ContainerAdapter _containerAdapter;
public event EventHandler<WebSocketConnectEventArgs> WebSocketConnected; public event EventHandler<WebSocketConnectEventArgs> WebSocketConnected;
@ -152,7 +150,8 @@ namespace MediaBrowser.Server.Implementations.HttpServer
HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First()); HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First());
_listener = NativeWebSocket.IsSupported _listener = NativeWebSocket.IsSupported
? _listener = new WebSocketSharpListener(_logger) ? _listener = new HttpListenerServer(_logger)
//? _listener = new WebSocketSharpListener(_logger)
: _listener = new WebSocketSharpListener(_logger); : _listener = new WebSocketSharpListener(_logger);
_listener.WebSocketHandler = WebSocketHandler; _listener.WebSocketHandler = WebSocketHandler;

View file

@ -7,16 +7,17 @@ using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using WebSocketSharp.Net; using WebSocketSharp.Net;
using WebSocketSharp.Server;
namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
{ {
public class WebSocketSharpListener : IHttpListener public class WebSocketSharpListener : IHttpListener
{ {
private readonly ConcurrentDictionary<string, string> _localEndPoints = new ConcurrentDictionary<string, string>(StringComparer.OrdinalIgnoreCase); 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; private readonly ILogger _logger;
@ -38,16 +39,85 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
public void Start(IEnumerable<string> urlPrefixes) 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);
}
_httpsv.Start(); _listener.Start();
Task.Factory.StartNew(Listen, TaskCreationOptions.LongRunning);
} }
void _httpsv_OnRequest(object sender, HttpRequestEventArgs e) private bool IsListening
{ {
Task.Factory.StartNew(() => InitTask(e.Context)); get { return _listener != null && _listener.IsListening; }
}
// Loop here to begin processing of new requests.
private void Listen()
{
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) private void InitTask(HttpListenerContext context)
@ -169,20 +239,39 @@ namespace MediaBrowser.Server.Implementations.HttpServer.SocketSharp
public void Stop() 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() 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) lock (_disposeLock)
{ {
if (_httpsv != null) if (_disposed) return;
if (disposing)
{ {
_httpsv.OnRequest -= _httpsv_OnRequest; Stop();
_httpsv.Stop();
_httpsv = null;
} }
//release unmanaged resources here...
_disposed = true;
} }
} }
} }

View file

@ -906,7 +906,7 @@ namespace MediaBrowser.Server.Implementations.Library
// Ensure the location is available. // Ensure the location is available.
Directory.CreateDirectory(ConfigurationManager.ApplicationPaths.PeoplePath); 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> /// <summary>

View file

@ -93,7 +93,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (user.Configuration.DisplayCollectionsView && if (user.Configuration.DisplayCollectionsView &&
recursiveChildren.OfType<BoxSet>().Any()) 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()) if (recursiveChildren.OfType<Playlist>().Any())
@ -101,6 +101,11 @@ namespace MediaBrowser.Server.Implementations.Library
list.Add(_playlists.GetPlaylistsFolder(user.Id.ToString("N"))); 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) if (query.IncludeExternalContent)
{ {
var channelResult = await _channelManager.GetChannels(new ChannelQuery 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>(); 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); var name = _localizationManager.GetLocalizedString("ViewType" + type);

View file

@ -1,8 +1,13 @@
using MediaBrowser.Common.Progress; using MediaBrowser.Common.Progress;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers; using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -23,46 +28,128 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
/// </summary> /// </summary>
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IServerConfigurationManager _config;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="PeopleValidator" /> class. /// Initializes a new instance of the <see cref="PeopleValidator" /> class.
/// </summary> /// </summary>
/// <param name="libraryManager">The library manager.</param> /// <param name="libraryManager">The library manager.</param>
/// <param name="logger">The logger.</param> /// <param name="logger">The logger.</param>
public PeopleValidator(ILibraryManager libraryManager, ILogger logger) public PeopleValidator(ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config)
{ {
_libraryManager = libraryManager; _libraryManager = libraryManager;
_logger = logger; _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> /// <summary>
/// Validates the people. /// Validates the people.
/// </summary> /// </summary>
/// <param name="cancellationToken">The cancellation token.</param> /// <param name="cancellationToken">The cancellation token.</param>
/// <param name="options">The options.</param>
/// <param name="progress">The progress.</param> /// <param name="progress">The progress.</param>
/// <returns>Task.</returns> /// <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>(); var innerProgress = new ActionableProgress<double>();
innerProgress.RegisterAction(pct => progress.Report(pct * .15)); innerProgress.RegisterAction(pct => progress.Report(pct * .15));
var peopleOptions = _config.Configuration.PeopleMetadataOptions;
var people = _libraryManager.RootFolder.GetRecursiveChildren() var people = _libraryManager.RootFolder.GetRecursiveChildren()
.SelectMany(c => c.People) .SelectMany(i => i.People)
.Where(i => !string.IsNullOrWhiteSpace(i.Name)) .Where(i => !string.IsNullOrWhiteSpace(i.Name))
.Select(i => i.Name)
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList(); .ToList();
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; var numComplete = 0;
foreach (var person in people) foreach (var person in dict)
{ {
cancellationToken.ThrowIfCancellationRequested(); cancellationToken.ThrowIfCancellationRequested();
try 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); await item.RefreshMetadata(options, cancellationToken).ConfigureAwait(false);
} }

View file

@ -128,7 +128,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
_taskManager.CancelIfRunningAndQueue<RefreshChannelsScheduledTask>(); _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)); 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); 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>(); 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); var currentProgram = await GetCurrentProgram(channel.ExternalId, cancellationToken).ConfigureAwait(false);
@ -229,7 +244,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var result = new QueryResult<ChannelInfoDto> var result = new QueryResult<ChannelInfoDto>
{ {
Items = returnList.ToArray(), Items = returnList.ToArray(),
TotalRecordCount = allChannels.Count TotalRecordCount = internalResult.TotalRecordCount
}; };
return result; return result;
@ -260,12 +275,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return obj; 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) private async Task RefreshIfNeeded(LiveTvProgram program, CancellationToken cancellationToken)
@ -275,9 +298,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return; return;
} }
await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
_refreshedPrograms.TryAdd(program.Id, true); _refreshedPrograms.TryAdd(program.Id, true);
await program.RefreshMetadata(cancellationToken).ConfigureAwait(false);
} }
public async Task<ILiveTvRecording> GetInternalRecording(string id, CancellationToken cancellationToken) 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)); 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; var service = ActiveService;
if (service == null) 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); 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 => .Select(i =>
{ {
var channel = string.IsNullOrEmpty(i.RecordingInfo.ChannelId) ? null : GetInternalChannel(_tvDtoService.GetInternalChannelId(service.Name, i.RecordingInfo.ChannelId)); 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> return new QueryResult<RecordingInfoDto>
{ {
Items = returnArray, Items = returnArray,
TotalRecordCount = entityList.Count TotalRecordCount = internalResult.TotalRecordCount
}; };
} }

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,7 +58,7 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "P\u0159ehr\u00e1t", "ButtonPlay": "P\u0159ehr\u00e1t",
"ButtonEdit": "Upravit", "ButtonEdit": "Upravit",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Afspil", "ButtonPlay": "Afspil",
"ButtonEdit": "Rediger", "ButtonEdit": "Rediger",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "Ver grabaciones de series", "ButtonViewSeriesRecording": "Ver grabaciones de series",
"ValueOriginalAirDate": "Fecha de transmisi\u00f3n original: {0}", "ValueOriginalAirDate": "Fecha de transmisi\u00f3n original: {0}",
"ButtonRemoveFromPlaylist": "Eliminar de la lista de reproducci\u00f3n", "ButtonRemoveFromPlaylist": "Eliminar de la lista de reproducci\u00f3n",
"HeaderSpecials": "Specials", "HeaderSpecials": "Especiales",
"HeaderTrailers": "Trailers", "HeaderTrailers": "Avances",
"HeaderAudio": "Audio", "HeaderAudio": "Audio",
"HeaderResolution": "Resolution", "HeaderResolution": "Resoluci\u00f3n",
"HeaderVideo": "Video", "HeaderVideo": "Video",
"HeaderRuntime": "Runtime", "HeaderRuntime": "Duraci\u00f3n",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "Calificaci\u00f3n de la comunidad",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "Calificaci\u00f3n parental",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "Fecha de estreno",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "Fecha de adici\u00f3n",
"HeaderSeries": "Series", "HeaderSeries": "Series",
"HeaderSeason": "Season", "HeaderSeason": "Temporada",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "N\u00famero de temporada",
"HeaderNetwork": "Network", "HeaderNetwork": "Cadena",
"HeaderYear": "Year", "HeaderYear": "A\u00f1o",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "Sistema de Juegos",
"HeaderPlayers": "Players", "HeaderPlayers": "Jugadores",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "Im\u00e1gen embebida",
"HeaderTrack": "Track", "HeaderTrack": "Pista",
"HeaderDisc": "Disc" "HeaderDisc": "Disco"
} }

View file

@ -321,34 +321,34 @@
"ButtonNew": "Nouveau", "ButtonNew": "Nouveau",
"MessageInternetExplorerWebm": "Pour de meilleurs r\u00e9sultats avec Internet Explorer, merci d'installer le plugin WebM pour IE.", "MessageInternetExplorerWebm": "Pour de meilleurs r\u00e9sultats avec Internet Explorer, merci d'installer le plugin WebM pour IE.",
"HeaderVideoError": "Erreur vid\u00e9o", "HeaderVideoError": "Erreur vid\u00e9o",
"ButtonAddToPlaylist": "Add to playlist", "ButtonAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"HeaderAddToPlaylist": "Add to Playlist", "HeaderAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"LabelName": "Nom:", "LabelName": "Nom:",
"ButtonSubmit": "Soumettre", "ButtonSubmit": "Soumettre",
"LabelSelectPlaylist": "Playlist:", "LabelSelectPlaylist": "Liste de lecture:",
"OptionNewPlaylist": "New playlist...", "OptionNewPlaylist": "Nouvelle liste de lecture...",
"MessageAddedToPlaylistSuccess": "Ok", "MessageAddedToPlaylistSuccess": "OK",
"ButtonViewSeriesRecording": "View series recording", "ButtonViewSeriesRecording": "Voir enregistrements de s\u00e9ries",
"ValueOriginalAirDate": "Original air date: {0}", "ValueOriginalAirDate": "Date de diffusion originale: {0}",
"ButtonRemoveFromPlaylist": "Remove from playlist", "ButtonRemoveFromPlaylist": "Remove from playlist",
"HeaderSpecials": "Specials", "HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers", "HeaderTrailers": "Bande-Annonces",
"HeaderAudio": "Audio", "HeaderAudio": "Audio",
"HeaderResolution": "Resolution", "HeaderResolution": "R\u00e9solution",
"HeaderVideo": "Video", "HeaderVideo": "Vid\u00e9o",
"HeaderRuntime": "Runtime", "HeaderRuntime": "Runtime",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "Note de communaut\u00e9",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "Note parentale",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "Date de lancement",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "Date ajout\u00e9e",
"HeaderSeries": "Series", "HeaderSeries": "S\u00e9ries",
"HeaderSeason": "Season", "HeaderSeason": "Saison",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "Num\u00e9ro de saison",
"HeaderNetwork": "Network", "HeaderNetwork": "R\u00e9seau",
"HeaderYear": "Year", "HeaderYear": "Ann\u00e9e",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "Plateforme de jeu",
"HeaderPlayers": "Players", "HeaderPlayers": "Lecteurs",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "Embedded image",
"HeaderTrack": "Track", "HeaderTrack": "Track",
"HeaderDisc": "Disc" "HeaderDisc": "Disque"
} }

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "\u05e0\u05d2\u05df", "ButtonPlay": "\u05e0\u05d2\u05df",
"ButtonEdit": "\u05e2\u05e8\u05d5\u05da", "ButtonEdit": "\u05e2\u05e8\u05d5\u05da",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -321,15 +321,15 @@
"ButtonNew": "Nuovo", "ButtonNew": "Nuovo",
"MessageInternetExplorerWebm": "Se utilizzi internet explorer installa WebM plugin", "MessageInternetExplorerWebm": "Se utilizzi internet explorer installa WebM plugin",
"HeaderVideoError": "Video Error", "HeaderVideoError": "Video Error",
"ButtonAddToPlaylist": "Add to playlist", "ButtonAddToPlaylist": "Aggiungi alla playlist",
"HeaderAddToPlaylist": "Add to Playlist", "HeaderAddToPlaylist": "Aggiungi alla playlist",
"LabelName": "Nome:", "LabelName": "Nome:",
"ButtonSubmit": "Invia", "ButtonSubmit": "Invia",
"LabelSelectPlaylist": "Playlist:", "LabelSelectPlaylist": "Playlist:",
"OptionNewPlaylist": "New playlist...", "OptionNewPlaylist": "Nuova playlist...",
"MessageAddedToPlaylistSuccess": "Ok", "MessageAddedToPlaylistSuccess": "Ok",
"ButtonViewSeriesRecording": "View series recording", "ButtonViewSeriesRecording": "Vista delle serie in registrazione",
"ValueOriginalAirDate": "Original air date: {0}", "ValueOriginalAirDate": "Prima messa in onda (originale): {0}",
"ButtonRemoveFromPlaylist": "Remove from playlist", "ButtonRemoveFromPlaylist": "Remove from playlist",
"HeaderSpecials": "Specials", "HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers", "HeaderTrailers": "Trailers",
@ -345,10 +345,10 @@
"HeaderSeason": "Season", "HeaderSeason": "Season",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "Season number",
"HeaderNetwork": "Network", "HeaderNetwork": "Network",
"HeaderYear": "Year", "HeaderYear": "Anno",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "Gioco Sistema",
"HeaderPlayers": "Players", "HeaderPlayers": "Giocatori",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "Immagine incorporata",
"HeaderTrack": "Track", "HeaderTrack": "Traccia",
"HeaderDisc": "Disc" "HeaderDisc": "Disco"
} }

View file

@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "\u0421\u0435\u0440\u0438\u0430\u043b \u0436\u0430\u0437\u0431\u0430\u0441\u044b\u043d \u049b\u0430\u0440\u0430\u0443", "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}", "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", "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", "HeaderSpecials": "\u0410\u0440\u043d\u0430\u0439\u044b\u043b\u0430\u0440",
"HeaderTrailers": "Trailers", "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440",
"HeaderAudio": "Audio", "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441",
"HeaderResolution": "Resolution", "HeaderResolution": "\u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b",
"HeaderVideo": "Video", "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435",
"HeaderRuntime": "Runtime", "HeaderRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "\u04ae\u0441\u0442\u0435\u0443 \u043a\u04af\u043d-\u0430\u0439\u044b",
"HeaderSeries": "Series", "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b",
"HeaderSeason": "Season", "HeaderSeason": "\u041c\u0430\u0443\u0441\u044b\u043c",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456",
"HeaderNetwork": "Network", "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0436\u0435\u043b\u0456",
"HeaderYear": "Year", "HeaderYear": "\u0416\u044b\u043b\u044b",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "\u041e\u0439\u044b\u043d \u0436\u04af\u0439\u0435\u0441\u0456",
"HeaderPlayers": "Players", "HeaderPlayers": "\u041e\u0439\u044b\u043d\u0448\u044b\u043b\u0430\u0440",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "\u0415\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0443\u0440\u0435\u0442",
"HeaderTrack": "Track", "HeaderTrack": "\u0416\u043e\u043b\u0448\u044b\u049b",
"HeaderDisc": "Disc" "HeaderDisc": "\u0414\u0438\u0441\u043a\u0456"
} }

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -334,21 +334,21 @@
"HeaderSpecials": "Specials", "HeaderSpecials": "Specials",
"HeaderTrailers": "Trailers", "HeaderTrailers": "Trailers",
"HeaderAudio": "Audio", "HeaderAudio": "Audio",
"HeaderResolution": "Resolution", "HeaderResolution": "Resolutie",
"HeaderVideo": "Video", "HeaderVideo": "Video",
"HeaderRuntime": "Runtime", "HeaderRuntime": "Speelduur",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "Gemeenschap cijfer",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "Kijkwijzer classificering",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "Releasedatum ",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "Datum toegevoegd",
"HeaderSeries": "Series", "HeaderSeries": "Series",
"HeaderSeason": "Season", "HeaderSeason": "Seizoen",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "Seizoen nummer",
"HeaderNetwork": "Network", "HeaderNetwork": "Zender",
"HeaderYear": "Year", "HeaderYear": "Jaar",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "Spelsysteem",
"HeaderPlayers": "Players", "HeaderPlayers": "Spelers",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "Ingesloten afbeelding",
"HeaderTrack": "Track", "HeaderTrack": "Track",
"HeaderDisc": "Disc" "HeaderDisc": "Schijf"
} }

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -331,24 +331,24 @@
"ButtonViewSeriesRecording": "Visualizar grava\u00e7\u00e3o de s\u00e9ries", "ButtonViewSeriesRecording": "Visualizar grava\u00e7\u00e3o de s\u00e9ries",
"ValueOriginalAirDate": "Data original de exibi\u00e7\u00e3o: {0}", "ValueOriginalAirDate": "Data original de exibi\u00e7\u00e3o: {0}",
"ButtonRemoveFromPlaylist": "Remover da lista de reprodu\u00e7\u00e3o", "ButtonRemoveFromPlaylist": "Remover da lista de reprodu\u00e7\u00e3o",
"HeaderSpecials": "Specials", "HeaderSpecials": "Especiais",
"HeaderTrailers": "Trailers", "HeaderTrailers": "Trailers",
"HeaderAudio": "Audio", "HeaderAudio": "\u00c1udio",
"HeaderResolution": "Resolution", "HeaderResolution": "Resolu\u00e7\u00e3o",
"HeaderVideo": "Video", "HeaderVideo": "V\u00eddeo",
"HeaderRuntime": "Runtime", "HeaderRuntime": "Dura\u00e7\u00e3o",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "Classifica\u00e7\u00e3o da Comunidade",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "Classifica\u00e7\u00e3o parental",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "Data de lan\u00e7amento",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "Data de adi\u00e7\u00e3o",
"HeaderSeries": "Series", "HeaderSeries": "S\u00e9rie",
"HeaderSeason": "Season", "HeaderSeason": "Temporada",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "N\u00famero da temporada",
"HeaderNetwork": "Network", "HeaderNetwork": "Rede de TV",
"HeaderYear": "Year", "HeaderYear": "Ano",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "Sistema do jogo",
"HeaderPlayers": "Players", "HeaderPlayers": "Jogadores",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "Imagem incorporada",
"HeaderTrack": "Track", "HeaderTrack": "Faixa",
"HeaderDisc": "Disc" "HeaderDisc": "Disco"
} }

View file

@ -29,7 +29,7 @@
"MessageKeysLinked": "\u041a\u043b\u044e\u0447\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b.", "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", "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.", "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.", "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", "HeaderSearch": "\u041f\u043e\u0438\u0441\u043a",
"LabelArtist": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", "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", "ButtonPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438",
"ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c", "ButtonEdit": "\u041f\u0440\u0430\u0432\u0438\u0442\u044c",
"ButtonQueue": "\u041e\u0447\u0435\u0440\u0435\u0434\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", "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", "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", "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.", "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", "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}", "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}", "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}", "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", "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.", "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...", "OptionNewCollection": "\u041d\u043e\u0432\u0430\u044f...",
"ButtonAdd": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c", "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:", "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.", "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", "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", "LabelPremiereProgram": "\u041f\u0420\u0415\u041c\u042c\u0415\u0420\u0410",
"LabelHDProgram": "HD", "LabelHDProgram": "HD",
"HeaderChangeFolderType": "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 \u043f\u0430\u043f\u043a\u0438", "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", "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.", "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", "ButtonRestart": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c",
@ -330,25 +330,25 @@
"MessageAddedToPlaylistSuccess": "\u041e\u041a", "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", "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}", "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", "ButtonRemoveFromPlaylist": "\u0418\u0437\u044a\u044f\u0442\u044c \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u043e\u0441\u043f\u0440-\u0438\u044f",
"HeaderSpecials": "Specials", "HeaderSpecials": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435",
"HeaderTrailers": "Trailers", "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u044b",
"HeaderAudio": "Audio", "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e",
"HeaderResolution": "Resolution", "HeaderResolution": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435",
"HeaderVideo": "Video", "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e",
"HeaderRuntime": "Runtime", "HeaderRuntime": "\u0414\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c",
"HeaderCommunityRating": "Community rating", "HeaderCommunityRating": "\u041e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430",
"HeaderParentalRating": "Parental rating", "HeaderParentalRating": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f",
"HeaderReleaseDate": "Release date", "HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f\u0443\u0441\u043a\u0430",
"HeaderDateAdded": "Date added", "HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f",
"HeaderSeries": "Series", "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b",
"HeaderSeason": "Season", "HeaderSeason": "\u0421\u0435\u0437\u043e\u043d",
"HeaderSeasonNumber": "Season number", "HeaderSeasonNumber": "\u041d\u043e\u043c\u0435\u0440 \u0441\u0435\u0437\u043e\u043d\u0430",
"HeaderNetwork": "Network", "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u044c",
"HeaderYear": "Year", "HeaderYear": "\u0413\u043e\u0434",
"HeaderGameSystem": "Game system", "HeaderGameSystem": "\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430",
"HeaderPlayers": "Players", "HeaderPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438",
"HeaderEmbeddedImage": "Embedded image", "HeaderEmbeddedImage": "\u0412\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a",
"HeaderTrack": "Track", "HeaderTrack": "\u0414\u043e\u0440\u043e\u0436\u043a\u0430",
"HeaderDisc": "Disc" "HeaderDisc": "\u0414\u0438\u0441\u043a"
} }

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "Play", "ButtonPlay": "Play",
"ButtonEdit": "Edit", "ButtonEdit": "Edit",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -58,14 +58,14 @@
"ButtonMute": "Mute", "ButtonMute": "Mute",
"ButtonUnmute": "Unmute", "ButtonUnmute": "Unmute",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonNextTrack": "Next Track", "ButtonNextTrack": "Next track",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"ButtonPlay": "\u64ad\u653e", "ButtonPlay": "\u64ad\u653e",
"ButtonEdit": "\u7de8\u8f2f", "ButtonEdit": "\u7de8\u8f2f",
"ButtonQueue": "Queue", "ButtonQueue": "Queue",
"ButtonPlayTrailer": "Play trailer", "ButtonPlayTrailer": "Play trailer",
"ButtonPlaylist": "Playlist", "ButtonPlaylist": "Playlist",
"ButtonPreviousTrack": "Previous Track", "ButtonPreviousTrack": "Previous track",
"LabelEnabled": "Enabled", "LabelEnabled": "Enabled",
"LabelDisabled": "Disabled", "LabelDisabled": "Disabled",
"ButtonMoreInformation": "More Information", "ButtonMoreInformation": "More Information",

View file

@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -480,7 +480,7 @@
"HeaderProgram": "Program", "HeaderProgram": "Program",
"HeaderClients": "Klienti", "HeaderClients": "Klienti",
"LabelCompleted": "Hotovo", "LabelCompleted": "Hotovo",
"LabelFailed": "Failed", "LabelFailed": "Chyba",
"LabelSkipped": "P\u0159esko\u010deno", "LabelSkipped": "P\u0159esko\u010deno",
"HeaderEpisodeOrganization": "Organizace epizod", "HeaderEpisodeOrganization": "Organizace epizod",
"LabelSeries": "Series:", "LabelSeries": "Series:",
@ -630,8 +630,8 @@
"ButtonFullscreen": "Toggle fullscreen", "ButtonFullscreen": "Toggle fullscreen",
"ButtonScenes": "Sc\u00e9ny", "ButtonScenes": "Sc\u00e9ny",
"ButtonSubtitles": "Titulky", "ButtonSubtitles": "Titulky",
"ButtonAudioTracks": "Audio tracks", "ButtonAudioTracks": "Audio stopy",
"ButtonPreviousTrack": "Previous track", "ButtonPreviousTrack": "P\u0159edchod\u00ed stopa",
"ButtonNextTrack": "Next track", "ButtonNextTrack": "Next track",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonPause": "Pause", "ButtonPause": "Pause",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Spr\u00e1vce metadat", "HeaderMetadataManager": "Spr\u00e1vce metadat",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Ozna\u010dit jako p\u0159e\u010dten\u00e9", "ButtonMarkRead": "Ozna\u010dit jako p\u0159e\u010dten\u00e9",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Nejsledovan\u011bj\u0161\u00ed", "OptionCommunityMostWatchedSort": "Nejsledovan\u011bj\u0161\u00ed",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -627,10 +627,10 @@
"TabNowPlaying": "Spiler nu", "TabNowPlaying": "Spiler nu",
"TabNavigation": "Navigation", "TabNavigation": "Navigation",
"TabControls": "Controls", "TabControls": "Controls",
"ButtonFullscreen": "Toggle fullscreen", "ButtonFullscreen": "Skift til fuldsk\u00e6rm",
"ButtonScenes": "Scener", "ButtonScenes": "Scener",
"ButtonSubtitles": "Undertekster", "ButtonSubtitles": "Undertekster",
"ButtonAudioTracks": "Audio tracks", "ButtonAudioTracks": "Lyd filer",
"ButtonPreviousTrack": "Previous track", "ButtonPreviousTrack": "Previous track",
"ButtonNextTrack": "Next track", "ButtonNextTrack": "Next track",
"ButtonStop": "Stop", "ButtonStop": "Stop",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -480,10 +480,10 @@
"HeaderProgram": "Programm", "HeaderProgram": "Programm",
"HeaderClients": "Clients", "HeaderClients": "Clients",
"LabelCompleted": "Fertiggestellt", "LabelCompleted": "Fertiggestellt",
"LabelFailed": "Failed", "LabelFailed": "Gescheitert",
"LabelSkipped": "\u00dcbersprungen", "LabelSkipped": "\u00dcbersprungen",
"HeaderEpisodeOrganization": "Episodensortierung", "HeaderEpisodeOrganization": "Episodensortierung",
"LabelSeries": "Series:", "LabelSeries": "Serien:",
"LabelSeasonNumber": "Staffelnummer", "LabelSeasonNumber": "Staffelnummer",
"LabelEpisodeNumber": "Episodennummer", "LabelEpisodeNumber": "Episodennummer",
"LabelEndingEpisodeNumber": "Ending episode number", "LabelEndingEpisodeNumber": "Ending episode number",
@ -627,12 +627,12 @@
"TabNowPlaying": "Aktuelle Wiedergabe", "TabNowPlaying": "Aktuelle Wiedergabe",
"TabNavigation": "Navigation", "TabNavigation": "Navigation",
"TabControls": "Controls", "TabControls": "Controls",
"ButtonFullscreen": "Toggle fullscreen", "ButtonFullscreen": "Schalte Vollbild um",
"ButtonScenes": "Szenen", "ButtonScenes": "Szenen",
"ButtonSubtitles": "Untertitel", "ButtonSubtitles": "Untertitel",
"ButtonAudioTracks": "Audio tracks", "ButtonAudioTracks": "Audiospuren",
"ButtonPreviousTrack": "Previous track", "ButtonPreviousTrack": "Vorheriger Track",
"ButtonNextTrack": "Next track", "ButtonNextTrack": "N\u00e4chster Track",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections", "LabelGroupMoviesIntoCollections": "Gruppiere Filme in Collections",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadaten-Manager", "HeaderMetadataManager": "Metadaten-Manager",
"HeaderPreferences": "Einstellungen", "HeaderPreferences": "Einstellungen",
"MessageLoadingChannels": "Lade Channel Inhalt...", "MessageLoadingChannels": "Lade Channel Inhalt...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Als gelesen markieren", "ButtonMarkRead": "Als gelesen markieren",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Meistgesehen", "OptionCommunityMostWatchedSort": "Meistgesehen",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -480,10 +480,10 @@
"HeaderProgram": "Programa", "HeaderProgram": "Programa",
"HeaderClients": "Clientes", "HeaderClients": "Clientes",
"LabelCompleted": "Completado", "LabelCompleted": "Completado",
"LabelFailed": "Error", "LabelFailed": "Err\u00f3neo",
"LabelSkipped": "Omitido", "LabelSkipped": "Omitido",
"HeaderEpisodeOrganization": "Organizaci\u00f3n de episodios", "HeaderEpisodeOrganization": "Organizaci\u00f3n de episodios",
"LabelSeries": "Series:", "LabelSeries": "Serie:",
"LabelSeasonNumber": "Temporada n\u00famero:", "LabelSeasonNumber": "Temporada n\u00famero:",
"LabelEpisodeNumber": "Episodio n\u00famero:", "LabelEpisodeNumber": "Episodio n\u00famero:",
"LabelEndingEpisodeNumber": "N\u00famero episodio final:", "LabelEndingEpisodeNumber": "N\u00famero episodio final:",
@ -627,10 +627,10 @@
"TabNowPlaying": "Reproduciendo ahora", "TabNowPlaying": "Reproduciendo ahora",
"TabNavigation": "Navegaci\u00f3n", "TabNavigation": "Navegaci\u00f3n",
"TabControls": "Controles", "TabControls": "Controles",
"ButtonFullscreen": "Toggle fullscreen", "ButtonFullscreen": "Pantalla completa",
"ButtonScenes": "Escenas", "ButtonScenes": "Escenas",
"ButtonSubtitles": "Subt\u00edtulos", "ButtonSubtitles": "Subt\u00edtulos",
"ButtonAudioTracks": "Audio tracks", "ButtonAudioTracks": "Pistas de audio",
"ButtonPreviousTrack": "Pista anterior", "ButtonPreviousTrack": "Pista anterior",
"ButtonNextTrack": "Pista siguiente", "ButtonNextTrack": "Pista siguiente",
"ButtonStop": "Detener", "ButtonStop": "Detener",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferencias", "HeaderPreferences": "Preferencias",
"MessageLoadingChannels": "Cargando contenidos del canal...", "MessageLoadingChannels": "Cargando contenidos del canal...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marcar como le\u00eddo", "ButtonMarkRead": "Marcar como le\u00eddo",
"OptionDefaultSort": "Por defecto", "OptionDefaultSort": "Por defecto",
"OptionCommunityMostWatchedSort": "M\u00e1s visto", "OptionCommunityMostWatchedSort": "M\u00e1s visto",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -627,12 +627,12 @@
"TabNowPlaying": "Reproduci\u00e9ndo Ahora", "TabNowPlaying": "Reproduci\u00e9ndo Ahora",
"TabNavigation": "Navegaci\u00f3n", "TabNavigation": "Navegaci\u00f3n",
"TabControls": "Controles", "TabControls": "Controles",
"ButtonFullscreen": "Cambiar a pantalla completa", "ButtonFullscreen": "Alternar pantalla completa",
"ButtonScenes": "Escenas", "ButtonScenes": "Escenas",
"ButtonSubtitles": "Subt\u00edtulos", "ButtonSubtitles": "Subt\u00edtulos",
"ButtonAudioTracks": "Pistas de audio", "ButtonAudioTracks": "Pistas de audio",
"ButtonPreviousTrack": "Pista anterior", "ButtonPreviousTrack": "Pista Anterior",
"ButtonNextTrack": "Pista siguiente", "ButtonNextTrack": "Pista Siguiente",
"ButtonStop": "Detener", "ButtonStop": "Detener",
"ButtonPause": "Pausar", "ButtonPause": "Pausar",
"LabelGroupMoviesIntoCollections": "Agrupar pel\u00edculas en colecciones", "LabelGroupMoviesIntoCollections": "Agrupar pel\u00edculas en colecciones",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Administrador de Metadatos", "HeaderMetadataManager": "Administrador de Metadatos",
"HeaderPreferences": "Preferencias", "HeaderPreferences": "Preferencias",
"MessageLoadingChannels": "Cargando contenidos del canal...", "MessageLoadingChannels": "Cargando contenidos del canal...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marcar como Le\u00eddo", "ButtonMarkRead": "Marcar como Le\u00eddo",
"OptionDefaultSort": "Por defecto", "OptionDefaultSort": "Por defecto",
"OptionCommunityMostWatchedSort": "M\u00e1s Visto", "OptionCommunityMostWatchedSort": "M\u00e1s Visto",
@ -948,36 +949,38 @@
"OptionReportAlbums": "\u00c1lbums", "OptionReportAlbums": "\u00c1lbums",
"OptionReportAdultVideos": "Videos para Adultos", "OptionReportAdultVideos": "Videos para Adultos",
"ButtonMore": "M\u00e1s", "ButtonMore": "M\u00e1s",
"HeaderActivity": "Activity", "HeaderActivity": "Actividad",
"ScheduledTaskStartedWithName": "{0} started", "ScheduledTaskStartedWithName": "{0} Iniciado",
"ScheduledTaskCancelledWithName": "{0} was cancelled", "ScheduledTaskCancelledWithName": "{0} fue cancelado",
"ScheduledTaskCompletedWithName": "{0} completed", "ScheduledTaskCompletedWithName": "{0} completado",
"ScheduledTaskFailed": "Scheduled task completed", "ScheduledTaskFailed": "Tarea programada completada",
"PluginInstalledWithName": "{0} was installed", "PluginInstalledWithName": "{0} fue instalado",
"PluginUpdatedWithName": "{0} was updated", "PluginUpdatedWithName": "{0} fue actualizado",
"PluginUninstalledWithName": "{0} was uninstalled", "PluginUninstalledWithName": "{0} fue desinstalado",
"ScheduledTaskFailedWithName": "{0} failed", "ScheduledTaskFailedWithName": "{0} fall\u00f3",
"ItemAddedWithName": "{0} was added to the library", "ItemAddedWithName": "{0} fue agregado a la biblioteca",
"ItemRemovedWithName": "{0} was removed from the library", "ItemRemovedWithName": "{0} fue removido de la biblioteca",
"DeviceOnlineWithName": "{0} is connected", "DeviceOnlineWithName": "{0} est\u00e1 conectado",
"UserOnlineFromDevice": "{0} is online from {1}", "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}",
"DeviceOfflineWithName": "{0} has disconnected", "DeviceOfflineWithName": "{0} se ha desconectado",
"UserOfflineFromDevice": "{0} has disconnected from {1}", "UserOfflineFromDevice": "{0} se ha desconecatdo desde {1}",
"SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}",
"SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", "SubtitleDownloadFailureForItem": "Fall\u00f3 la descarga de subt\u00edtulos para {0}",
"LabelRunningTimeValue": "Running time: {0}", "LabelRunningTimeValue": "Duraci\u00f3n: {0}",
"LabelIpAddressValue": "Ip address: {0}", "LabelIpAddressValue": "Direcci\u00f3n IP: {0}",
"UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n del usuario {0}",
"UserCreatedWithName": "User {0} has been created", "UserCreatedWithName": "Se ha creado el usuario {0}",
"UserPasswordChangedWithName": "Password has been changed for user {0}", "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}",
"UserDeletedWithName": "User {0} has been deleted", "UserDeletedWithName": "Se ha eliminado al usuario {0}",
"MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor",
"MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor",
"MessageApplicationUpdated": "Media Browser Server has been updated", "MessageApplicationUpdated": "Se ha actualizado el Servidor de Media Browser",
"AuthenticationSucceededWithUserName": "{0} successfully authenticated", "AuthenticationSucceededWithUserName": "{0} autenticado con \u00e9xito",
"FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesi\u00f3n de {0}",
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} ha iniciado la reproducci\u00f3n de {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} ha detenido la reproducci\u00f3n de {1}",
"AppDeviceValues": "App: {0}, Device: {1}", "AppDeviceValues": "App: {0}, Dispositivo: {1}",
"ProviderValue": "Provider: {0}" "ProviderValue": "Proveedor: {0}",
"LabelChannelDownloadSizeLimit": "Download size limit (GB):",
"LabelChannelDownloadSizeLimitHelp": "Limit the size of the channel download folder"
} }

View file

@ -397,7 +397,7 @@
"HeaderCastCrew": "\u00c9quipe de tournage", "HeaderCastCrew": "\u00c9quipe de tournage",
"HeaderAdditionalParts": "Parties Additionelles", "HeaderAdditionalParts": "Parties Additionelles",
"ButtonSplitVersionsApart": "S\u00e9parer les versions", "ButtonSplitVersionsApart": "S\u00e9parer les versions",
"ButtonPlayTrailer": "Trailer", "ButtonPlayTrailer": "Bande-annonce",
"LabelMissing": "Manquant(s)", "LabelMissing": "Manquant(s)",
"LabelOffline": "Hors ligne", "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.", "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", "HeaderProgram": "Programme",
"HeaderClients": "Clients", "HeaderClients": "Clients",
"LabelCompleted": "Compl\u00e9t\u00e9", "LabelCompleted": "Compl\u00e9t\u00e9",
"LabelFailed": "Failed", "LabelFailed": "\u00c9chec",
"LabelSkipped": "Saut\u00e9", "LabelSkipped": "Saut\u00e9",
"HeaderEpisodeOrganization": "Organisation d'\u00e9pisodes", "HeaderEpisodeOrganization": "Organisation d'\u00e9pisodes",
"LabelSeries": "Series:", "LabelSeries": "S\u00e9ries:",
"LabelSeasonNumber": "Num\u00e9ro de saison", "LabelSeasonNumber": "Num\u00e9ro de saison",
"LabelEpisodeNumber": "Num\u00e9ro d'\u00e9pisode", "LabelEpisodeNumber": "Num\u00e9ro d'\u00e9pisode",
"LabelEndingEpisodeNumber": "Num\u00e9ro d'\u00e9pisode se terminant", "LabelEndingEpisodeNumber": "Num\u00e9ro d'\u00e9pisode se terminant",
@ -627,12 +627,12 @@
"TabNowPlaying": "En cours de lecture", "TabNowPlaying": "En cours de lecture",
"TabNavigation": "Navigation", "TabNavigation": "Navigation",
"TabControls": "Contr\u00f4les", "TabControls": "Contr\u00f4les",
"ButtonFullscreen": "Basculer en plein \u00e9cran", "ButtonFullscreen": "Plein \u00e9cran",
"ButtonScenes": "Sc\u00e8nes", "ButtonScenes": "Sc\u00e8nes",
"ButtonSubtitles": "Sous-titres", "ButtonSubtitles": "Sous-titres",
"ButtonAudioTracks": "Pistes audio", "ButtonAudioTracks": "Piste audio",
"ButtonPreviousTrack": "Previous track", "ButtonPreviousTrack": "Piste pr\u00e9c\u00e9dante",
"ButtonNextTrack": "Next track", "ButtonNextTrack": "Piste suivante",
"ButtonStop": "Arr\u00eat", "ButtonStop": "Arr\u00eat",
"ButtonPause": "Pause", "ButtonPause": "Pause",
"LabelGroupMoviesIntoCollections": "Grouper les films en collections", "LabelGroupMoviesIntoCollections": "Grouper les films en collections",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Gestionnaire de m\u00e9tadonn\u00e9es", "HeaderMetadataManager": "Gestionnaire de m\u00e9tadonn\u00e9es",
"HeaderPreferences": "Pr\u00e9f\u00e9rences", "HeaderPreferences": "Pr\u00e9f\u00e9rences",
"MessageLoadingChannels": "Chargement du contenu de la cha\u00eene...", "MessageLoadingChannels": "Chargement du contenu de la cha\u00eene...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Marquer lu", "ButtonMarkRead": "Marquer lu",
"OptionDefaultSort": "Par d\u00e9faut", "OptionDefaultSort": "Par d\u00e9faut",
"OptionCommunityMostWatchedSort": "Les plus \u00e9cout\u00e9s", "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.", "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.", "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.", "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", "HeaderWelcomeToMediaBrowserWebClient": "Bienvenue au client Web Media Browser",
"ButtonDismiss": "Annuler", "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. ", "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", "HeaderChapters": "Chapitres",
"HeaderResumeSettings": "Reprendre les param\u00e8tres", "HeaderResumeSettings": "Reprendre les param\u00e8tres",
"TabSync": "Sync", "TabSync": "Sync",
"TitleUsers": "Users", "TitleUsers": "Utilisateurs",
"LabelProtocol": "Protocol:", "LabelProtocol": "Protocol:",
"OptionProtocolHttp": "Http", "OptionProtocolHttp": "Http",
"OptionProtocolHls": "Http Live Streaming", "OptionProtocolHls": "Http Live Streaming",
"LabelContext": "Context:", "LabelContext": "Contexte:",
"OptionContextStreaming": "Streaming", "OptionContextStreaming": "Diffusion",
"OptionContextStatic": "Sync", "OptionContextStatic": "Sync",
"ButtonAddToPlaylist": "Add to playlist", "ButtonAddToPlaylist": "Ajouter \u00e0 la liste de lecture",
"TabPlaylists": "Playlists", "TabPlaylists": "Listes de lecture",
"ButtonClose": "Fermer", "ButtonClose": "Fermer",
"LabelAllLanguages": "All languages", "LabelAllLanguages": "Toutes les langues",
"HeaderBrowseOnlineImages": "Browse Online Images", "HeaderBrowseOnlineImages": "Parcourir les images en ligne",
"LabelSource": "Source:", "LabelSource": "Source:",
"OptionAll": "All", "OptionAll": "Tous",
"LabelImage": "Image:", "LabelImage": "Image:",
"ButtonBrowseImages": "Browse Images", "ButtonBrowseImages": "Parcourir les images:",
"HeaderImages": "Images", "HeaderImages": "Images",
"HeaderBackdrops": "Backdrops", "HeaderBackdrops": "Arri\u00e8re-plans",
"HeaderScreenshots": "Screenshots", "HeaderScreenshots": "Screenshots",
"HeaderAddUpdateImage": "Add\/Update Image", "HeaderAddUpdateImage": "Ajouter\/mettre \u00e0 jour image",
"LabelJpgPngOnly": "JPG\/PNG only", "LabelJpgPngOnly": "JPG\/PNG seulement",
"LabelImageType": "Image type:", "LabelImageType": "Type d'image:",
"OptionPrimary": "Primary", "OptionPrimary": "Principal",
"OptionArt": "Art", "OptionArt": "Art",
"OptionBox": "Box", "OptionBox": "Bo\u00eetier",
"OptionBoxRear": "Box rear", "OptionBoxRear": "Dos de bo\u00eetier",
"OptionDisc": "Disc", "OptionDisc": "Disque",
"OptionLogo": "Logo", "OptionLogo": "Logo",
"OptionMenu": "Menu", "OptionMenu": "Menu",
"OptionScreenshot": "Screenshot", "OptionScreenshot": "Screenshot",
"OptionLocked": "Locked", "OptionLocked": "Verrouill\u00e9",
"OptionUnidentified": "Unidentified", "OptionUnidentified": "Non identifi\u00e9",
"OptionMissingParentalRating": "Missing parental rating", "OptionMissingParentalRating": "Note de contr\u00f4le parental manquante",
"OptionStub": "Stub", "OptionStub": "Stub",
"HeaderEpisodes": "Episodes:", "HeaderEpisodes": "\u00c9pisodes:",
"OptionSeason0": "Season 0", "OptionSeason0": "Saison 0",
"LabelReport": "Report:", "LabelReport": "Rapport:",
"OptionReportSongs": "Songs", "OptionReportSongs": "Songs",
"OptionReportSeries": "Series", "OptionReportSeries": "Series",
"OptionReportSeasons": "Seasons", "OptionReportSeasons": "Seasons",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -397,7 +397,7 @@
"HeaderCastCrew": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd \u05d5\u05e6\u05d5\u05d5\u05ea", "HeaderCastCrew": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd \u05d5\u05e6\u05d5\u05d5\u05ea",
"HeaderAdditionalParts": "\u05d7\u05dc\u05e7\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd", "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", "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", "LabelMissing": "\u05d7\u05e1\u05e8",
"LabelOffline": "\u05dc\u05d0 \u05de\u05e7\u05d5\u05d5\u05df", "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.", "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", "HeaderProgram": "\u05ea\u05d5\u05db\u05e0\u05d4",
"HeaderClients": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", "HeaderClients": "\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd",
"LabelCompleted": "\u05d4\u05d5\u05e9\u05dc\u05dd", "LabelCompleted": "\u05d4\u05d5\u05e9\u05dc\u05dd",
"LabelFailed": "Failed", "LabelFailed": "\u05e0\u05db\u05e9\u05dc",
"LabelSkipped": "\u05d3\u05d5\u05dc\u05d2", "LabelSkipped": "\u05d3\u05d5\u05dc\u05d2",
"HeaderEpisodeOrganization": "\u05d0\u05d9\u05e8\u05d2\u05d5\u05df \u05e4\u05e8\u05e7\u05d9\u05dd", "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:", "LabelSeasonNumber": "\u05de\u05e1\u05e4\u05e8 \u05e2\u05d5\u05e0\u05d4:",
"LabelEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7:", "LabelEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e4\u05e8\u05e7:",
"LabelEndingEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d5\u05dd \u05e4\u05e8\u05e7:", "LabelEndingEpisodeNumber": "\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d5\u05dd \u05e4\u05e8\u05e7:",
@ -788,6 +788,7 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferences", "HeaderPreferences": "Preferences",
"MessageLoadingChannels": "Loading channel content...", "MessageLoadingChannels": "Loading channel content...",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Mark Read", "ButtonMarkRead": "Mark Read",
"OptionDefaultSort": "Default", "OptionDefaultSort": "Default",
"OptionCommunityMostWatchedSort": "Most Watched", "OptionCommunityMostWatchedSort": "Most Watched",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

View file

@ -480,10 +480,10 @@
"HeaderProgram": "Programma", "HeaderProgram": "Programma",
"HeaderClients": "Dispositivi", "HeaderClients": "Dispositivi",
"LabelCompleted": "Completato", "LabelCompleted": "Completato",
"LabelFailed": "Failed", "LabelFailed": "Fallito",
"LabelSkipped": "Saltato", "LabelSkipped": "Saltato",
"HeaderEpisodeOrganization": "Organizzazione Episodi", "HeaderEpisodeOrganization": "Organizzazione Episodi",
"LabelSeries": "Series:", "LabelSeries": "Serie:",
"LabelSeasonNumber": "Numero Stagione", "LabelSeasonNumber": "Numero Stagione",
"LabelEpisodeNumber": "Numero Episodio", "LabelEpisodeNumber": "Numero Episodio",
"LabelEndingEpisodeNumber": "Ultimo Episodio Numero", "LabelEndingEpisodeNumber": "Ultimo Episodio Numero",
@ -627,12 +627,12 @@
"TabNowPlaying": "In esecuzione", "TabNowPlaying": "In esecuzione",
"TabNavigation": "Navigazione", "TabNavigation": "Navigazione",
"TabControls": "Controlli", "TabControls": "Controlli",
"ButtonFullscreen": "Tutto Schermo", "ButtonFullscreen": "Schermo intero",
"ButtonScenes": "Scene", "ButtonScenes": "Scene",
"ButtonSubtitles": "Sottotitoli", "ButtonSubtitles": "Sottotitoli",
"ButtonAudioTracks": "Tracce audio", "ButtonAudioTracks": "Traccia Audio",
"ButtonPreviousTrack": "Previous track", "ButtonPreviousTrack": "Precedente traccia",
"ButtonNextTrack": "Next track", "ButtonNextTrack": "traccia Prossima",
"ButtonStop": "Stop", "ButtonStop": "Stop",
"ButtonPause": "Pausa", "ButtonPause": "Pausa",
"LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collection", "LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collection",
@ -788,14 +788,15 @@
"HeaderMetadataManager": "Metadata Manager", "HeaderMetadataManager": "Metadata Manager",
"HeaderPreferences": "Preferenze", "HeaderPreferences": "Preferenze",
"MessageLoadingChannels": "Sto caricando il contenuto del canale", "MessageLoadingChannels": "Sto caricando il contenuto del canale",
"MessageLoadingContent": "Loading content...",
"ButtonMarkRead": "Segna come letto", "ButtonMarkRead": "Segna come letto",
"OptionDefaultSort": "Predefinito", "OptionDefaultSort": "Predefinito",
"OptionCommunityMostWatchedSort": "Pi\u00f9 visti", "OptionCommunityMostWatchedSort": "Pi\u00f9 visti",
"TabNextUp": "Da vedere", "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.", "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.", "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.", "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": "This playlist is currently empty.", "MessageNoPlaylistItemsAvailable": "Questa playlist al momento \u00e8 vuota",
"HeaderWelcomeToMediaBrowserWebClient": "Benvenuti nel Media Browser Web client", "HeaderWelcomeToMediaBrowserWebClient": "Benvenuti nel Media Browser Web client",
"ButtonDismiss": "Dismetti", "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.", "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:", "LabelContext": "Contenuto:",
"OptionContextStreaming": "Streaming", "OptionContextStreaming": "Streaming",
"OptionContextStatic": "Sinc", "OptionContextStatic": "Sinc",
"ButtonAddToPlaylist": "Add to playlist", "ButtonAddToPlaylist": "Aggiungi alla playlist",
"TabPlaylists": "Playlists", "TabPlaylists": "Playlists",
"ButtonClose": "Chiudi", "ButtonClose": "Chiudi",
"LabelAllLanguages": "All languages", "LabelAllLanguages": "Tutte le lingue",
"HeaderBrowseOnlineImages": "Browse Online Images", "HeaderBrowseOnlineImages": "Sfoglia le immagini sul web",
"LabelSource": "Source:", "LabelSource": "Origine:",
"OptionAll": "All", "OptionAll": "Tutto",
"LabelImage": "Image:", "LabelImage": "Immagine:",
"ButtonBrowseImages": "Browse Images", "ButtonBrowseImages": "Sfoglia immagini",
"HeaderImages": "Images", "HeaderImages": "Immagini",
"HeaderBackdrops": "Backdrops", "HeaderBackdrops": "Sfondi",
"HeaderScreenshots": "Screenshots", "HeaderScreenshots": "Immagini",
"HeaderAddUpdateImage": "Add\/Update Image", "HeaderAddUpdateImage": "Aggiungi\/aggiorna immagine",
"LabelJpgPngOnly": "JPG\/PNG only", "LabelJpgPngOnly": "JPG\/PNG solamente",
"LabelImageType": "Image type:", "LabelImageType": "Tipo immagine",
"OptionPrimary": "Primary", "OptionPrimary": "Primaria",
"OptionArt": "Art", "OptionArt": "Art",
"OptionBox": "Box", "OptionBox": "Box",
"OptionBoxRear": "Box rear", "OptionBoxRear": "Box rear",
"OptionDisc": "Disc", "OptionDisc": "Disc",
"OptionLogo": "Logo", "OptionLogo": "Logo",
"OptionMenu": "Menu", "OptionMenu": "Menu",
"OptionScreenshot": "Screenshot", "OptionScreenshot": "Immagine",
"OptionLocked": "Locked", "OptionLocked": "Bloccato",
"OptionUnidentified": "Unidentified", "OptionUnidentified": "Non identificata",
"OptionMissingParentalRating": "Missing parental rating", "OptionMissingParentalRating": "Voto genitori mancante",
"OptionStub": "Stub", "OptionStub": "Stub",
"HeaderEpisodes": "Episodes:", "HeaderEpisodes": "Episodi:",
"OptionSeason0": "Season 0", "OptionSeason0": "Stagione 0",
"LabelReport": "Report:", "LabelReport": "Report:",
"OptionReportSongs": "Songs", "OptionReportSongs": "Canzoni",
"OptionReportSeries": "Series", "OptionReportSeries": "Series",
"OptionReportSeasons": "Seasons", "OptionReportSeasons": "Stagioni",
"OptionReportTrailers": "Trailers", "OptionReportTrailers": "Trailers",
"OptionReportMusicVideos": "Music videos", "OptionReportMusicVideos": "Video musicali",
"OptionReportMovies": "Movies", "OptionReportMovies": "Film",
"OptionReportHomeVideos": "Home videos", "OptionReportHomeVideos": "Video personali",
"OptionReportGames": "Games", "OptionReportGames": "Giochi",
"OptionReportEpisodes": "Episodes", "OptionReportEpisodes": "Episodi",
"OptionReportCollections": "Collections", "OptionReportCollections": "Collezioni",
"OptionReportBooks": "Books", "OptionReportBooks": "Libri",
"OptionReportArtists": "Artists", "OptionReportArtists": "Cantanti",
"OptionReportAlbums": "Albums", "OptionReportAlbums": "Albums",
"OptionReportAdultVideos": "Adult videos", "OptionReportAdultVideos": "Adult videos",
"ButtonMore": "Pi\u00f9 info...", "ButtonMore": "Pi\u00f9 info...",
@ -979,5 +980,7 @@
"UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStartedPlayingItemWithValues": "{0} has started playing {1}",
"UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}",
"AppDeviceValues": "App: {0}, Device: {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"
} }

Some files were not shown because too many files have changed in this diff Show more