From a7b0b601fa7a783e6b8dfbbc8c74485f53a58259 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 2 Oct 2017 16:18:27 -0400 Subject: [PATCH 01/62] 3.2.33.1 --- .../FFMpeg/FFMpegLoader.cs | 14 ++++++---- .../TV/TVSeriesManager.cs | 28 ++++++++++++++----- SharedVersion.cs | 2 +- 3 files changed, 30 insertions(+), 14 deletions(-) diff --git a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs index e266ea21b8..9f4cd05fa9 100644 --- a/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs +++ b/Emby.Server.Implementations/FFMpeg/FFMpegLoader.cs @@ -49,18 +49,20 @@ namespace Emby.Server.Implementations.FFMpeg var downloadInfo = _ffmpegInstallInfo; - var version = downloadInfo.Version; - - if (string.Equals(version, "path", StringComparison.OrdinalIgnoreCase)) + var prebuiltffmpeg = Path.Combine(_appPaths.ProgramSystemPath, downloadInfo.FFMpegFilename); + var prebuiltffprobe = Path.Combine(_appPaths.ProgramSystemPath, downloadInfo.FFProbeFilename); + if (_fileSystem.FileExists(prebuiltffmpeg) && _fileSystem.FileExists(prebuiltffprobe)) { return new FFMpegInfo { - ProbePath = downloadInfo.FFProbeFilename, - EncoderPath = downloadInfo.FFMpegFilename, - Version = version + ProbePath = prebuiltffprobe, + EncoderPath = prebuiltffmpeg, + Version = "external" }; } + var version = downloadInfo.Version; + if (string.Equals(version, "0", StringComparison.OrdinalIgnoreCase)) { return new FFMpegInfo(); diff --git a/Emby.Server.Implementations/TV/TVSeriesManager.cs b/Emby.Server.Implementations/TV/TVSeriesManager.cs index ec2d8c4fc4..d92245a677 100644 --- a/Emby.Server.Implementations/TV/TVSeriesManager.cs +++ b/Emby.Server.Implementations/TV/TVSeriesManager.cs @@ -36,8 +36,6 @@ namespace Emby.Server.Implementations.TV throw new ArgumentException("User not found"); } - var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId); - string presentationUniqueKey = null; int? limit = null; if (!string.IsNullOrWhiteSpace(request.SeriesId)) @@ -56,10 +54,26 @@ namespace Emby.Server.Implementations.TV return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request); } - var parents = user.RootFolder.GetChildren(user, true) - .Where(i => i is Folder) - .Where(i => !user.Configuration.LatestItemsExcludes.Contains(i.Id.ToString("N"))) - .ToList(); + var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId); + + List parents; + + if (parentIdGuid.HasValue) + { + var parent = _libraryManager.GetItemById(parentIdGuid.Value); + parents = new List(); + if (parent != null) + { + parents.Add(parent); + } + } + else + { + parents = user.RootFolder.GetChildren(user, true) + .Where(i => i is Folder) + .Where(i => !user.Configuration.LatestItemsExcludes.Contains(i.Id.ToString("N"))) + .ToList(); + } return GetNextUp(request, parents, dtoOptions); } @@ -88,7 +102,7 @@ namespace Emby.Server.Implementations.TV if (!string.IsNullOrWhiteSpace(presentationUniqueKey)) { - return GetResult(GetNextUpEpisodes(request, user, new [] { presentationUniqueKey }, dtoOptions), request); + return GetResult(GetNextUpEpisodes(request, user, new[] { presentationUniqueKey }, dtoOptions), request); } if (limit.HasValue) diff --git a/SharedVersion.cs b/SharedVersion.cs index ff7ab5136d..75e244625b 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.0")] +[assembly: AssemblyVersion("3.2.33.1")] From a5b82cd2ec9b03e949ab79791dc6c0469390c085 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 3 Oct 2017 14:39:37 -0400 Subject: [PATCH 02/62] remove unneeded async signatures --- .../Channels/ChannelManager.cs | 32 +++--- .../Collections/CollectionManager.cs | 4 +- .../IO/FileRefresher.cs | 17 +-- .../Library/LibraryManager.cs | 19 ++-- .../Library/LocalTrailerPostScanTask.cs | 7 +- .../Library/Resolvers/Movies/MovieResolver.cs | 2 +- .../Library/UserViewManager.cs | 10 +- .../LiveTv/LiveTvManager.cs | 69 ++++++------ .../Playlists/PlaylistManager.cs | 6 +- MediaBrowser.Api/ChannelService.cs | 10 +- MediaBrowser.Api/Images/ImageService.cs | 20 ++-- MediaBrowser.Api/Images/RemoteImageService.cs | 14 +-- MediaBrowser.Api/ItemUpdateService.cs | 11 +- MediaBrowser.Api/LiveTv/LiveTvService.cs | 14 +-- MediaBrowser.Api/VideosService.cs | 42 +++----- .../Channels/IChannelManager.cs | 5 +- MediaBrowser.Controller/Entities/BaseItem.cs | 45 ++++---- MediaBrowser.Controller/Entities/Folder.cs | 13 ++- .../Entities/IHasMetadata.cs | 11 +- MediaBrowser.Controller/Entities/User.cs | 3 +- .../Entities/UserViewBuilder.cs | 100 +++++++++--------- MediaBrowser.Controller/Entities/Video.cs | 33 +++--- .../Library/ILibraryManager.cs | 12 +-- .../Library/IUserViewManager.cs | 4 +- .../LiveTv/ILiveTvManager.cs | 20 +--- .../LiveTv/LiveTvAudioRecording.cs | 5 - .../LiveTv/LiveTvVideoRecording.cs | 5 - .../Providers/IProviderManager.cs | 8 +- .../Manager/MetadataService.cs | 4 +- .../Manager/ProviderManager.cs | 14 +-- .../TV/DummySeasonProvider.cs | 4 +- MediaBrowser.XbmcMetadata/EntryPoint.cs | 6 +- 32 files changed, 231 insertions(+), 338 deletions(-) diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs index d3950929d4..0036d19708 100644 --- a/Emby.Server.Implementations/Channels/ChannelManager.cs +++ b/Emby.Server.Implementations/Channels/ChannelManager.cs @@ -373,7 +373,7 @@ namespace Emby.Server.Implementations.Channels private async Task GetChannel(IChannel channelInfo, CancellationToken cancellationToken) { - var parentFolder = await GetInternalChannelFolder(cancellationToken).ConfigureAwait(false); + var parentFolder = GetInternalChannelFolder(cancellationToken); var parentFolderId = parentFolder.Id; var id = GetInternalChannelId(channelInfo.Name); @@ -434,7 +434,7 @@ namespace Emby.Server.Implementations.Channels } else if (forceUpdate) { - await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.None, cancellationToken); } await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem), cancellationToken); @@ -655,14 +655,12 @@ namespace Emby.Server.Implementations.Channels // Avoid implicitly captured closure var token = cancellationToken; - var itemTasks = items.Select(i => + var internalItems = items.Select(i => { var channelProvider = i.Item1; var internalChannelId = GetInternalChannelId(channelProvider.Name); return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token); - }); - - var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false); + }).ToArray(); internalItems = ApplyFilters(internalItems, query.Filters, user).ToArray(); RefreshIfNeeded(internalItems); @@ -802,14 +800,12 @@ namespace Emby.Server.Implementations.Channels // Avoid implicitly captured closure var token = cancellationToken; - var itemTasks = items.Select(i => + var internalItems = items.Select(i => { var channelProvider = i.Item1; var internalChannelId = GetInternalChannelId(channelProvider.Name); return GetChannelItemEntity(i.Item2, channelProvider, internalChannelId, token); - }); - - var internalItems = await Task.WhenAll(itemTasks).ConfigureAwait(false); + }).ToArray(); return new QueryResult { @@ -955,9 +951,7 @@ namespace Emby.Server.Implementations.Channels var providerTotalRecordCount = providerLimit.HasValue ? itemsResult.TotalRecordCount : null; - var tasks = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken)); - - var internalItems = await Task.WhenAll(tasks).ConfigureAwait(false); + var internalItems = itemsResult.Items.Select(i => GetChannelItemEntity(i, channelProvider, channel.Id, cancellationToken)).ToArray(); if (user != null) { @@ -1234,7 +1228,7 @@ namespace Emby.Server.Implementations.Channels return item; } - private async Task GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken) + private BaseItem GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Guid internalChannelId, CancellationToken cancellationToken) { BaseItem item; bool isNew; @@ -1399,7 +1393,7 @@ namespace Emby.Server.Implementations.Channels } else if (forceUpdate) { - await item.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.None, cancellationToken); } SaveMediaSources(item, info.MediaSources); @@ -1542,20 +1536,20 @@ namespace Emby.Server.Implementations.Channels return items; } - public async Task GetChannelFolder(string userId, CancellationToken cancellationToken) + public BaseItemDto GetChannelFolder(string userId, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId); - var folder = await GetInternalChannelFolder(cancellationToken).ConfigureAwait(false); + var folder = GetInternalChannelFolder(cancellationToken); return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user); } - public async Task GetInternalChannelFolder(CancellationToken cancellationToken) + public Folder GetInternalChannelFolder(CancellationToken cancellationToken) { var name = _localization.GetLocalizedString("ViewTypeChannels"); - return await _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken).ConfigureAwait(false); + return _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken); } } diff --git a/Emby.Server.Implementations/Collections/CollectionManager.cs b/Emby.Server.Implementations/Collections/CollectionManager.cs index 2e884e729c..c8e947fd7d 100644 --- a/Emby.Server.Implementations/Collections/CollectionManager.cs +++ b/Emby.Server.Implementations/Collections/CollectionManager.cs @@ -203,7 +203,7 @@ namespace Emby.Server.Implementations.Collections collection.UpdateRatingToContent(); - await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); _providerManager.QueueRefresh(collection.Id, refreshOptions, RefreshPriority.High); @@ -262,7 +262,7 @@ namespace Emby.Server.Implementations.Collections collection.UpdateRatingToContent(); - await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); _providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem), RefreshPriority.High); EventHelper.FireEventIfNotNull(ItemsRemovedFromCollection, this, new CollectionModifiedEventArgs diff --git a/Emby.Server.Implementations/IO/FileRefresher.cs b/Emby.Server.Implementations/IO/FileRefresher.cs index 315bee103e..85b8bddd28 100644 --- a/Emby.Server.Implementations/IO/FileRefresher.cs +++ b/Emby.Server.Implementations/IO/FileRefresher.cs @@ -154,20 +154,13 @@ namespace Emby.Server.Implementations.IO .DistinctBy(i => i.Id) .ToList(); - //foreach (var p in paths) - //{ - // Logger.Info(p + " reports change."); - //} - - // If the root folder changed, run the library task so the user can see it - if (itemsToRefresh.Any(i => i is AggregateFolder)) - { - LibraryManager.ValidateMediaLibrary(new SimpleProgress(), CancellationToken.None); - return; - } - foreach (var item in itemsToRefresh) { + if (item is AggregateFolder) + { + continue; + } + Logger.Info(item.Name + " (" + item.Path + ") will be refreshed."); try diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 85b91ac25a..a7b85ad428 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -738,8 +738,7 @@ namespace Emby.Server.Implementations.Library if (folder.ParentId != rootFolder.Id) { folder.ParentId = rootFolder.Id; - var task = folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None); - Task.WaitAll(task); + folder.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None); } rootFolder.AddVirtualChild(folder); @@ -1834,12 +1833,12 @@ namespace Emby.Server.Implementations.Library /// The update reason. /// The cancellation token. /// Task. - public async Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken) + public void UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken) { var locationType = item.LocationType; if (locationType != LocationType.Remote && locationType != LocationType.Virtual) { - await _providerManagerFactory().SaveMetadata(item, updateReason).ConfigureAwait(false); + _providerManagerFactory().SaveMetadata(item, updateReason); } item.DateLastSaved = DateTime.UtcNow; @@ -2053,7 +2052,7 @@ namespace Emby.Server.Implementations.Library return GetNamedView(user, name, null, viewType, sortName, cancellationToken); } - public async Task GetNamedView(string name, + public UserView GetNamedView(string name, string viewType, string sortName, CancellationToken cancellationToken) @@ -2100,7 +2099,7 @@ namespace Emby.Server.Implementations.Library if (refresh) { - await item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None); _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions(_fileSystem) { // Not sure why this is necessary but need to figure it out @@ -2241,7 +2240,7 @@ namespace Emby.Server.Implementations.Library return item; } - public async Task GetNamedView(string name, + public UserView GetNamedView(string name, string parentId, string viewType, string sortName, @@ -2294,7 +2293,7 @@ namespace Emby.Server.Implementations.Library if (!string.Equals(viewType, item.ViewType, StringComparison.OrdinalIgnoreCase)) { item.ViewType = viewType; - await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken); } var refresh = isNew || DateTime.UtcNow - item.DateLastRefreshed >= _viewRefreshInterval; @@ -2822,7 +2821,7 @@ namespace Emby.Server.Implementations.Library await _providerManagerFactory().SaveImage(item, url, image.Type, imageIndex, CancellationToken.None).ConfigureAwait(false); - await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); return item.GetImageInfo(image.Type, imageIndex); } @@ -2838,7 +2837,7 @@ namespace Emby.Server.Implementations.Library // Remove this image to prevent it from retrying over and over item.RemoveImage(image); - await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); throw new InvalidOperationException(); } diff --git a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs index 757e67eb49..4830da8fcf 100644 --- a/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs +++ b/Emby.Server.Implementations/Library/LocalTrailerPostScanTask.cs @@ -54,7 +54,7 @@ namespace Emby.Server.Implementations.Library { cancellationToken.ThrowIfCancellationRequested(); - await AssignTrailers(item, trailers).ConfigureAwait(false); + AssignTrailers(item, trailers); numComplete++; double percent = numComplete; @@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.Library progress.Report(100); } - private async Task AssignTrailers(IHasTrailers item, IEnumerable channelTrailers) + private void AssignTrailers(IHasTrailers item, IEnumerable channelTrailers) { if (item is Game) { @@ -98,8 +98,7 @@ namespace Emby.Server.Implementations.Library item.RemoteTrailerIds = trailerIds; var baseItem = (BaseItem)item; - await baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None) - .ConfigureAwait(false); + baseItem.UpdateToRepository(ItemUpdateType.MetadataImport, CancellationToken.None); } } } diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index cd12647540..82f42c7455 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -147,7 +147,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies Items = videos }; - var isInMixedFolder = resolverResult.Count > 1; + var isInMixedFolder = resolverResult.Count > 1 || (parent != null && parent.IsTopParent); foreach (var video in resolverResult) { diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs index 8c93772915..4ee0f553f3 100644 --- a/Emby.Server.Implementations/Library/UserViewManager.cs +++ b/Emby.Server.Implementations/Library/UserViewManager.cs @@ -102,7 +102,7 @@ namespace Emby.Server.Implementations.Library if (_config.Configuration.EnableFolderView) { var name = _localizationManager.GetLocalizedString("ViewType" + CollectionType.Folders); - list.Add(await _libraryManager.GetNamedView(name, CollectionType.Folders, string.Empty, cancellationToken).ConfigureAwait(false)); + list.Add(_libraryManager.GetNamedView(name, CollectionType.Folders, string.Empty, cancellationToken)); } if (query.IncludeExternalContent) @@ -117,7 +117,7 @@ namespace Emby.Server.Implementations.Library if (_config.Configuration.EnableChannelView && channels.Length > 0) { - list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false)); + list.Add(_channelManager.GetInternalChannelFolder(cancellationToken)); } else { @@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.Library if (_liveTvManager.GetEnabledUsers().Select(i => i.Id.ToString("N")).Contains(query.UserId)) { - list.Add(await _liveTvManager.GetInternalLiveTvFolder(CancellationToken.None).ConfigureAwait(false)); + list.Add(_liveTvManager.GetInternalLiveTvFolder(CancellationToken.None)); } } @@ -158,14 +158,14 @@ namespace Emby.Server.Implementations.Library .ToArray(); } - public Task GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken) + public UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken) { var uniqueId = parentId + "subview" + type; return _libraryManager.GetNamedView(name, parentId, type, sortName, uniqueId, cancellationToken); } - public Task GetUserSubView(string parentId, string type, string sortName, CancellationToken cancellationToken) + public UserView GetUserSubView(string parentId, string type, string sortName, CancellationToken cancellationToken) { var name = _localizationManager.GetLocalizedString("ViewType" + type); diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index 857afa3781..ec2704aa08 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -173,11 +173,11 @@ namespace Emby.Server.Implementations.LiveTv } } - public async Task> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken) + public QueryResult GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var topFolder = GetInternalLiveTvFolder(cancellationToken); var internalQuery = new InternalItemsQuery(user) { @@ -565,7 +565,7 @@ namespace Emby.Server.Implementations.LiveTv } else if (forceUpdate) { - await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken); } await item.RefreshMetadata(new MetadataRefreshOptions(_fileSystem) @@ -760,7 +760,7 @@ namespace Emby.Server.Implementations.LiveTv return new Tuple(item, isNew, isUpdated); } - private async Task CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken) + private Guid CreateRecordingRecord(RecordingInfo info, string serviceName, Guid parentFolderId, CancellationToken cancellationToken) { var isNew = false; @@ -892,7 +892,7 @@ namespace Emby.Server.Implementations.LiveTv else if (dataChanged || info.DateLastUpdated > recording.DateLastSaved || statusChanged) { metadataRefreshMode = MetadataRefreshMode.FullRefresh; - await _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + _libraryManager.UpdateItem(item, ItemUpdateType.MetadataImport, cancellationToken); } if (info.Status != RecordingStatus.InProgress) @@ -928,7 +928,7 @@ namespace Emby.Server.Implementations.LiveTv { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); - var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var topFolder = GetInternalLiveTvFolder(cancellationToken); if (query.OrderBy.Length == 0) { @@ -1007,11 +1007,11 @@ namespace Emby.Server.Implementations.LiveTv return result; } - public async Task> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) + public QueryResult GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) { var user = _userManager.GetUserById(query.UserId); - var topFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var topFolder = GetInternalLiveTvFolder(cancellationToken); var internalQuery = new InternalItemsQuery(user) { @@ -1072,11 +1072,11 @@ namespace Emby.Server.Implementations.LiveTv return result; } - public async Task> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) + public QueryResult GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken) { RemoveFields(options); - var internalResult = await GetRecommendedProgramsInternal(query, options, cancellationToken).ConfigureAwait(false); + var internalResult = GetRecommendedProgramsInternal(query, options, cancellationToken); var user = _userManager.GetUserById(query.UserId); @@ -1302,7 +1302,7 @@ namespace Emby.Server.Implementations.LiveTv var list = new List(); var numComplete = 0; - var parentFolder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var parentFolder = GetInternalLiveTvFolder(cancellationToken); var parentFolderId = parentFolder.Id; foreach (var channelInfo in allChannelsList) @@ -1425,7 +1425,7 @@ namespace Emby.Server.Implementations.LiveTv // TODO: Do this in bulk foreach (var program in updatedPrograms) { - await _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + _libraryManager.UpdateItem(program, ItemUpdateType.MetadataImport, cancellationToken); } currentChannel.IsMovie = isMovie; @@ -1434,7 +1434,7 @@ namespace Emby.Server.Implementations.LiveTv currentChannel.IsKids = isKids; currentChannel.IsSeries = iSSeries; - await currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken).ConfigureAwait(false); + currentChannel.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken); } catch (OperationCanceledException) { @@ -1549,9 +1549,8 @@ namespace Emby.Server.Implementations.LiveTv var results = await Task.WhenAll(tasks).ConfigureAwait(false); - var recordingTasks = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, internalLiveTvFolderId, cancellationToken)); - - var idList = await Task.WhenAll(recordingTasks).ConfigureAwait(false); + var idList = results.SelectMany(i => i.ToList()).Select(i => CreateRecordingRecord(i.Item1, i.Item2.Name, internalLiveTvFolderId, cancellationToken)) + .ToArray(); await CleanDatabaseInternal(idList, new[] { typeof(LiveTvVideoRecording).Name, typeof(LiveTvAudioRecording).Name }, new SimpleProgress(), cancellationToken).ConfigureAwait(false); @@ -1726,7 +1725,7 @@ namespace Emby.Server.Implementations.LiveTv return new QueryResult(); } - var folder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var folder = GetInternalLiveTvFolder(cancellationToken); // TODO: Figure out how to merge emby recordings + service recordings if (_services.Length == 1) @@ -2143,18 +2142,6 @@ namespace Emby.Server.Implementations.LiveTv }; } - public Task OnRecordingFileDeleted(BaseItem recording) - { - var service = GetService(recording); - - if (service is EmbyTV.EmbyTV) - { - return service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None); - } - - return Task.FromResult(true); - } - public async Task DeleteRecording(string recordingId) { var recording = await GetInternalRecording(recordingId, CancellationToken.None).ConfigureAwait(false); @@ -2171,13 +2158,17 @@ namespace Emby.Server.Implementations.LiveTv { var service = GetService(recording.ServiceName); - try - { - await service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None).ConfigureAwait(false); - } - catch (ResourceNotFoundException) + if (service != null) { + // handle the service being uninstalled and the item hanging around in the database + try + { + await service.DeleteRecordingAsync(GetItemExternalId(recording), CancellationToken.None).ConfigureAwait(false); + } + catch (ResourceNotFoundException) + { + } } _lastRecordingRefreshTime = DateTime.MinValue; @@ -2387,7 +2378,7 @@ namespace Emby.Server.Implementations.LiveTv MinEndDate = now, Limit = channelIds.Length, OrderBy = new[] { new Tuple(ItemSortBy.StartDate, SortOrder.Ascending) }, - TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") }, + TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Id.ToString("N") }, DtoOptions = options }) : new List(); @@ -2910,11 +2901,11 @@ namespace Emby.Server.Implementations.LiveTv return service.ResetTuner(parts[1], cancellationToken); } - public async Task GetLiveTvFolder(string userId, CancellationToken cancellationToken) + public BaseItemDto GetLiveTvFolder(string userId, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(userId) ? null : _userManager.GetUserById(userId); - var folder = await GetInternalLiveTvFolder(cancellationToken).ConfigureAwait(false); + var folder = GetInternalLiveTvFolder(cancellationToken); return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user); } @@ -2930,10 +2921,10 @@ namespace Emby.Server.Implementations.LiveTv options.Fields = fields.ToArray(fields.Count); } - public async Task GetInternalLiveTvFolder(CancellationToken cancellationToken) + public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken) { var name = _localization.GetLocalizedString("ViewTypeLiveTV"); - return await _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken).ConfigureAwait(false); + return _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken); } public async Task SaveTunerHost(TunerHostInfo info, bool dataSourceChanged = true) diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs index 87832e7dda..f268e9c0c1 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs @@ -209,7 +209,7 @@ namespace Emby.Server.Implementations.Playlists newList.AddRange(list); playlist.LinkedChildren = newList.ToArray(newList.Count); - await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); _providerManager.QueueRefresh(playlist.Id, new MetadataRefreshOptions(_fileSystem) { @@ -237,7 +237,7 @@ namespace Emby.Server.Implementations.Playlists .Select(i => i.Item1) .ToArray(); - await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); _providerManager.QueueRefresh(playlist.Id, new MetadataRefreshOptions(_fileSystem) { @@ -281,7 +281,7 @@ namespace Emby.Server.Implementations.Playlists playlist.LinkedChildren = newList.ToArray(newList.Count); - await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); } public Folder GetPlaylistsFolder(string userId) diff --git a/MediaBrowser.Api/ChannelService.cs b/MediaBrowser.Api/ChannelService.cs index d64bf7ec77..2e8eb9e07d 100644 --- a/MediaBrowser.Api/ChannelService.cs +++ b/MediaBrowser.Api/ChannelService.cs @@ -101,7 +101,7 @@ namespace MediaBrowser.Api [ApiMember(Name = "Fields", Description = "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string Fields { get; set; } - + /// /// Gets the filters. /// @@ -160,7 +160,7 @@ namespace MediaBrowser.Api [ApiMember(Name = "ChannelIds", Description = "Optional. Specify one or more channel id's, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string ChannelIds { get; set; } - + /// /// Gets the filters. /// @@ -177,7 +177,7 @@ namespace MediaBrowser.Api return val.Split(',').Select(v => (ItemFilter)Enum.Parse(typeof(ItemFilter), v, true)); } } - + [Route("/Channels/Folder", "GET", Summary = "Gets the users channel folder, along with configured images")] public class GetChannelFolder : IReturn { @@ -209,9 +209,9 @@ namespace MediaBrowser.Api return ToOptimizedResult(result); } - public async Task Get(GetChannelFolder request) + public object Get(GetChannelFolder request) { - return ToOptimizedResult(await _channelManager.GetChannelFolder(request.UserId, CancellationToken.None).ConfigureAwait(false)); + return ToOptimizedResult(_channelManager.GetChannelFolder(request.UserId, CancellationToken.None)); } public async Task Get(GetChannels request) diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs index f8481517db..72e4fe224b 100644 --- a/MediaBrowser.Api/Images/ImageService.cs +++ b/MediaBrowser.Api/Images/ImageService.cs @@ -471,9 +471,7 @@ namespace MediaBrowser.Api.Images var item = _userManager.GetUserById(userId); - var task = item.DeleteImage(request.Type, request.Index ?? 0); - - Task.WaitAll(task); + item.DeleteImage(request.Type, request.Index ?? 0); } /// @@ -484,9 +482,7 @@ namespace MediaBrowser.Api.Images { var item = _libraryManager.GetItemById(request.Id); - var task = item.DeleteImage(request.Type, request.Index ?? 0); - - Task.WaitAll(task); + item.DeleteImage(request.Type, request.Index ?? 0); } /// @@ -497,9 +493,7 @@ namespace MediaBrowser.Api.Images { var item = _libraryManager.GetItemById(request.Id); - var task = UpdateItemIndex(item, request.Type, request.Index, request.NewIndex); - - Task.WaitAll(task); + UpdateItemIndex(item, request.Type, request.Index, request.NewIndex); } /// @@ -510,9 +504,9 @@ namespace MediaBrowser.Api.Images /// Index of the current. /// The new index. /// Task. - private Task UpdateItemIndex(IHasMetadata item, ImageType type, int currentIndex, int newIndex) + private void UpdateItemIndex(IHasMetadata item, ImageType type, int currentIndex, int newIndex) { - return item.SwapImages(type, currentIndex, newIndex); + item.SwapImages(type, currentIndex, newIndex); } /// @@ -558,7 +552,7 @@ namespace MediaBrowser.Api.Images var supportedImageEnhancers = request.EnableImageEnhancers ? _imageProcessor.GetSupportedEnhancers(item, request.Type) : new List(); - var cropwhitespace = request.Type == ImageType.Logo || + var cropwhitespace = request.Type == ImageType.Logo || request.Type == ImageType.Art || (request.Type == ImageType.Primary && item is LiveTvChannel); @@ -733,7 +727,7 @@ namespace MediaBrowser.Api.Images await _providerManager.SaveImage(entity, memoryStream, mimeType, imageType, null, CancellationToken.None).ConfigureAwait(false); - await entity.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); + entity.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } } } diff --git a/MediaBrowser.Api/Images/RemoteImageService.cs b/MediaBrowser.Api/Images/RemoteImageService.cs index 3512a526ba..413762a5cb 100644 --- a/MediaBrowser.Api/Images/RemoteImageService.cs +++ b/MediaBrowser.Api/Images/RemoteImageService.cs @@ -84,7 +84,7 @@ namespace MediaBrowser.Api.Images } [Route("/Items/{Id}/RemoteImages/Download", "POST", Summary = "Downloads a remote image for an item")] - [Authenticated(Roles="Admin")] + [Authenticated(Roles = "Admin")] public class DownloadRemoteImage : BaseDownloadRemoteImage { /// @@ -207,7 +207,7 @@ namespace MediaBrowser.Api.Images { await _providerManager.SaveImage(item, request.ImageUrl, request.Type, null, CancellationToken.None).ConfigureAwait(false); - await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } /// @@ -232,9 +232,9 @@ namespace MediaBrowser.Api.Images contentPath = _fileSystem.ReadAllText(pointerCachePath); if (_fileSystem.FileExists(contentPath)) - { - return await ResultFactory.GetStaticFileResult(Request, contentPath).ConfigureAwait(false); - } + { + return await ResultFactory.GetStaticFileResult(Request, contentPath).ConfigureAwait(false); + } } catch (FileNotFoundException) { @@ -273,7 +273,7 @@ namespace MediaBrowser.Api.Images var fullCachePath = GetFullCachePath(urlHash + "." + ext); - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(fullCachePath)); + _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(fullCachePath)); using (var stream = result.Content) { using (var filestream = _fileSystem.GetFileStream(fullCachePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, true)) @@ -282,7 +282,7 @@ namespace MediaBrowser.Api.Images } } - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(pointerCachePath)); + _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(pointerCachePath)); _fileSystem.WriteAllText(pointerCachePath, fullCachePath); } diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 53a67ff712..90cf2d1d1e 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -193,13 +193,6 @@ namespace MediaBrowser.Api } public void Post(UpdateItem request) - { - var task = UpdateItem(request); - - Task.WaitAll(task); - } - - private async Task UpdateItem(UpdateItem request) { var item = _libraryManager.GetItemById(request.ItemId); @@ -216,7 +209,7 @@ namespace MediaBrowser.Api item.OnMetadataChanged(); - await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); if (isLockedChanged && item.IsFolder) { @@ -225,7 +218,7 @@ namespace MediaBrowser.Api foreach (var child in folder.GetRecursiveChildren()) { child.IsLocked = newLockData; - await child.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + child.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); } } } diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index 36bcee913f..f46c3e50f6 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -892,11 +892,11 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedSerializedResultUsingCache(info); } - public async Task Get(GetChannels request) + public object Get(GetChannels request) { var options = GetDtoOptions(_authContext, request); - var channelResult = await _liveTvManager.GetInternalChannels(new LiveTvChannelQuery + var channelResult = _liveTvManager.GetInternalChannels(new LiveTvChannelQuery { ChannelType = request.Type, UserId = request.UserId, @@ -915,7 +915,7 @@ namespace MediaBrowser.Api.LiveTv SortOrder = request.SortOrder ?? SortOrder.Ascending, AddCurrentProgram = request.AddCurrentProgram - }, options, CancellationToken.None).ConfigureAwait(false); + }, options, CancellationToken.None); var user = string.IsNullOrEmpty(request.UserId) ? null : _userManager.GetUserById(request.UserId); @@ -958,9 +958,9 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedSerializedResultUsingCache(result); } - public async Task Get(GetLiveTvFolder request) + public object Get(GetLiveTvFolder request) { - return ToOptimizedResult(await _liveTvManager.GetLiveTvFolder(request.UserId, CancellationToken.None).ConfigureAwait(false)); + return ToOptimizedResult(_liveTvManager.GetLiveTvFolder(request.UserId, CancellationToken.None)); } public async Task Get(GetPrograms request) @@ -1020,7 +1020,7 @@ namespace MediaBrowser.Api.LiveTv return ToOptimizedResult(result); } - public async Task Get(GetRecommendedPrograms request) + public object Get(GetRecommendedPrograms request) { var query = new RecommendedProgramQuery { @@ -1036,7 +1036,7 @@ namespace MediaBrowser.Api.LiveTv EnableTotalRecordCount = request.EnableTotalRecordCount }; - var result = await _liveTvManager.GetRecommendedPrograms(query, GetDtoOptions(_authContext, request), CancellationToken.None).ConfigureAwait(false); + var result = _liveTvManager.GetRecommendedPrograms(query, GetDtoOptions(_authContext, request), CancellationToken.None); return ToOptimizedResult(result); } diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs index 3bd0497f7e..3f840dbfa3 100644 --- a/MediaBrowser.Api/VideosService.cs +++ b/MediaBrowser.Api/VideosService.cs @@ -109,13 +109,6 @@ namespace MediaBrowser.Api } public void Delete(DeleteAlternateSources request) - { - var task = DeleteAsync(request); - - Task.WaitAll(task); - } - - public async Task DeleteAsync(DeleteAlternateSources request) { var video = (Video)_libraryManager.GetItemById(request.Id); @@ -123,21 +116,14 @@ namespace MediaBrowser.Api { link.PrimaryVersionId = null; - await link.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + link.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); } video.LinkedAlternateVersions = Video.EmptyLinkedChildArray; - await video.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + video.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); } public void Post(MergeVersions request) - { - var task = PostAsync(request); - - Task.WaitAll(task); - } - - public async Task PostAsync(MergeVersions request) { var items = request.Ids.Split(',') .Select(i => _libraryManager.GetItemById(i)) @@ -162,19 +148,19 @@ namespace MediaBrowser.Api if (primaryVersion == null) { primaryVersion = items.OrderBy(i => - { - if (i.Video3DFormat.HasValue) { - return 1; - } + if (i.Video3DFormat.HasValue) + { + return 1; + } - if (i.VideoType != Model.Entities.VideoType.VideoFile) - { - return 1; - } + if (i.VideoType != Model.Entities.VideoType.VideoFile) + { + return 1; + } - return 0; - }) + return 0; + }) .ThenByDescending(i => { var stream = i.GetDefaultVideoStream(); @@ -190,7 +176,7 @@ namespace MediaBrowser.Api { item.PrimaryVersionId = primaryVersion.Id.ToString("N"); - await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); list.Add(new LinkedChild { @@ -201,7 +187,7 @@ namespace MediaBrowser.Api primaryVersion.LinkedAlternateVersions = list.ToArray(); - await primaryVersion.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); + primaryVersion.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); } } } diff --git a/MediaBrowser.Controller/Channels/IChannelManager.cs b/MediaBrowser.Controller/Channels/IChannelManager.cs index 46e55a21ce..37fc892b36 100644 --- a/MediaBrowser.Controller/Channels/IChannelManager.cs +++ b/MediaBrowser.Controller/Channels/IChannelManager.cs @@ -117,14 +117,13 @@ namespace MediaBrowser.Controller.Channels /// /// The cancellation token. /// BaseItemDto. - Task GetInternalChannelFolder(CancellationToken cancellationToken); + Folder GetInternalChannelFolder(CancellationToken cancellationToken); /// /// Gets the channel folder. /// /// The user identifier. /// The cancellation token. - /// BaseItemDto. - Task GetChannelFolder(string userId, CancellationToken cancellationToken); + BaseItemDto GetChannelFolder(string userId, CancellationToken cancellationToken); } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 502ba6c60e..46c037a44d 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1281,8 +1281,8 @@ namespace MediaBrowser.Controller.Entities { var subOptions = new MetadataRefreshOptions(options); - if (!i.ExtraType.HasValue || - i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong || + if (!i.ExtraType.HasValue || + i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong || i.OwnerId != ownerId || i.ParentId != Guid.Empty) { @@ -1356,14 +1356,20 @@ namespace MediaBrowser.Controller.Entities internal virtual bool IsValidFromResolver(BaseItem newItem) { - var current = this; + return true; + } - if (current.IsInMixedFolder != newItem.IsInMixedFolder) + internal virtual ItemUpdateType UpdateFromResolvedItem(BaseItem newItem) + { + var updateType = ItemUpdateType.None; + + if (IsInMixedFolder != newItem.IsInMixedFolder) { - return false; + IsInMixedFolder = newItem.IsInMixedFolder; + updateType |= ItemUpdateType.MetadataImport; } - return true; + return updateType; } public void AfterMetadataRefresh() @@ -1966,14 +1972,14 @@ namespace MediaBrowser.Controller.Entities /// The type. /// The index. /// Task. - public Task DeleteImage(ImageType type, int index) + public void DeleteImage(ImageType type, int index) { var info = GetImageInfo(type, index); if (info == null) { // Nothing to do - return Task.FromResult(true); + return; } // Remove it from the item @@ -1984,7 +1990,7 @@ namespace MediaBrowser.Controller.Entities FileSystem.DeleteFile(info.Path); } - return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); + UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } public void RemoveImage(ItemImageInfo image) @@ -1997,9 +2003,9 @@ namespace MediaBrowser.Controller.Entities ImageInfos = ImageInfos.Except(deletedImages).ToArray(); } - public virtual Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) + public virtual void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) { - return LibraryManager.UpdateItem(this, updateReason, cancellationToken); + LibraryManager.UpdateItem(this, updateReason, cancellationToken); } /// @@ -2209,7 +2215,7 @@ namespace MediaBrowser.Controller.Entities return type == ImageType.Backdrop || type == ImageType.Screenshot || type == ImageType.Chapter; } - public Task SwapImages(ImageType type, int index1, int index2) + public void SwapImages(ImageType type, int index1, int index2) { if (!AllowsMultipleImages(type)) { @@ -2222,13 +2228,13 @@ namespace MediaBrowser.Controller.Entities if (info1 == null || info2 == null) { // Nothing to do - return Task.FromResult(true); + return; } if (!info1.IsLocalFile || !info2.IsLocalFile) { // TODO: Not supported yet - return Task.FromResult(true); + return; } var path1 = info1.Path; @@ -2240,7 +2246,7 @@ namespace MediaBrowser.Controller.Entities info1.DateModified = FileSystem.GetLastWriteTimeUtc(info1.Path); info2.DateModified = FileSystem.GetLastWriteTimeUtc(info2.Path); - return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); + UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } public virtual bool IsPlayed(User user) @@ -2526,15 +2532,6 @@ namespace MediaBrowser.Controller.Entities return LibraryManager.DeleteItem(this, options); } - public virtual Task OnFileDeleted() - { - // Remove from database - return Delete(new DeleteOptions - { - DeleteFileLocation = false - }); - } - public virtual List GetRelatedUrls() { return new List(); diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 6d88f70152..ce7145a791 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -328,11 +328,6 @@ namespace MediaBrowser.Controller.Entities return dictionary; } - private bool IsValidFromResolver(BaseItem current, BaseItem newItem) - { - return current.IsValidFromResolver(newItem); - } - protected override void TriggerOnRefreshStart() { } @@ -421,10 +416,15 @@ namespace MediaBrowser.Controller.Entities { BaseItem currentChild; - if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child)) + if (currentChildren.TryGetValue(child.Id, out currentChild) && currentChild.IsValidFromResolver(child)) { validChildren.Add(currentChild); + if (currentChild.UpdateFromResolvedItem(child) > ItemUpdateType.None) + { + currentChild.UpdateToRepository(ItemUpdateType.MetadataImport, cancellationToken); + } + continue; } @@ -542,7 +542,6 @@ namespace MediaBrowser.Controller.Entities if (validChildrenNeedGeneration) { validChildren = Children.ToList(); - validChildrenNeedGeneration = false; } await RefreshMetadataRecursive(validChildren, refreshOptions, recursive, innerProgress, cancellationToken); diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs index 4146686b21..b7d31b4d6a 100644 --- a/MediaBrowser.Controller/Entities/IHasMetadata.cs +++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs @@ -151,11 +151,7 @@ namespace MediaBrowser.Controller.Entities /// /// Swaps the images. /// - /// The type. - /// The index1. - /// The index2. - /// Task. - Task SwapImages(ImageType type, int index1, int index2); + void SwapImages(ImageType type, int index1, int index2); /// /// Gets or sets the primary image path. @@ -249,10 +245,7 @@ namespace MediaBrowser.Controller.Entities /// /// Updates to repository. /// - /// The update reason. - /// The cancellation token. - /// Task. - Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken); + void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken); /// /// Sets the image. diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs index 36bbf6886a..821327b7f3 100644 --- a/MediaBrowser.Controller/Entities/User.cs +++ b/MediaBrowser.Controller/Entities/User.cs @@ -235,10 +235,9 @@ namespace MediaBrowser.Controller.Entities }, CancellationToken.None); } - public override Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) + public override void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) { UserManager.UpdateUser(this); - return Task.FromResult(true); } /// diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index 43adc4af68..acc452fbc3 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -78,26 +78,26 @@ namespace MediaBrowser.Controller.Entities case SpecialFolder.LiveTvChannels: { - var result = await _liveTvManager.GetInternalChannels(new LiveTvChannelQuery + var result = _liveTvManager.GetInternalChannels(new LiveTvChannelQuery { UserId = query.User.Id.ToString("N"), Limit = query.Limit, StartIndex = query.StartIndex - }, new DtoOptions(), CancellationToken.None).ConfigureAwait(false); + }, new DtoOptions(), CancellationToken.None); return GetResult(result); } case SpecialFolder.LiveTvNowPlaying: { - var result = await _liveTvManager.GetRecommendedProgramsInternal(new RecommendedProgramQuery + var result = _liveTvManager.GetRecommendedProgramsInternal(new RecommendedProgramQuery { UserId = query.User.Id.ToString("N"), Limit = query.Limit, IsAiring = true - }, new Dto.DtoOptions(), CancellationToken.None).ConfigureAwait(false); + }, new Dto.DtoOptions(), CancellationToken.None); return GetResult(result); } @@ -142,22 +142,22 @@ namespace MediaBrowser.Controller.Entities return GetResult(user.RootFolder.GetChildren(user, true), queryParent, query); case CollectionType.Playlists: - return GetPlaylistsView(queryParent, user, query); + return GetPlaylistsView(queryParent, user, query); case CollectionType.BoxSets: return GetBoxsetView(queryParent, user, query); case CollectionType.TvShows: - return await GetTvView(queryParent, user, query).ConfigureAwait(false); + return GetTvView(queryParent, user, query); case CollectionType.Movies: - return await GetMovieFolders(queryParent, user, query).ConfigureAwait(false); + return GetMovieFolders(queryParent, user, query); case SpecialFolder.TvShowSeries: return GetTvSeries(queryParent, user, query); case SpecialFolder.TvGenres: - return await GetTvGenres(queryParent, user, query).ConfigureAwait(false); + return GetTvGenres(queryParent, user, query); case SpecialFolder.TvGenre: return GetTvGenreItems(queryParent, displayParent, user, query); @@ -178,10 +178,10 @@ namespace MediaBrowser.Controller.Entities return GetMovieLatest(queryParent, user, query); case SpecialFolder.MovieGenres: - return await GetMovieGenres(queryParent, user, query).ConfigureAwait(false); + return GetMovieGenres(queryParent, user, query); case SpecialFolder.MovieGenre: - return GetMovieGenreItems(queryParent, displayParent, user, query); + return GetMovieGenreItems(queryParent, displayParent, user, query); case SpecialFolder.MovieResume: return GetMovieResume(queryParent, user, query); @@ -199,7 +199,7 @@ namespace MediaBrowser.Controller.Entities return GetFavoriteSeries(queryParent, user, query); case CollectionType.Music: - return await GetMusicFolders(queryParent, user, query).ConfigureAwait(false); + return GetMusicFolders(queryParent, user, query); case SpecialFolder.MusicGenres: return GetMusicGenres(queryParent, user, query); @@ -223,7 +223,7 @@ namespace MediaBrowser.Controller.Entities return GetMusicSongs(queryParent, user, query); case SpecialFolder.MusicFavorites: - return await GetMusicFavorites(queryParent, user, query).ConfigureAwait(false); + return GetMusicFavorites(queryParent, user, query); case SpecialFolder.MusicFavoriteAlbums: return GetFavoriteAlbums(queryParent, user, query); @@ -245,7 +245,7 @@ namespace MediaBrowser.Controller.Entities } } - private async Task> GetMusicFolders(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetMusicFolders(Folder parent, User user, InternalItemsQuery query) { if (query.Recursive) { @@ -262,25 +262,25 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(await GetUserView(SpecialFolder.MusicLatest, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicPlaylists, "1", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicAlbums, "2", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, "3", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicArtists, "4", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicSongs, "5", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicGenres, "6", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicFavorites, "7", parent).ConfigureAwait(false)); + list.Add(GetUserView(SpecialFolder.MusicLatest, "0", parent)); + list.Add(GetUserView(SpecialFolder.MusicPlaylists, "1", parent)); + list.Add(GetUserView(SpecialFolder.MusicAlbums, "2", parent)); + list.Add(GetUserView(SpecialFolder.MusicAlbumArtists, "3", parent)); + list.Add(GetUserView(SpecialFolder.MusicArtists, "4", parent)); + list.Add(GetUserView(SpecialFolder.MusicSongs, "5", parent)); + list.Add(GetUserView(SpecialFolder.MusicGenres, "6", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavorites, "7", parent)); return GetResult(list, parent, query); } - private async Task> GetMusicFavorites(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetMusicFavorites(Folder parent, User user, InternalItemsQuery query) { var list = new List(); - list.Add(await GetUserView(SpecialFolder.MusicFavoriteAlbums, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicFavoriteArtists, "1", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MusicFavoriteSongs, "2", parent).ConfigureAwait(false)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteAlbums, "0", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteArtists, "1", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteSongs, "2", parent)); return GetResult(list, parent, query); } @@ -426,7 +426,7 @@ namespace MediaBrowser.Controller.Entities return 50; } - private async Task> GetMovieFolders(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetMovieFolders(Folder parent, User user, InternalItemsQuery query) { if (query.Recursive) { @@ -443,12 +443,12 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(await GetUserView(SpecialFolder.MovieResume, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MovieLatest, "1", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MovieMovies, "2", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MovieCollections, "3", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MovieFavorites, "4", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.MovieGenres, "5", parent).ConfigureAwait(false)); + list.Add(GetUserView(SpecialFolder.MovieResume, "0", parent)); + list.Add(GetUserView(SpecialFolder.MovieLatest, "1", parent)); + list.Add(GetUserView(SpecialFolder.MovieMovies, "2", parent)); + list.Add(GetUserView(SpecialFolder.MovieCollections, "3", parent)); + list.Add(GetUserView(SpecialFolder.MovieFavorites, "4", parent)); + list.Add(GetUserView(SpecialFolder.MovieGenres, "5", parent)); return GetResult(list, parent, query); } @@ -538,9 +538,9 @@ namespace MediaBrowser.Controller.Entities }; } - private async Task> GetMovieGenres(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetMovieGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + var genres = parent.QueryRecursive(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Movie).Name }, Recursive = true, @@ -566,8 +566,6 @@ namespace MediaBrowser.Controller.Entities .Where(i => i != null) .Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent)); - var genres = await Task.WhenAll(tasks).ConfigureAwait(false); - return GetResult(genres, parent, query); } @@ -598,7 +596,7 @@ namespace MediaBrowser.Controller.Entities return _libraryManager.GetItemsResult(query); } - private async Task> GetTvView(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetTvView(Folder parent, User user, InternalItemsQuery query) { if (query.Recursive) { @@ -615,13 +613,13 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(await GetUserView(SpecialFolder.TvResume, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvNextUp, "1", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvLatest, "2", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvShowSeries, "3", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvFavoriteSeries, "4", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvFavoriteEpisodes, "5", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.TvGenres, "6", parent).ConfigureAwait(false)); + list.Add(GetUserView(SpecialFolder.TvResume, "0", parent)); + list.Add(GetUserView(SpecialFolder.TvNextUp, "1", parent)); + list.Add(GetUserView(SpecialFolder.TvLatest, "2", parent)); + list.Add(GetUserView(SpecialFolder.TvShowSeries, "3", parent)); + list.Add(GetUserView(SpecialFolder.TvFavoriteSeries, "4", parent)); + list.Add(GetUserView(SpecialFolder.TvFavoriteEpisodes, "5", parent)); + list.Add(GetUserView(SpecialFolder.TvGenres, "6", parent)); return GetResult(list, parent, query); } @@ -679,9 +677,9 @@ namespace MediaBrowser.Controller.Entities return _libraryManager.GetItemsResult(query); } - private async Task> GetTvGenres(Folder parent, User user, InternalItemsQuery query) + private QueryResult GetTvGenres(Folder parent, User user, InternalItemsQuery query) { - var tasks = parent.QueryRecursive(new InternalItemsQuery(user) + var genres = parent.QueryRecursive(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Series).Name }, Recursive = true, @@ -707,8 +705,6 @@ namespace MediaBrowser.Controller.Entities .Where(i => i != null) .Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent)); - var genres = await Task.WhenAll(tasks).ConfigureAwait(false); - return GetResult(genres, parent, query); } @@ -1740,18 +1736,18 @@ namespace MediaBrowser.Controller.Entities var list = new List(); //list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.LiveTvChannels, string.Empty, user.RootFolder).ConfigureAwait(false)); - list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, string.Empty, user.RootFolder).ConfigureAwait(false)); + list.Add(GetUserView(SpecialFolder.LiveTvChannels, string.Empty, user.RootFolder)); + list.Add(GetUserView(SpecialFolder.LiveTvRecordingGroups, string.Empty, user.RootFolder)); return GetResult(list, queryParent, query); } - private Task GetUserView(string name, string type, string sortName, BaseItem parent) + private UserView GetUserView(string name, string type, string sortName, BaseItem parent) { return _userViewManager.GetUserSubView(name, parent.Id.ToString("N"), type, sortName, CancellationToken.None); } - private Task GetUserView(string type, string sortName, BaseItem parent) + private UserView GetUserView(string type, string sortName, BaseItem parent) { return _userViewManager.GetUserSubView(parent.Id.ToString("N"), type, sortName, CancellationToken.None); } diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 8693d867cc..8203e53042 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -406,30 +406,31 @@ namespace MediaBrowser.Controller.Entities } } - internal override bool IsValidFromResolver(BaseItem newItem) + internal override ItemUpdateType UpdateFromResolvedItem(BaseItem newItem) { - var current = this; + var updateType = base.UpdateFromResolvedItem(newItem); - var newAsVideo = newItem as Video; - - if (newAsVideo != null) + var newVideo = newItem as Video; + if (newVideo != null) { - if (!current.AdditionalParts.SequenceEqual(newAsVideo.AdditionalParts, StringComparer.OrdinalIgnoreCase)) + if (!AdditionalParts.SequenceEqual(newVideo.AdditionalParts, StringComparer.Ordinal)) { - return false; + AdditionalParts = newVideo.AdditionalParts; + updateType |= ItemUpdateType.MetadataImport; } - if (!current.LocalAlternateVersions.SequenceEqual(newAsVideo.LocalAlternateVersions, StringComparer.OrdinalIgnoreCase)) + if (!LocalAlternateVersions.SequenceEqual(newVideo.LocalAlternateVersions, StringComparer.Ordinal)) { - return false; + LocalAlternateVersions = newVideo.LocalAlternateVersions; + updateType |= ItemUpdateType.MetadataImport; } - - if (newAsVideo.VideoType != VideoType) + if (VideoType != newVideo.VideoType) { - return false; + VideoType = newVideo.VideoType; + updateType |= ItemUpdateType.MetadataImport; } } - return base.IsValidFromResolver(newItem); + return updateType; } public static string[] QueryPlayableStreamFiles(string rootPath, VideoType videoType) @@ -521,9 +522,9 @@ namespace MediaBrowser.Controller.Entities } } - public override async Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) + public override void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) { - await base.UpdateToRepository(updateReason, cancellationToken).ConfigureAwait(false); + base.UpdateToRepository(updateReason, cancellationToken); var localAlternates = GetLocalAlternateVersionIds() .Select(i => LibraryManager.GetItemById(i)) @@ -540,7 +541,7 @@ namespace MediaBrowser.Controller.Entities item.Genres = Genres; item.ProviderIds = ProviderIds; - await item.UpdateToRepository(ItemUpdateType.MetadataDownload, cancellationToken).ConfigureAwait(false); + item.UpdateToRepository(ItemUpdateType.MetadataDownload, cancellationToken); } } diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 3001e33661..7fceeb780b 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -207,11 +207,7 @@ namespace MediaBrowser.Controller.Library /// /// Updates the item. /// - /// The item. - /// The update reason. - /// The cancellation token. - /// Task. - Task UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken); + void UpdateItem(BaseItem item, ItemUpdateType updateReason, CancellationToken cancellationToken); /// /// Retrieves the item. @@ -330,8 +326,7 @@ namespace MediaBrowser.Controller.Library /// Type of the view. /// Name of the sort. /// The cancellation token. - /// Task<UserView>. - Task GetNamedView(string name, + UserView GetNamedView(string name, string viewType, string sortName, CancellationToken cancellationToken); @@ -345,8 +340,7 @@ namespace MediaBrowser.Controller.Library /// Name of the sort. /// The unique identifier. /// The cancellation token. - /// Task<UserView>. - Task GetNamedView(string name, + UserView GetNamedView(string name, string parentId, string viewType, string sortName, diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs index 76182c641b..ac37dc869c 100644 --- a/MediaBrowser.Controller/Library/IUserViewManager.cs +++ b/MediaBrowser.Controller/Library/IUserViewManager.cs @@ -13,9 +13,9 @@ namespace MediaBrowser.Controller.Library { Task GetUserViews(UserViewQuery query, CancellationToken cancellationToken); - Task GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken); + UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken); - Task GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken); + UserView GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken); List>> GetLatestItems(LatestItemsQuery request, DtoOptions options); } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index be85e115c4..56f2353f16 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -236,14 +236,12 @@ namespace MediaBrowser.Controller.LiveTv /// The query. /// The options. /// The cancellation token. - /// Task{QueryResult{ProgramInfoDto}}. - Task> GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken); + QueryResult GetRecommendedPrograms(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken); /// /// Gets the recommended programs internal. /// - /// Task<QueryResult<LiveTvProgram>>. - Task> GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken); + QueryResult GetRecommendedProgramsInternal(RecommendedProgramQuery query, DtoOptions options, CancellationToken cancellationToken); /// /// Gets the live tv information. @@ -264,8 +262,7 @@ namespace MediaBrowser.Controller.LiveTv /// Gets the live tv folder. /// /// The cancellation token. - /// BaseItemDto. - Task GetInternalLiveTvFolder(CancellationToken cancellationToken); + Folder GetInternalLiveTvFolder(CancellationToken cancellationToken); /// /// Gets the live tv folder. @@ -273,7 +270,7 @@ namespace MediaBrowser.Controller.LiveTv /// The user identifier. /// The cancellation token. /// BaseItemDto. - Task GetLiveTvFolder(string userId, CancellationToken cancellationToken); + BaseItemDto GetLiveTvFolder(string userId, CancellationToken cancellationToken); /// /// Gets the enabled users. @@ -284,7 +281,7 @@ namespace MediaBrowser.Controller.LiveTv /// /// Gets the internal channels. /// - Task> GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken); + QueryResult GetInternalChannels(LiveTvChannelQuery query, DtoOptions dtoOptions, CancellationToken cancellationToken); /// /// Gets the internal recordings. @@ -362,13 +359,6 @@ namespace MediaBrowser.Controller.LiveTv /// The user. void AddChannelInfo(List> items, DtoOptions options, User user); - /// - /// Called when [recording file deleted]. - /// - /// The recording. - /// Task. - Task OnRecordingFileDeleted(BaseItem recording); - Task> GetChannelsForListingsProvider(string id, CancellationToken cancellationToken); Task> GetChannelsFromListingsProviderData(string id, CancellationToken cancellationToken); diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs index 8fa96076b7..2dfc59d228 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs @@ -161,10 +161,5 @@ namespace MediaBrowser.Controller.LiveTv { return LiveTvManager.DeleteRecording(this); } - - public override Task OnFileDeleted() - { - return LiveTvManager.OnRecordingFileDeleted(this); - } } } diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs index c5fe7b1b31..1dfed4f75d 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs @@ -160,10 +160,5 @@ namespace MediaBrowser.Controller.LiveTv { return LiveTvManager.DeleteRecording(this); } - - public override Task OnFileDeleted() - { - return LiveTvManager.OnRecordingFileDeleted(this); - } } } diff --git a/MediaBrowser.Controller/Providers/IProviderManager.cs b/MediaBrowser.Controller/Providers/IProviderManager.cs index 77e6a7e405..c2cbda11d9 100644 --- a/MediaBrowser.Controller/Providers/IProviderManager.cs +++ b/MediaBrowser.Controller/Providers/IProviderManager.cs @@ -119,16 +119,12 @@ namespace MediaBrowser.Controller.Providers /// The item. /// Type of the update. /// Task. - Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType); + void SaveMetadata(IHasMetadata item, ItemUpdateType updateType); /// /// Saves the metadata. /// - /// The item. - /// Type of the update. - /// The savers. - /// Task. - Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable savers); + void SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable savers); /// /// Gets the metadata options. diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index b93f783418..f222b2da4c 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -204,7 +204,7 @@ namespace MediaBrowser.Providers.Manager LibraryManager.UpdatePeople(baseItem, result.People); await SavePeopleMetadata(result.People, libraryOptions, cancellationToken).ConfigureAwait(false); } - await result.Item.UpdateToRepository(reason, cancellationToken).ConfigureAwait(false); + result.Item.UpdateToRepository(reason, cancellationToken); } private async Task SavePeopleMetadata(List people, LibraryOptions libraryOptions, CancellationToken cancellationToken) @@ -238,7 +238,7 @@ namespace MediaBrowser.Providers.Manager if (saveEntity) { - await personEntity.UpdateToRepository(updateType, cancellationToken).ConfigureAwait(false); + personEntity.UpdateToRepository(updateType, cancellationToken); } } } diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index c36d4cf63c..9f46d41dfe 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -560,30 +560,20 @@ namespace MediaBrowser.Providers.Manager new MetadataOptions(); } - private Task _completedTask = Task.FromResult(true); /// /// Saves the metadata. /// - /// The item. - /// Type of the update. - /// Task. - public Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType) + public void SaveMetadata(IHasMetadata item, ItemUpdateType updateType) { SaveMetadata(item, updateType, _savers); - return _completedTask; } /// /// Saves the metadata. /// - /// The item. - /// Type of the update. - /// The savers. - /// Task. - public Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable savers) + public void SaveMetadata(IHasMetadata item, ItemUpdateType updateType, IEnumerable savers) { SaveMetadata(item, updateType, _savers.Where(i => savers.Contains(i.Name, StringComparer.OrdinalIgnoreCase))); - return _completedTask; } /// diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs index de51126eec..771570cbc7 100644 --- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs +++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs @@ -78,7 +78,7 @@ namespace MediaBrowser.Providers.TV else if (existingSeason.IsVirtualItem) { existingSeason.IsVirtualItem = false; - await existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); + existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken); } } @@ -97,7 +97,7 @@ namespace MediaBrowser.Providers.TV else if (existingSeason.IsVirtualItem) { existingSeason.IsVirtualItem = false; - await existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); + existingSeason.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken); } } diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs index 98460f767e..9cc17481c4 100644 --- a/MediaBrowser.XbmcMetadata/EntryPoint.cs +++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs @@ -52,7 +52,7 @@ namespace MediaBrowser.XbmcMetadata var items = _libraryManager.GetItemList(new InternalItemsQuery { - PersonIds = new [] { person.Id.ToString("N") }, + PersonIds = new[] { person.Id.ToString("N") }, DtoOptions = new DtoOptions(true) }); @@ -84,7 +84,7 @@ namespace MediaBrowser.XbmcMetadata GC.SuppressFinalize(this); } - private async void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason) + private void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason) { var locationType = item.LocationType; if (locationType == LocationType.Remote || @@ -105,7 +105,7 @@ namespace MediaBrowser.XbmcMetadata try { - await _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName }).ConfigureAwait(false); + _providerManager.SaveMetadata(item, updateReason, new[] { BaseNfoSaver.SaverName }); } catch (Exception ex) { From 983b51e0830ece26c1bd8445359fda14f0f99925 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 4 Oct 2017 14:51:26 -0400 Subject: [PATCH 03/62] reduce socket activity --- Emby.Dlna/Eventing/EventManager.cs | 20 +++++++++++++----- Emby.Dlna/Service/BaseService.cs | 4 ++-- .../IO/ManagedFileSystem.cs | 21 +++++++++++++++++++ .../Updates/InstallationManager.cs | 5 ----- MediaBrowser.Api/Dlna/DlnaServerService.cs | 2 +- MediaBrowser.Api/MediaBrowser.Api.csproj | 1 - .../ScheduledTasksWebSocketListener.cs | 1 + .../System/ActivityLogWebSocketListener.cs | 1 + MediaBrowser.Api/UserLibrary/ItemsService.cs | 4 +++- MediaBrowser.Controller/Dlna/IEventManager.cs | 2 +- .../MediaBrowser.Controller.csproj | 1 + .../Net}/BasePeriodicWebSocketListener.cs | 5 ++--- .../Api/PackageCreator.cs | 2 +- 13 files changed, 49 insertions(+), 20 deletions(-) rename {MediaBrowser.Api => MediaBrowser.Controller/Net}/BasePeriodicWebSocketListener.cs (99%) diff --git a/Emby.Dlna/Eventing/EventManager.cs b/Emby.Dlna/Eventing/EventManager.cs index 0516585ae0..99ba74f327 100644 --- a/Emby.Dlna/Eventing/EventManager.cs +++ b/Emby.Dlna/Eventing/EventManager.cs @@ -26,9 +26,11 @@ namespace Emby.Dlna.Eventing _logger = logger; } - public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string requestedTimeoutString) + public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl) { - var subscription = GetSubscription(subscriptionId, true); + var subscription = GetSubscription(subscriptionId, false); + + int timeoutSeconds; // Remove logging for now because some devices are sending this very frequently // TODO re-enable with dlna debug logging setting @@ -37,10 +39,18 @@ namespace Emby.Dlna.Eventing // timeout, // subscription.CallbackUrl); - subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300; - subscription.SubscriptionTime = DateTime.UtcNow; + if (subscription != null) + { + subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300; + timeoutSeconds = subscription.TimeoutSeconds; + subscription.SubscriptionTime = DateTime.UtcNow; + } + else + { + timeoutSeconds = 300; + } - return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, subscription.TimeoutSeconds); + return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, timeoutSeconds); } public EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl) diff --git a/Emby.Dlna/Service/BaseService.cs b/Emby.Dlna/Service/BaseService.cs index ddc37da095..bc7f01d974 100644 --- a/Emby.Dlna/Service/BaseService.cs +++ b/Emby.Dlna/Service/BaseService.cs @@ -24,9 +24,9 @@ namespace Emby.Dlna.Service return EventManager.CancelEventSubscription(subscriptionId); } - public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string timeoutString) + public EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string timeoutString, string callbackUrl) { - return EventManager.RenewEventSubscription(subscriptionId, timeoutString); + return EventManager.RenewEventSubscription(subscriptionId, notificationType, timeoutString, callbackUrl); } public EventSubscriptionResponse CreateEventSubscription(string notificationType, string timeoutString, string callbackUrl) diff --git a/Emby.Server.Implementations/IO/ManagedFileSystem.cs b/Emby.Server.Implementations/IO/ManagedFileSystem.cs index 0d85a977c5..125d9e980f 100644 --- a/Emby.Server.Implementations/IO/ManagedFileSystem.cs +++ b/Emby.Server.Implementations/IO/ManagedFileSystem.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -24,12 +25,14 @@ namespace Emby.Server.Implementations.IO private string _tempPath; private SharpCifsFileSystem _sharpCifsFileSystem; + private IEnvironmentInfo _environmentInfo; public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath) { Logger = logger; _supportsAsyncFileStreams = true; _tempPath = tempPath; + _environmentInfo = environmentInfo; // On Linux, this needs to be true or symbolic links are ignored EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows && @@ -1051,7 +1054,25 @@ namespace Emby.Server.Implementations.IO public virtual void SetExecutable(string path) { + if (_environmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.OSX) + { + RunProcess("chmod", "+x \"" + path + "\"", GetDirectoryName(path)); + } + } + private void RunProcess(string path, string args, string workingDirectory) + { + using (var process = Process.Start(new ProcessStartInfo + { + Arguments = args, + FileName = path, + CreateNoWindow = true, + WorkingDirectory = workingDirectory, + WindowStyle = ProcessWindowStyle.Normal + })) + { + process.WaitForExit(); + } } } } diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs index 1804630403..772f2338ac 100644 --- a/Emby.Server.Implementations/Updates/InstallationManager.cs +++ b/Emby.Server.Implementations/Updates/InstallationManager.cs @@ -442,11 +442,6 @@ namespace Emby.Server.Implementations.Updates /// Task{IEnumerable{PackageVersionInfo}}. public async Task> GetAvailablePluginUpdates(Version applicationVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken) { - if (!_config.CommonConfiguration.EnableAutoUpdate) - { - return new PackageVersionInfo[] { }; - } - var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false); var systemUpdateLevel = GetSystemUpdateLevel(); diff --git a/MediaBrowser.Api/Dlna/DlnaServerService.cs b/MediaBrowser.Api/Dlna/DlnaServerService.cs index cbef6e5b3b..6a0cea4df9 100644 --- a/MediaBrowser.Api/Dlna/DlnaServerService.cs +++ b/MediaBrowser.Api/Dlna/DlnaServerService.cs @@ -246,7 +246,7 @@ namespace MediaBrowser.Api.Dlna if (string.IsNullOrEmpty(notificationType)) { - return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, timeoutString)); + return GetSubscriptionResponse(eventManager.RenewEventSubscription(subscriptionId, notificationType, timeoutString, callback)); } return GetSubscriptionResponse(eventManager.CreateEventSubscription(notificationType, timeoutString, callback)); diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index ddb187f3d9..650306ea60 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -40,7 +40,6 @@ Properties\SharedVersion.cs - diff --git a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs index ee74ec450c..69ce6a385d 100644 --- a/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs +++ b/MediaBrowser.Api/ScheduledTasks/ScheduledTasksWebSocketListener.cs @@ -4,6 +4,7 @@ using MediaBrowser.Model.Tasks; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.Threading; namespace MediaBrowser.Api.ScheduledTasks diff --git a/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs b/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs index c641695dd8..793f745713 100644 --- a/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs +++ b/MediaBrowser.Api/System/ActivityLogWebSocketListener.cs @@ -3,6 +3,7 @@ using MediaBrowser.Model.Events; using MediaBrowser.Model.Logging; using System.Collections.Generic; using System.Threading.Tasks; +using MediaBrowser.Controller.Net; using MediaBrowser.Model.Threading; namespace MediaBrowser.Api.System diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 5fe386f1ab..1e531ba664 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -117,7 +117,9 @@ namespace MediaBrowser.Api.UserLibrary IsVirtualItem = false, CollapseBoxSetItems = false, EnableTotalRecordCount = request.EnableTotalRecordCount, - AncestorIds = ancestorIds.ToArray() + AncestorIds = ancestorIds.ToArray(), + IncludeItemTypes = request.GetIncludeItemTypes(), + ExcludeItemTypes = request.GetExcludeItemTypes() }); var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user); diff --git a/MediaBrowser.Controller/Dlna/IEventManager.cs b/MediaBrowser.Controller/Dlna/IEventManager.cs index 8c91bd889d..3af357a174 100644 --- a/MediaBrowser.Controller/Dlna/IEventManager.cs +++ b/MediaBrowser.Controller/Dlna/IEventManager.cs @@ -12,7 +12,7 @@ namespace MediaBrowser.Controller.Dlna /// /// Renews the event subscription. /// - EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string requestedTimeoutString); + EventSubscriptionResponse RenewEventSubscription(string subscriptionId, string notificationType, string requestedTimeoutString, string callbackUrl); /// /// Creates the event subscription. diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b33993859b..960ff0aa7d 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -176,6 +176,7 @@ + diff --git a/MediaBrowser.Api/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs similarity index 99% rename from MediaBrowser.Api/BasePeriodicWebSocketListener.cs rename to MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs index c7a9d97bad..6be94e7e6e 100644 --- a/MediaBrowser.Api/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs @@ -4,12 +4,11 @@ using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Net; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; using MediaBrowser.Model.Threading; -namespace MediaBrowser.Api +namespace MediaBrowser.Controller.Net { /// /// Starts sending data over a web socket periodically when a message is received, and then stops when a corresponding stop message is received @@ -93,7 +92,7 @@ namespace MediaBrowser.Api { get { - return true; + return false; } } diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs index c855a8d9ba..bb4a98fa86 100644 --- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs +++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs @@ -265,7 +265,7 @@ namespace MediaBrowser.WebDashboard.Api builder.AppendFormat("window.appMode='{0}';", mode); } - if (string.IsNullOrWhiteSpace(mode)) + else { builder.AppendFormat("window.dashboardVersion='{0}';", version); } From 1caae368d5f75d96dada65cd2175831982363c21 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 4 Oct 2017 14:51:56 -0400 Subject: [PATCH 04/62] 3.2.33.2 --- SharedVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index 75e244625b..9dbc18ddd4 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.1")] +[assembly: AssemblyVersion("3.2.33.2")] From fd621bbc522b39dca2f51c95d463a76ca7ca906e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 5 Oct 2017 14:07:31 -0400 Subject: [PATCH 05/62] support mpeg2 decoding with omx --- MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 8b612f809d..004748a761 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -1960,6 +1960,12 @@ namespace MediaBrowser.Controller.MediaEncoding return "-c:v h264_mmal"; } break; + case "mpeg2video": + if (_mediaEncoder.SupportsDecoder("mpeg2_mmal") && encodingOptions.HardwareDecodingCodecs.Contains("mpeg2video", StringComparer.OrdinalIgnoreCase)) + { + return "-c:v mpeg2_mmal"; + } + break; } } } From 51ca72ab5d88f6e4bc910e7744bdecb6284bc00b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 5 Oct 2017 14:10:07 -0400 Subject: [PATCH 06/62] adjust default provider order --- MediaBrowser.Api/StartupWizardService.cs | 1 + MediaBrowser.Controller/Providers/MetadataResult.cs | 1 + .../Configuration/ServerConfiguration.cs | 9 ++++++--- MediaBrowser.Providers/Manager/MetadataService.cs | 2 ++ MediaBrowser.Providers/Manager/ProviderUtils.cs | 2 +- MediaBrowser.Providers/Movies/MovieDbProvider.cs | 3 +-- .../Movies/MovieDbTrailerProvider.cs | 3 +-- MediaBrowser.Providers/Omdb/OmdbItemProvider.cs | 11 ++++++++++- MediaBrowser.Providers/Omdb/OmdbProvider.cs | 6 +++--- .../TV/TheTVDB/TvdbSeriesProvider.cs | 3 +-- 10 files changed, 27 insertions(+), 14 deletions(-) diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 22f1f3b62c..52a5e444f3 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -95,6 +95,7 @@ namespace MediaBrowser.Api config.EnableSimpleArtistDetection = true; config.EnableNormalizedItemByNameIds = true; config.DisableLiveTvChannelUserDataName = true; + config.EnableNewOmdbSupport = true; } public void Post(UpdateStartupConfiguration request) diff --git a/MediaBrowser.Controller/Providers/MetadataResult.cs b/MediaBrowser.Controller/Providers/MetadataResult.cs index 5ed55ea162..f35d41ca4c 100644 --- a/MediaBrowser.Controller/Providers/MetadataResult.cs +++ b/MediaBrowser.Controller/Providers/MetadataResult.cs @@ -20,6 +20,7 @@ namespace MediaBrowser.Controller.Providers public bool HasMetadata { get; set; } public T Item { get; set; } public string ResultLanguage { get; set; } + public string Provider { get; set; } public bool QueriedById { get; set; } public void AddPerson(PersonInfo p) { diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index f7fffbf79a..65b054b0c7 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -183,6 +183,7 @@ namespace MediaBrowser.Model.Configuration public bool EnableExternalContentInSuggestions { get; set; } public bool RequireHttps { get; set; } public bool IsBehindProxy { get; set; } + public bool EnableNewOmdbSupport { get; set; } public int ImageExtractionTimeoutMs { get; set; } @@ -343,8 +344,8 @@ namespace MediaBrowser.Model.Configuration Type = ImageType.Logo } }, - - DisabledImageFetchers = new [] {"FanArt"} + DisabledMetadataFetchers = new []{ "The Open Movie Database" }, + DisabledImageFetchers = new []{ "The Open Movie Database", "FanArt" } }, new MetadataOptions(1, 1280) @@ -389,7 +390,9 @@ namespace MediaBrowser.Model.Configuration Limit = 1, Type = ImageType.Logo } - } + }, + DisabledMetadataFetchers = new []{ "TheMovieDb" }, + DisabledImageFetchers = new []{ "TheMovieDb" } }, new MetadataOptions(1, 1280) diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index f222b2da4c..23c6b3efd6 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -655,6 +655,8 @@ namespace MediaBrowser.Providers.Manager if (result.HasMetadata) { + result.Provider = provider.Name; + results.Add(result); refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload; diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs index 41612321b3..b727e13546 100644 --- a/MediaBrowser.Providers/Manager/ProviderUtils.cs +++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs @@ -51,7 +51,7 @@ namespace MediaBrowser.Providers.Manager } } - if (replaceData || !target.CommunityRating.HasValue) + if (replaceData || !target.CommunityRating.HasValue || (source.CommunityRating.HasValue && string.Equals(sourceResult.Provider, "The Open Movie Database", StringComparison.OrdinalIgnoreCase))) { target.CommunityRating = source.CommunityRating; } diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index fe798d4f0f..0a60676946 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -629,8 +629,7 @@ namespace MediaBrowser.Providers.Movies { get { - // After Omdb - return 1; + return 0; } } diff --git a/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs index 36297914d4..6d1259d205 100644 --- a/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbTrailerProvider.cs @@ -36,8 +36,7 @@ namespace MediaBrowser.Providers.Movies { get { - // After Omdb - return 1; + return 0; } } diff --git a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs index e769c8cab2..bab1374c2d 100644 --- a/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbItemProvider.cs @@ -22,7 +22,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Omdb { public class OmdbItemProvider : IRemoteMetadataProvider, - IRemoteMetadataProvider, IRemoteMetadataProvider + IRemoteMetadataProvider, IRemoteMetadataProvider, IHasOrder { private readonly IJsonSerializer _jsonSerializer; private readonly IHttpClient _httpClient; @@ -41,6 +41,15 @@ namespace MediaBrowser.Providers.Omdb _configurationManager = configurationManager; } + public int Order + { + get + { + // After primary option + return 1; + } + } + public Task> GetSearchResults(SeriesInfo searchInfo, CancellationToken cancellationToken) { return GetSearchResults(searchInfo, "series", cancellationToken); diff --git a/MediaBrowser.Providers/Omdb/OmdbProvider.cs b/MediaBrowser.Providers/Omdb/OmdbProvider.cs index e2043faaf3..c481bf0e9c 100644 --- a/MediaBrowser.Providers/Omdb/OmdbProvider.cs +++ b/MediaBrowser.Providers/Omdb/OmdbProvider.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Omdb var result = await GetRootObject(imdbId, cancellationToken).ConfigureAwait(false); // Only take the name and rating if the user's language is set to english, since Omdb has no localization - if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase) || _configurationManager.Configuration.EnableNewOmdbSupport) { item.Name = result.Title; @@ -153,7 +153,7 @@ namespace MediaBrowser.Providers.Omdb } // Only take the name and rating if the user's language is set to english, since Omdb has no localization - if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(language, "en", StringComparison.OrdinalIgnoreCase) || _configurationManager.Configuration.EnableNewOmdbSupport) { item.Name = result.Title; @@ -389,7 +389,7 @@ namespace MediaBrowser.Providers.Omdb { T item = itemResult.Item; - var isConfiguredForEnglish = IsConfiguredForEnglish(item); + var isConfiguredForEnglish = IsConfiguredForEnglish(item) || _configurationManager.Configuration.EnableNewOmdbSupport; // Grab series genres because imdb data is better than tvdb. Leave movies alone // But only do it if english is the preferred language because this data will not be localized diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs index af18f5f0be..812d80b3bb 100644 --- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs @@ -1631,8 +1631,7 @@ namespace MediaBrowser.Providers.TV { get { - // After Omdb - return 1; + return 0; } } From 9707712d393710537e68e24fb362cdb5c4f8bf41 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 5 Oct 2017 14:10:46 -0400 Subject: [PATCH 07/62] update logging --- .../LiveTv/TunerHosts/LiveStream.cs | 4 ++++ .../Networking/NetworkManager.cs | 11 +++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs index 4641a1c91f..5be91c6c1b 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs @@ -139,6 +139,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts try { stream.Seek(offset, SeekOrigin.End); + } + catch (IOException) + { + } catch (ArgumentException) { diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index b47c058dff..5fb8f7fc9f 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -29,7 +29,7 @@ namespace Emby.Server.Implementations.Networking public List GetLocalIpAddresses() { - const int cacheMinutes = 5; + const int cacheMinutes = 10; lock (_localIpAddressSyncLock) { @@ -198,12 +198,6 @@ namespace Emby.Server.Implementations.Networking return Dns.GetHostAddressesAsync(hostName); } - private readonly List _validNetworkInterfaceTypes = new List - { - NetworkInterfaceType.Ethernet, - NetworkInterfaceType.Wireless80211 - }; - private List GetIPsDefault() { NetworkInterface[] interfaces; @@ -227,7 +221,8 @@ namespace Emby.Server.Implementations.Networking try { - Logger.Debug("Querying interface: {0}. Type: {1}. Status: {2}", network.Name, network.NetworkInterfaceType, network.OperationalStatus); + // suppress logging because it might be causing nas device wake up + //Logger.Debug("Querying interface: {0}. Type: {1}. Status: {2}", network.Name, network.NetworkInterfaceType, network.OperationalStatus); var ipProperties = network.GetIPProperties(); From db01b79901e503350f8359cab8b1eeae5ea30735 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 5 Oct 2017 14:11:46 -0400 Subject: [PATCH 08/62] 3.2.33.3 --- SharedVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index 9dbc18ddd4..22bfb62f2b 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.2")] +[assembly: AssemblyVersion("3.2.33.3")] From 43eec485e9341e32816206fba30dda48aee3a89a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 6 Oct 2017 11:49:22 -0400 Subject: [PATCH 09/62] fix book providers --- .../Entities/Audio/AudioPodcast.cs | 14 +++++- MediaBrowser.Controller/Entities/AudioBook.cs | 3 +- .../Providers/IMetadataService.cs | 4 +- .../Books/GoogleBooksProvider.cs | 45 +++++++++++++++++++ .../Manager/MetadataService.cs | 5 +++ .../Manager/ProviderManager.cs | 26 ++++++++++- .../MediaBrowser.Providers.csproj | 1 + 7 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 MediaBrowser.Providers/Books/GoogleBooksProvider.cs diff --git a/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs b/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs index d2b4569baf..1b717b900a 100644 --- a/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs +++ b/MediaBrowser.Controller/Entities/Audio/AudioPodcast.cs @@ -1,8 +1,9 @@ -using MediaBrowser.Model.Serialization; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Serialization; namespace MediaBrowser.Controller.Entities.Audio { - public class AudioPodcast : Audio + public class AudioPodcast : Audio, IHasLookupInfo { [IgnoreDataMember] public override bool SupportsPositionTicksResume @@ -13,6 +14,15 @@ namespace MediaBrowser.Controller.Entities.Audio } } + [IgnoreDataMember] + public override bool SupportsPlayedStatus + { + get + { + return true; + } + } + public override double? GetDefaultPrimaryImageAspectRatio() { return 1; diff --git a/MediaBrowser.Controller/Entities/AudioBook.cs b/MediaBrowser.Controller/Entities/AudioBook.cs index 1bdcfb881e..78fb102536 100644 --- a/MediaBrowser.Controller/Entities/AudioBook.cs +++ b/MediaBrowser.Controller/Entities/AudioBook.cs @@ -1,11 +1,12 @@ using System; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Entities { - public class AudioBook : Audio.Audio, IHasSeries + public class AudioBook : Audio.Audio, IHasSeries, IHasLookupInfo { [IgnoreDataMember] public override bool SupportsPositionTicksResume diff --git a/MediaBrowser.Controller/Providers/IMetadataService.cs b/MediaBrowser.Controller/Providers/IMetadataService.cs index 2d4873f7ed..7b7bf166b5 100644 --- a/MediaBrowser.Controller/Providers/IMetadataService.cs +++ b/MediaBrowser.Controller/Providers/IMetadataService.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Entities; +using System; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using System.Threading; using System.Threading.Tasks; @@ -13,6 +14,7 @@ namespace MediaBrowser.Controller.Providers /// The item. /// true if this instance can refresh the specified item; otherwise, false. bool CanRefresh(IHasMetadata item); + bool CanRefreshPrimary(Type type); /// /// Refreshes the metadata. diff --git a/MediaBrowser.Providers/Books/GoogleBooksProvider.cs b/MediaBrowser.Providers/Books/GoogleBooksProvider.cs new file mode 100644 index 0000000000..7330b8c43e --- /dev/null +++ b/MediaBrowser.Providers/Books/GoogleBooksProvider.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Net; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Providers; + +namespace MediaBrowser.Providers.Books +{ + public class GoogleBooksProvider : IRemoteMetadataProvider + { + public string Name => "Google Books"; + private readonly IHttpClient _httpClient; + + public GoogleBooksProvider(IHttpClient httpClient) + { + _httpClient = httpClient; + } + + public Task GetImageResponse(string url, CancellationToken cancellationToken) + { + return _httpClient.GetResponse(new HttpRequestOptions + { + CancellationToken = cancellationToken, + Url = url, + BufferContent = false + }); + } + + public async Task> GetMetadata(SongInfo info, CancellationToken cancellationToken) + { + return new MetadataResult(); + } + + public async Task> GetSearchResults(SongInfo searchInfo, CancellationToken cancellationToken) + { + return new List(); + } + } +} diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 23c6b3efd6..c37e05d957 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -453,6 +453,11 @@ namespace MediaBrowser.Providers.Manager return item is TItemType; } + public bool CanRefreshPrimary(Type type) + { + return type == typeof(TItemType); + } + protected virtual async Task RefreshWithProviders(MetadataResult metadata, TIdType id, MetadataRefreshOptions options, diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index 9f46d41dfe..28367662bc 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -118,7 +118,29 @@ namespace MediaBrowser.Providers.Manager public Task RefreshSingleItem(IHasMetadata item, MetadataRefreshOptions options, CancellationToken cancellationToken) { - var service = _metadataServices.FirstOrDefault(i => i.CanRefresh(item)); + IMetadataService service = null; + var type = item.GetType(); + + foreach (var current in _metadataServices) + { + if (current.CanRefreshPrimary(type)) + { + service = current; + break; + } + } + + if (service == null) + { + foreach (var current in _metadataServices) + { + if (current.CanRefresh(item)) + { + service = current; + break; + } + } + } if (service != null) { @@ -452,6 +474,8 @@ namespace MediaBrowser.Providers.Manager GetPluginSummary(), GetPluginSummary(), GetPluginSummary public class BookResolver : MediaBrowser.Controller.Resolvers.ItemResolver { - private readonly string[] _validExtensions = {".pdf", ".epub", ".mobi", ".cbr", ".cbz"}; + private readonly string[] _validExtensions = { ".pdf", ".epub", ".mobi", ".cbr", ".cbz", ".azw3" }; /// /// @@ -26,7 +26,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books // Only process items that are in a collection folder containing books if (!string.Equals(collectionType, CollectionType.Books, StringComparison.OrdinalIgnoreCase)) return null; - + if (args.IsDirectory) { return GetBook(args); @@ -69,9 +69,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.Books return null; return new Book - { - Path = bookFiles[0].FullName - }; + { + Path = bookFiles[0].FullName + }; } } } From e19b8f81c7c9273edaa48c80588b83d8ecffc2f7 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 7 Oct 2017 02:13:26 -0400 Subject: [PATCH 11/62] update recording conversion --- .../HttpServer/HttpListenerHost.cs | 13 +++++++------ .../LiveTv/EmbyTV/EncodedRecorder.cs | 5 ----- .../LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs | 8 +++++--- MediaBrowser.Controller/Sync/ISyncManager.cs | 2 -- MediaBrowser.Controller/Sync/ISyncProvider.cs | 2 -- MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 - 6 files changed, 12 insertions(+), 19 deletions(-) diff --git a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs index 737d4ceea0..1d3d4f1e5f 100644 --- a/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/Emby.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -725,12 +725,13 @@ namespace Emby.Server.Implementations.HttpServer Summary = route.Summary }); - //routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs) - //{ - // Notes = route.Notes, - // Priority = route.Priority, - // Summary = route.Summary - //}); + // needed because apps add /emby, and some users also add /emby, thereby double prefixing + routes.Add(new RouteAttribute(DoubleNormalizeEmbyRoutePath(route.Path), route.Verbs) + { + Notes = route.Notes, + Priority = route.Priority, + Summary = route.Summary + }); } return routes.ToArray(routes.Count); diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs index 149f69e5b3..d6f5e0d9fe 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs @@ -272,11 +272,6 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV private bool EncodeVideo(MediaSourceInfo mediaSource) { - if (string.Equals(_liveTvOptions.RecordedVideoCodec, "copy", StringComparison.OrdinalIgnoreCase)) - { - return false; - } - var mediaStreams = mediaSource.MediaStreams ?? new List(); return !mediaStreams.Any(i => i.Type == MediaStreamType.Video && string.Equals(i.Codec, "h264", StringComparison.OrdinalIgnoreCase) && !i.IsInterlaced); } diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs index bb11dac5f1..cfdaaed101 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs @@ -299,6 +299,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun int? videoBitrate = null; int? audioBitrate = null; + var isHd = channelInfo.IsHD ?? true; + if (string.Equals(profile, "mobile", StringComparison.OrdinalIgnoreCase)) { width = 1280; @@ -350,7 +352,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun else { // This is for android tv's 1200 condition. Remove once not needed anymore so that we can avoid possible side effects of dummying up this data - if ((channelInfo.IsHD ?? true)) + if (isHd) { width = 1920; height = 1080; @@ -367,9 +369,9 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun if (!videoBitrate.HasValue) { - videoBitrate = (channelInfo.IsHD ?? true) ? 15000000 : 2000000; + videoBitrate = isHd ? 15000000 : 2000000; } - audioBitrate = (channelInfo.IsHD ?? true) ? 448000 : 192000; + audioBitrate = isHd ? 448000 : 192000; } // normalize diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs index 910d697ec0..0bf4b914f1 100644 --- a/MediaBrowser.Controller/Sync/ISyncManager.cs +++ b/MediaBrowser.Controller/Sync/ISyncManager.cs @@ -91,8 +91,6 @@ namespace MediaBrowser.Controller.Sync /// List GetSyncTargets(string userId); - List GetSyncTargets(string userId, bool? supportsRemoteSync); - /// /// Supportses the synchronize. /// diff --git a/MediaBrowser.Controller/Sync/ISyncProvider.cs b/MediaBrowser.Controller/Sync/ISyncProvider.cs index 2f60e124ec..baee1a52f3 100644 --- a/MediaBrowser.Controller/Sync/ISyncProvider.cs +++ b/MediaBrowser.Controller/Sync/ISyncProvider.cs @@ -11,8 +11,6 @@ namespace MediaBrowser.Controller.Sync /// The name. string Name { get; } - bool SupportsRemoteSync { get; } - /// /// Gets the synchronize targets. /// diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index a70a1066d7..caf1bb2a89 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -13,7 +13,6 @@ namespace MediaBrowser.Model.LiveTv public string RecordingEncodingFormat { get; set; } public bool EnableRecordingSubfolders { get; set; } public bool EnableOriginalAudioWithEncodedRecordings { get; set; } - public string RecordedVideoCodec { get; set; } public TunerHostInfo[] TunerHosts { get; set; } public ListingsProviderInfo[] ListingProviders { get; set; } From 0fbb5ab4346cdf62e7cde7e216ba4d998b0582e8 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 7 Oct 2017 02:13:37 -0400 Subject: [PATCH 12/62] update xmltv parsing --- .../LiveTv/Listings/XmlTvListingsProvider.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs index 8ea98879a6..95ec1dee0d 100644 --- a/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs +++ b/Emby.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs @@ -110,7 +110,15 @@ namespace Emby.Server.Implementations.LiveTv.Listings var tempFolder = Path.Combine(_config.ApplicationPaths.TempDirectory, Guid.NewGuid().ToString()); _fileSystem.CreateDirectory(tempFolder); - _zipClient.ExtractAllFromGz(stream, tempFolder, true); + try + { + _zipClient.ExtractAllFromGz(stream, tempFolder, true); + } + catch + { + // If the extraction fails just return the original file, it could be a gz + return file; + } return _fileSystem.GetFiles(tempFolder, true) .Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase)) From be1ed79cf633b5e9d8728ca50fe6e98d514f0ad6 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 7 Oct 2017 02:15:47 -0400 Subject: [PATCH 13/62] 3.2.33.4 --- SharedVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index 22bfb62f2b..d2ae99469e 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.3")] +[assembly: AssemblyVersion("3.2.33.4")] From 3c7ee764eca1d5babe648a7d98a711bebaf17e3f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 9 Oct 2017 01:24:55 -0400 Subject: [PATCH 14/62] 3.2.33.5 --- Emby.Photos/PhotoProvider.cs | 4 ++-- Mono.Nat/Upnp/Messages/UpnpMessage.cs | 1 + SharedVersion.cs | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Emby.Photos/PhotoProvider.cs b/Emby.Photos/PhotoProvider.cs index fe77cff694..b2d6ecdcb3 100644 --- a/Emby.Photos/PhotoProvider.cs +++ b/Emby.Photos/PhotoProvider.cs @@ -31,14 +31,14 @@ namespace Emby.Photos } // These are causing taglib to hang - private string[] _excludeExtensions = new string[] { ".dng" }; + private string[] _includextensions = new string[] { ".jpg", ".jpeg", ".png", ".tiff" }; public Task FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken) { item.SetImagePath(ImageType.Primary, item.Path); // Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs - if (!_excludeExtensions.Contains(Path.GetExtension(item.Path) ?? string.Empty, StringComparer.OrdinalIgnoreCase)) + if (_includextensions.Contains(Path.GetExtension(item.Path) ?? string.Empty, StringComparer.OrdinalIgnoreCase)) { try { diff --git a/Mono.Nat/Upnp/Messages/UpnpMessage.cs b/Mono.Nat/Upnp/Messages/UpnpMessage.cs index 54cca44947..d15e48b2f5 100644 --- a/Mono.Nat/Upnp/Messages/UpnpMessage.cs +++ b/Mono.Nat/Upnp/Messages/UpnpMessage.cs @@ -51,6 +51,7 @@ namespace Mono.Nat.Upnp NatUtility.Log("Initiating request to: {0}", ss); var req = new HttpRequestOptions(); + req.LogErrors = false; req.Url = ss; req.EnableKeepAlive = false; req.RequestContentType = "text/xml; charset=\"utf-8\""; diff --git a/SharedVersion.cs b/SharedVersion.cs index d2ae99469e..fcfa2ec5af 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.4")] +[assembly: AssemblyVersion("3.2.33.5")] From 329305230eb0b0f12e5de4cdb04188dcb89e4a0c Mon Sep 17 00:00:00 2001 From: randomevents Date: Tue, 10 Oct 2017 23:35:30 -0400 Subject: [PATCH 15/62] Test for matching subnet of IP's (VPN request) test available ip4 host address against the endpoint (only local addresses, 10 127 192.68 169), if there's a preliminary match, it finds the subnet of the host ip (255.255.255.0) and makes sure's there's a match between host (255.255.255) and endpoint --- .../Networking/NetworkManager.cs | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index 5fb8f7fc9f..7f0eef0b9f 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -93,12 +93,36 @@ namespace Emby.Server.Implementations.Networking } return - endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) || + IsInPrivateAddressSpaceAndLocalSubnet(endpoint); + } + + public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint) + { + string subnet_Match = ""; + if ( endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("10.", StringComparison.OrdinalIgnoreCase) || endpoint.StartsWith("192.168", StringComparison.OrdinalIgnoreCase) || - endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase); + endpoint.StartsWith("169.", StringComparison.OrdinalIgnoreCase) + ) + { + foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) + foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) + if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpoint.Split('.')[0] == unicastIPAddressInformation.Address.ToString().Split('.')[0]) + { + int subnet_Test = 0; + foreach (string part in unicastIPAddressInformation.IPv4Mask.ToString().Split('.')) + { + if (part.Equals("0")) break; + subnet_Test++; + } + + subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray()); + } + } + + return endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase); } private bool Is172AddressPrivate(string endpoint) From 3e0cfd3af36f024b685ed512d4fa5f8c9b3fbe59 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 11 Oct 2017 00:45:21 -0400 Subject: [PATCH 16/62] fixes #1769 - IsInLocalNetwork returns wrong value --- .../Networking/NetworkManager.cs | 57 +++++++++++++++++-- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/Emby.Server.Implementations/Networking/NetworkManager.cs b/Emby.Server.Implementations/Networking/NetworkManager.cs index 7f0eef0b9f..66b2cba39b 100644 --- a/Emby.Server.Implementations/Networking/NetworkManager.cs +++ b/Emby.Server.Implementations/Networking/NetworkManager.cs @@ -81,8 +81,18 @@ namespace Emby.Server.Implementations.Networking return true; } - // Handle ipv4 mapped to ipv6 - endpoint = endpoint.Replace("::ffff:", string.Empty); + // ipv6 + if (endpoint.Split('.').Length > 4) + { + // Handle ipv4 mapped to ipv6 + var originalEndpoint = endpoint; + endpoint = endpoint.Replace("::ffff:", string.Empty); + + if (string.Equals(endpoint, originalEndpoint, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } // Private address space: // http://en.wikipedia.org/wiki/Private_network @@ -92,13 +102,15 @@ namespace Emby.Server.Implementations.Networking return Is172AddressPrivate(endpoint); } - return - endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) || + return endpoint.StartsWith("localhost", StringComparison.OrdinalIgnoreCase) || + endpoint.StartsWith("127.0.0.1", StringComparison.OrdinalIgnoreCase) || IsInPrivateAddressSpaceAndLocalSubnet(endpoint); } public bool IsInPrivateAddressSpaceAndLocalSubnet(string endpoint) { + var endpointFirstPart = endpoint.Split('.')[0]; + string subnet_Match = ""; if ( endpoint.StartsWith("127.", StringComparison.OrdinalIgnoreCase) || @@ -109,7 +121,7 @@ namespace Emby.Server.Implementations.Networking { foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) - if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpoint.Split('.')[0] == unicastIPAddressInformation.Address.ToString().Split('.')[0]) + if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0]) { int subnet_Test = 0; foreach (string part in unicastIPAddressInformation.IPv4Mask.ToString().Split('.')) @@ -125,6 +137,41 @@ namespace Emby.Server.Implementations.Networking return endpoint.StartsWith(subnet_Match + ".", StringComparison.OrdinalIgnoreCase); } + private Dictionary _subnetLookup = new Dictionary(StringComparer.Ordinal); + private string GetSubnet(string endpointFirstPart) + { + string subnet_Match = ""; + + lock (_subnetLookup) + { + if (_subnetLookup.TryGetValue(endpointFirstPart, out subnet_Match)) + { + return subnet_Match; + } + + foreach (NetworkInterface adapter in NetworkInterface.GetAllNetworkInterfaces()) + foreach (UnicastIPAddressInformation unicastIPAddressInformation in adapter.GetIPProperties().UnicastAddresses) + if (unicastIPAddressInformation.Address.AddressFamily == AddressFamily.InterNetwork && endpointFirstPart == unicastIPAddressInformation.Address.ToString().Split('.')[0]) + { + int subnet_Test = 0; + foreach (string part in unicastIPAddressInformation.IPv4Mask.ToString().Split('.')) + { + if (part.Equals("0")) break; + subnet_Test++; + } + + subnet_Match = String.Join(".", unicastIPAddressInformation.Address.ToString().Split('.').Take(subnet_Test).ToArray()); + } + + if (!string.IsNullOrWhiteSpace(subnet_Match)) + { + _subnetLookup[endpointFirstPart] = subnet_Match; + } + } + + return subnet_Match; + } + private bool Is172AddressPrivate(string endpoint) { for (var i = 16; i <= 31; i++) From 851c62a9401919780f9413659eb13e8d2a556679 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 11 Oct 2017 02:24:22 -0400 Subject: [PATCH 17/62] update image magick orientation function --- .../ImageMagickEncoder.cs | 2 +- .../HdHomerun/HdHomerunHttpStream.cs | 74 +++++++------------ .../MediaEncoding/EncodingHelper.cs | 2 +- .../Manager/ItemImageProvider.cs | 24 +++--- 4 files changed, 39 insertions(+), 63 deletions(-) diff --git a/Emby.Drawing.ImageMagick/ImageMagickEncoder.cs b/Emby.Drawing.ImageMagick/ImageMagickEncoder.cs index 04f916eb1b..38e2879ea8 100644 --- a/Emby.Drawing.ImageMagick/ImageMagickEncoder.cs +++ b/Emby.Drawing.ImageMagick/ImageMagickEncoder.cs @@ -149,7 +149,7 @@ namespace Emby.Drawing.ImageMagick var originalImageSize = new ImageSize(originalImage.CurrentImage.Width, originalImage.CurrentImage.Height); - if (!options.CropWhiteSpace && options.HasDefaultOptions(inputPath, originalImageSize)) + if (!options.CropWhiteSpace && options.HasDefaultOptions(inputPath, originalImageSize) && !autoOrient) { // Just spit out the original file if all the options are default return inputPath; diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHttpStream.cs index 604aa74f06..5e3923972d 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHttpStream.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHttpStream.cs @@ -33,7 +33,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun OriginalStreamId = originalStreamId; } - protected override Task OpenInternal(CancellationToken openCancellationToken) + protected override Task OpenInternal(CancellationToken openCancellationToken) { _liveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested(); @@ -77,56 +77,38 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun { return Task.Run(async () => { - var isFirstAttempt = true; - - while (!cancellationToken.IsCancellationRequested) + try { - try + using (var response = await _httpClient.SendAsync(new HttpRequestOptions { - using (var response = await _httpClient.SendAsync(new HttpRequestOptions + Url = url, + CancellationToken = cancellationToken, + BufferContent = false, + + // Increase a little bit + TimeoutMs = 30000, + + EnableHttpCompression = false + + }, "GET").ConfigureAwait(false)) + { + Logger.Info("Opened HDHR stream from {0}", url); + + Logger.Info("Beginning multicastStream.CopyUntilCancelled"); + + FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath)); + using (var fileStream = FileSystem.GetFileStream(TempFilePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, FileOpenOptions.None)) { - Url = url, - CancellationToken = cancellationToken, - BufferContent = false, - - // Increase a little bit - TimeoutMs = 30000, - - EnableHttpCompression = false - - }, "GET").ConfigureAwait(false)) - { - Logger.Info("Opened HDHR stream from {0}", url); - - if (!cancellationToken.IsCancellationRequested) - { - Logger.Info("Beginning multicastStream.CopyUntilCancelled"); - - FileSystem.CreateDirectory(FileSystem.GetDirectoryName(TempFilePath)); - using (var fileStream = FileSystem.GetFileStream(TempFilePath, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, FileOpenOptions.None)) - { - StreamHelper.CopyTo(response.Content, fileStream, 81920, () => Resolve(openTaskCompletionSource), cancellationToken); - } - } + StreamHelper.CopyTo(response.Content, fileStream, 81920, () => Resolve(openTaskCompletionSource), cancellationToken); } } - catch (OperationCanceledException) - { - break; - } - catch (Exception ex) - { - if (isFirstAttempt) - { - Logger.ErrorException("Error opening live stream:", ex); - openTaskCompletionSource.TrySetException(ex); - break; - } - - Logger.ErrorException("Error copying live stream, will reopen", ex); - } - - isFirstAttempt = false; + } + catch (OperationCanceledException) + { + } + catch (Exception ex) + { + Logger.ErrorException("Error copying live stream.", ex); } _liveStreamTaskCompletionSource.TrySetResult(true); diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 004748a761..e7c768c3b0 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -1638,7 +1638,7 @@ namespace MediaBrowser.Controller.MediaEncoding if (state.InputProtocol == MediaProtocol.Rtsp) { - inputModifier += " -rtsp_transport tcp"; + inputModifier += " -rtsp_transport tcp -rtsp_transport udp -rtsp_flags prefer_tcp"; } if (!string.IsNullOrEmpty(state.InputAudioSync)) diff --git a/MediaBrowser.Providers/Manager/ItemImageProvider.cs b/MediaBrowser.Providers/Manager/ItemImageProvider.cs index 00fd54271c..4419b48cbb 100644 --- a/MediaBrowser.Providers/Manager/ItemImageProvider.cs +++ b/MediaBrowser.Providers/Manager/ItemImageProvider.cs @@ -517,21 +517,11 @@ namespace MediaBrowser.Providers.Manager return true; } - if (libraryOptions.DownloadImagesInAdvance) - { - return false; - } - if (item.LocationType == LocationType.Remote || item.LocationType == LocationType.Virtual) { return true; } - if (!item.IsSaveLocalMetadataEnabled()) - { - return true; - } - if (item is IItemByName && !(item is MusicArtist)) { var hasDualAccess = item as IHasDualAccess; @@ -541,13 +531,17 @@ namespace MediaBrowser.Providers.Manager } } - switch (type) + if (libraryOptions.DownloadImagesInAdvance) { - case ImageType.Primary: - return true; - default: - return true; + return false; } + + //if (!item.IsSaveLocalMetadataEnabled()) + //{ + // return true; + //} + + return true; } private void SaveImageStub(IHasMetadata item, ImageType imageType, IEnumerable urls) From f534ac2c3e83ea0e7965c58092a135fa77ae6dfc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 11 Oct 2017 02:26:41 -0400 Subject: [PATCH 18/62] 3.2.33.6 --- SharedVersion.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SharedVersion.cs b/SharedVersion.cs index fcfa2ec5af..cd78e0886a 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.5")] +[assembly: AssemblyVersion("3.2.33.6")] From f98e42fc3b03640313ab520a0028afa60ccc2ebe Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:41:49 -0400 Subject: [PATCH 19/62] update translations --- .../Emby.Server.Implementations.csproj | 16 +- .../Localization/Core/ar.json | 263 ++++++------------ .../Localization/Core/bg-BG.json | 233 +++++----------- .../Localization/Core/ca.json | 233 +++++----------- .../Localization/Core/cs.json | 229 +++++---------- .../Localization/Core/da.json | 243 ++++++---------- .../Localization/Core/de.json | 227 +++++---------- .../Localization/Core/el.json | 178 ------------ .../Localization/Core/en-GB.json | 225 +++++---------- .../Localization/Core/en-US.json | 255 +++++++---------- .../Localization/Core/es-AR.json | 225 +++++---------- .../Localization/Core/es-MX.json | 227 +++++---------- .../Localization/Core/es.json | 249 ++++++----------- .../Localization/Core/fi.json | 178 ------------ .../Localization/Core/fr-CA.json | 225 +++++---------- .../Localization/Core/fr.json | 239 ++++++---------- .../Localization/Core/gsw.json | 178 ------------ .../Localization/Core/he.json | 215 +++++--------- .../Localization/Core/hr.json | 245 ++++++---------- .../Localization/Core/hu.json | 247 ++++++---------- .../Localization/Core/id.json | 178 ------------ .../Localization/Core/it.json | 247 ++++++---------- .../Localization/Core/kk.json | 227 +++++---------- .../Localization/Core/ko.json | 257 ++++++----------- .../Localization/Core/lt-LT.json | 95 +++++++ .../Localization/Core/ms.json | 225 +++++---------- .../Localization/Core/nb.json | 245 ++++++---------- .../Localization/Core/nl.json | 213 +++++--------- .../Localization/Core/pl.json | 241 ++++++---------- .../Localization/Core/pt-BR.json | 241 ++++++---------- .../Localization/Core/pt-PT.json | 227 +++++---------- .../Localization/Core/ro.json | 178 ------------ .../Localization/Core/ru.json | 225 +++++---------- .../Localization/Core/sk.json | 95 +++++++ .../Localization/Core/sl-SI.json | 215 +++++--------- .../Localization/Core/sv.json | 231 +++++---------- .../Localization/Core/tr.json | 229 +++++---------- .../Localization/Core/uk.json | 178 ------------ .../Localization/Core/vi.json | 178 ------------ .../Localization/Core/zh-CN.json | 241 ++++++---------- .../Localization/Core/zh-HK.json | 229 +++++---------- .../Localization/Core/zh-TW.json | 178 ------------ 42 files changed, 2553 insertions(+), 6350 deletions(-) delete mode 100644 Emby.Server.Implementations/Localization/Core/el.json delete mode 100644 Emby.Server.Implementations/Localization/Core/fi.json delete mode 100644 Emby.Server.Implementations/Localization/Core/gsw.json delete mode 100644 Emby.Server.Implementations/Localization/Core/id.json create mode 100644 Emby.Server.Implementations/Localization/Core/lt-LT.json delete mode 100644 Emby.Server.Implementations/Localization/Core/ro.json create mode 100644 Emby.Server.Implementations/Localization/Core/sk.json delete mode 100644 Emby.Server.Implementations/Localization/Core/uk.json delete mode 100644 Emby.Server.Implementations/Localization/Core/vi.json delete mode 100644 Emby.Server.Implementations/Localization/Core/zh-TW.json diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 518fa0d38d..b3fdead849 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -675,46 +675,42 @@ + + - - + - - - + - + - - - - + diff --git a/Emby.Server.Implementations/Localization/Core/ar.json b/Emby.Server.Implementations/Localization/Core/ar.json index 28977c4f92..0bc7490d35 100644 --- a/Emby.Server.Implementations/Localization/Core/ar.json +++ b/Emby.Server.Implementations/Localization/Core/ar.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", + "Latest": "\u0627\u0644\u0623\u062d\u062f\u062b", + "ValueSpecialEpisodeName": "\u062e\u0627\u0635 - {0}", + "Inherit": "\u062a\u0648\u0631\u064a\u062b", + "Books": "\u0627\u0644\u0643\u062a\u0628", + "Music": "\u0627\u0644\u0645\u0648\u0633\u064a\u0642\u0649", + "Games": "\u0627\u0644\u0623\u0644\u0639\u0627\u0628", + "Photos": "\u0627\u0644\u0635\u0648\u0631", + "MixedContent": "\u0645\u062d\u062a\u0648\u0649 \u0645\u062e\u0644\u0648\u0637", + "MusicVideos": "\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0627\u0644\u0645\u0648\u0633\u064a\u0642\u064a\u0629", + "HomeVideos": "\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a \u0627\u0644\u0645\u0646\u0632\u0644\u064a\u0629", + "Playlists": "\u0642\u0648\u0627\u0626\u0645 \u0627\u0644\u062a\u0634\u063a\u064a\u0644", + "HeaderRecordingGroups": "\u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0627\u0644\u062a\u0633\u062c\u064a\u0644", + "HeaderContinueWatching": "\u0627\u0633\u062a\u0626\u0646\u0627\u0641 \u0627\u0644\u0645\u0634\u0627\u0647\u062f\u0629", + "HeaderFavoriteArtists": "\u0627\u0644\u0641\u0646\u0627\u0646\u0648\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0648\u0646", + "HeaderFavoriteSongs": "\u0627\u0644\u0623\u063a\u0627\u0646\u064a \u0627\u0644\u0645\u0641\u0636\u0644\u0629", + "HeaderAlbumArtists": "\u0641\u0646\u0627\u0646\u0648 \u0627\u0644\u0623\u0644\u0628\u0648\u0645\u0627\u062a", + "HeaderFavoriteAlbums": "\u0627\u0644\u0623\u0644\u0628\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629", + "HeaderFavoriteEpisodes": "\u0627\u0644\u062d\u0644\u0642\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629", + "HeaderFavoriteShows": "\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a \u0627\u0644\u0645\u0641\u0636\u0644\u0629", + "HeaderNextUp": "\u0627\u0644\u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062a\u0627\u0644\u064a", + "Favorites": "\u0627\u0644\u0645\u0641\u0636\u0644\u0627\u062a", + "Collections": "\u0627\u0644\u0645\u062c\u0627\u0645\u064a\u0639", + "Channels": "\u0627\u0644\u0642\u0646\u0648\u0627\u062a", + "Movies": "\u0627\u0644\u0623\u0641\u0644\u0627\u0645", + "Albums": "\u0627\u0644\u0623\u0644\u0628\u0648\u0645\u0627\u062a", + "Artists": "\u0627\u0644\u0641\u0646\u0627\u0646\u0648\u0646", + "Folders": "\u0627\u0644\u0645\u062c\u0644\u062f\u0627\u062a", + "Songs": "\u0627\u0644\u0623\u063a\u0627\u0646\u064a", + "Shows": "Shows", + "Genres": "\u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0623\u0641\u0644\u0627\u0645", + "NameSeasonNumber": "\u0627\u0644\u0645\u0648\u0633\u0645 {0}", + "AppDeviceValues": "\u0627\u0644\u062a\u0637\u0628\u064a\u0642: {0}. \u0627\u0644\u062c\u0647\u0627\u0632: {1}.", + "UserDownloadingItemWithValues": "{0} \u064a\u0642\u0648\u0645 \u0628\u0625\u0646\u0632\u0627\u0644 {1}", + "HeaderLiveTV": "\u0627\u0644\u062a\u0644\u0641\u0627\u0632 \u0627\u0644\u0645\u0628\u0627\u0634\u0631", + "ChapterNameValue": "\u0627\u0644\u0628\u0627\u0628 {0}", + "ScheduledTaskFailedWithName": "\u0627\u0644\u0639\u0645\u0644\u064a\u0629 {0} \u0641\u0634\u0644\u062a", + "LabelRunningTimeValue": "\u0648\u0642\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644: {0}", + "ScheduledTaskStartedWithName": "\u062a\u0645 \u0628\u062f\u0621 {0}", + "VersionNumber": "\u0627\u0644\u0625\u0635\u062f\u0627\u0631 \u0631\u0642\u0645 {0}", + "PluginInstalledWithName": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a {0}", + "StartupEmbyServerIsLoading": "\u062e\u0627\u062f\u0645 \u0623\u0645\u0628\u064a \u0642\u064a\u062f \u0627\u0644\u062a\u062d\u0645\u064a\u0644. \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0645\u062d\u0627\u0648\u064a\u0629 \u0628\u0639\u062f \u062d\u064a\u0646", + "PluginUpdatedWithName": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b {0}", + "PluginUninstalledWithName": "\u062a\u0645\u062a \u0625\u0632\u0627\u0644\u0629 {0}", + "ItemAddedWithName": "\u062a\u0645 \u0625\u0636\u0627\u0641\u0629 {0} \u0644\u0644\u0645\u0643\u062a\u0628\u0629", + "ItemRemovedWithName": "\u062a\u0645 \u0625\u0632\u0627\u0644\u0629 {0} \u0645\u0646 \u0627\u0644\u0645\u0643\u062a\u0628\u0629", + "LabelIpAddressValue": "\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0622\u064a \u0628\u064a: {0}", + "DeviceOnlineWithName": "{0} \u0645\u062a\u0635\u0644", + "UserOnlineFromDevice": "{0} \u0645\u062a\u0635\u0644\u0629 \u0639\u0628\u0631 {1}", + "ProviderValue": "\u0627\u0644\u0645\u0632\u0648\u062f: {0}", + "SubtitlesDownloadedForItem": "\u062a\u0645 \u0625\u0646\u0632\u0627\u0644 \u0627\u0644\u062a\u0631\u062c\u0645\u0627\u062a \u0644\u0640 {0}", + "UserCreatedWithName": "\u062a\u0645 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 {0}", + "UserPasswordChangedWithName": "\u062a\u0645 \u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631 \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645 {0}", + "UserDeletedWithName": "\u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 {0}", + "UserConfigurationUpdatedWithName": "\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u062a\u0645 \u062a\u062d\u062f\u064a\u062b\u0647\u0627 \u0644\u0640 {0}", + "MessageServerConfigurationUpdated": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062e\u0627\u062f\u0645", + "MessageNamedServerConfigurationUpdatedWithValue": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062e\u0627\u062f\u0645 \u0641\u064a \u0642\u0633\u0645 {0}", + "MessageApplicationUpdated": "\u0644\u0642\u062f \u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u062e\u0627\u062f\u0645 \u0623\u0645\u0628\u064a", + "FailedLoginAttemptWithUserName": "\u0639\u0645\u0644\u064a\u0629 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0641\u0634\u0644\u062a \u0645\u0646 {0}", + "AuthenticationSucceededWithUserName": "\u062a\u0645 \u0627\u0644\u062a\u0623\u0643\u062f \u0645\u0646 {0} \u0628\u0646\u062c\u0627\u062d", + "UserOfflineFromDevice": "\u062a\u0645 \u0642\u0637\u0639 \u0627\u062a\u0635\u0627\u0644 {0} \u0645\u0646 {1}", + "DeviceOfflineWithName": "\u062a\u0645 \u0642\u0637\u0639 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0640{0}", + "UserStartedPlayingItemWithValues": "\u0642\u0627\u0645 {0} \u0628\u0628\u062f\u0621 \u062a\u0634\u063a\u064a\u0644 {1}", + "UserStoppedPlayingItemWithValues": "\u0642\u0627\u0645 {0} \u0628\u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 {1}", + "NotificationOptionPluginError": "\u0641\u0634\u0644 \u0641\u064a \u0627\u0644\u0645\u0644\u062d\u0642", + "NotificationOptionApplicationUpdateAvailable": "\u064a\u0648\u062c\u062f \u062a\u062d\u062f\u064a\u062b \u0644\u0644\u062a\u0637\u0628\u064a\u0642", + "NotificationOptionApplicationUpdateInstalled": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u062a\u0637\u0628\u064a\u0642", + "NotificationOptionPluginUpdateInstalled": "\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0644\u062d\u0642", + "NotificationOptionPluginInstalled": "\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0644\u062d\u0642", + "NotificationOptionPluginUninstalled": "\u062a\u0645\u062a \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0644\u062d\u0642", + "NotificationOptionVideoPlayback": "\u0628\u062f\u0623 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "NotificationOptionAudioPlayback": "\u0628\u062f\u0623 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u0642\u0637\u0639 \u0627\u0644\u0635\u0648\u062a\u064a", + "NotificationOptionGamePlayback": "\u062a\u0645 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0644\u0639\u0628\u0629", + "NotificationOptionVideoPlaybackStopped": "\u062a\u0645 \u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648", + "NotificationOptionAudioPlaybackStopped": "\u062a\u0645 \u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0645\u0642\u0637\u0639 \u0627\u0644\u0635\u0648\u062a\u064a", + "NotificationOptionGamePlaybackStopped": "\u062a\u0645 \u0625\u064a\u0642\u0627\u0641 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0644\u0639\u0628\u0629", + "NotificationOptionTaskFailed": "\u0641\u0634\u0644 \u0641\u064a \u0627\u0644\u0645\u0647\u0645\u0629 \u0627\u0644\u0645\u062c\u062f\u0648\u0644\u0629", + "NotificationOptionInstallationFailed": "\u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062a\u0646\u0635\u064a\u0628 \u0641\u0634\u0644\u062a", + "NotificationOptionNewLibraryContent": "\u062a\u0645 \u0625\u0636\u0627\u0641\u0629 \u0645\u062d\u062a\u0648\u0649 \u062c\u062f\u064a\u062f", + "NotificationOptionCameraImageUploaded": "\u062a\u0645 \u0631\u0642\u0639 \u0635\u0648\u0631\u0629 \u0627\u0644\u0643\u0627\u0645\u064a\u0631\u0627", + "NotificationOptionUserLockedOut": "\u062a\u0645 \u0625\u0642\u0641\u0627\u0644 \u062d\u0633\u0627\u0628 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645", + "NotificationOptionServerRestartRequired": "\u064a\u062c\u0628 \u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", + "UserLockedOutWithName": "\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 {0} \u062a\u0645 \u0645\u0646\u0639\u0647 \u0645\u0646 \u0627\u0644\u062f\u062e\u0648\u0644", + "SubtitleDownloadFailureForItem": "\u0639\u0645\u0644\u064a\u0629 \u0625\u0646\u0632\u0627\u0644 \u0627\u0644\u062a\u0631\u062c\u0645\u0629 \u0641\u0634\u0644\u062a \u0644\u0640{0}", + "Sync": "\u0645\u0632\u0627\u0645\u0646\u0629", + "User": "\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645", + "System": "\u0627\u0644\u0646\u0638\u0627\u0645", + "Application": "\u0627\u0644\u062a\u0637\u0628\u064a\u0642", + "Plugin": "\u0627\u0644\u0645\u0644\u062d\u0642", "LabelExit": "\u062e\u0631\u0648\u062c", "LabelVisitCommunity": "\u0632\u064a\u0627\u0631\u0629 \u0627\u0644\u0645\u062c\u062a\u0645\u0639", - "LabelGithub": "\u062c\u064a\u062a \u0647\u0628", - "LabelApiDocumentation": "\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u062f\u062e\u0644 \u0628\u0631\u0645\u062c\u0629 \u0627\u0644\u062a\u0637\u0628\u064a\u0642", - "LabelDeveloperResources": "\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0645\u0628\u0631\u0645\u062c", "LabelBrowseLibrary": "\u062a\u0635\u0641\u062d \u0627\u0644\u0645\u0643\u062a\u0628\u0629", - "LabelConfigureServer": "\u0625\u0639\u062f\u0627\u062f \u0625\u0645\u0628\u064a", - "LabelRestartServer": "\u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "LabelConfigureServer": "\u0636\u0628\u0637 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0623\u0645\u0628\u064a", + "LabelRestartServer": "\u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062e\u0627\u062f\u0645" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/bg-BG.json b/Emby.Server.Implementations/Localization/Core/bg-BG.json index 22b99408df..91870578ba 100644 --- a/Emby.Server.Implementations/Localization/Core/bg-BG.json +++ b/Emby.Server.Implementations/Localization/Core/bg-BG.json @@ -1,42 +1,73 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438", + "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u043d\u0438 - {0}", + "Inherit": "Inherit", + "Books": "\u041a\u043d\u0438\u0433\u0438", + "Music": "\u041c\u0443\u0437\u0438\u043a\u0430", + "Games": "\u0418\u0433\u0440\u0438", + "Photos": "\u0421\u043d\u0438\u043c\u043a\u0438", + "MixedContent": "Mixed content", + "MusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "HomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", + "Playlists": "\u0421\u043f\u0438\u0441\u044a\u0446\u0438", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "\u041f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0433\u043b\u0435\u0434\u0430\u043d\u0435\u0442\u043e", + "HeaderFavoriteArtists": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0438\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "HeaderFavoriteSongs": "\u041b\u044e\u0431\u0438\u043c\u0438 \u043f\u0435\u0441\u043d\u0438", + "HeaderAlbumArtists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438 \u043d\u0430 \u0430\u043b\u0431\u0443\u043c\u0438", + "HeaderFavoriteAlbums": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0430\u043b\u0431\u0443\u043c\u0438", + "HeaderFavoriteEpisodes": "\u041b\u044e\u0431\u0438\u043c\u0438 \u0435\u043f\u0438\u0437\u043e\u0434\u0438", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "\u041b\u044e\u0431\u0438\u043c\u0438", + "Collections": "\u041a\u043e\u043b\u0435\u043a\u0446\u0438\u0438", + "Channels": "\u041a\u0430\u043d\u0430\u043b\u0438", + "Movies": "\u0424\u0438\u043b\u043c\u0438", + "Albums": "\u0410\u043b\u0431\u0443\u043c\u0438", + "Artists": "\u0418\u0437\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "Folders": "\u041f\u0430\u043f\u043a\u0438", + "Songs": "\u041f\u0435\u0441\u043d\u0438", + "Shows": "\u0421\u0435\u0440\u0438\u0430\u043b\u0438", + "Genres": "\u0416\u0430\u043d\u0440\u043e\u0432\u0435", + "NameSeasonNumber": "\u0421\u0435\u0437\u043e\u043d {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\u0421\u043c\u0435\u0441\u0435\u043d\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", - "FolderTypeMovies": "\u0424\u0438\u043b\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "\u041a\u043b\u0438\u043f\u043e\u0432\u0435 \u0437\u0430 \u0432\u044a\u0437\u0440\u0430\u0441\u0442\u043d\u0438", - "FolderTypePhotos": "\u0421\u043d\u0438\u043c\u043a\u0438", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u0438\u043a\u0430\u043b\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeHomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438 \u043a\u043b\u0438\u043f\u043e\u0432\u0435", - "FolderTypeGames": "\u0418\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0438", - "HeaderCastCrew": "\u0415\u043a\u0438\u043f", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "\u0418\u0437\u0445\u043e\u0434", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0438 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u0442\u043e", - "LabelGithub": "Github", - "LabelApiDocumentation": "API \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u0438 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u0446\u0438", - "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0434\u0430\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", - "LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0439 Emby", - "LabelRestartServer": "\u0420\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0439 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", - "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437.", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} \u0437\u0430\u043f\u043e\u0447\u043d\u0430", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} \u0435 \u0434\u0435\u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u043e", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionPluginUpdateInstalled": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u043e", + "NotificationOptionPluginInstalled": "\u041f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430", + "NotificationOptionPluginUninstalled": "\u041f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430\u0442\u0430 \u0435 \u0434\u0435\u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430", "NotificationOptionVideoPlayback": "Video playback started", "NotificationOptionAudioPlayback": "Audio playback started", "NotificationOptionGamePlayback": "Game playback started", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "\u0412\u0435\u0440\u0441\u0438\u044f {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby \u0441\u044a\u0440\u0432\u044a\u0440\u044a\u0442 \u0431\u0435 \u043e\u0431\u043d\u043e\u0432\u0435\u043d.", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", + "NotificationOptionServerRestartRequired": "\u041d\u0443\u0436\u043d\u043e \u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "\u0421\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435:", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0430\u043d\u0435", + "User": "\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b", + "System": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0442\u0435\u0442\u0435 \u043e\u0431\u0449\u043d\u043e\u0441\u0442\u0442\u0430", + "LabelBrowseLibrary": "\u0420\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430", + "LabelConfigureServer": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0415\u043c\u0431\u0438", + "LabelRestartServer": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435 \u043d\u0430 \u0441\u044a\u0440\u0432\u044a\u0440\u0430" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/ca.json b/Emby.Server.Implementations/Localization/Core/ca.json index 7ca8e1553d..829369df54 100644 --- a/Emby.Server.Implementations/Localization/Core/ca.json +++ b/Emby.Server.Implementations/Localization/Core/ca.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Si et plau espera mentre la teva base de dades del Servidor Emby \u00e9s actualitzada. {0}% completat.", - "AppDeviceValues": "App: {0}, Dispositiu: {1}", - "UserDownloadingItemWithValues": "{0} est\u00e0 descarregant {1}", - "FolderTypeMixed": "Contingut barrejat", - "FolderTypeMovies": "Pel\u00b7l\u00edcules", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "V\u00eddeos per adults", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "V\u00eddeos musicals", - "FolderTypeHomeVideos": "V\u00eddeos dom\u00e8stics", - "FolderTypeGames": "Jocs", - "FolderTypeBooks": "Llibres", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Heretat", - "HeaderCastCrew": "Repartiment i Equip", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Cap\u00edtol {0}", - "NameSeasonNumber": "Temporada {0}", - "LabelExit": "Sortir", - "LabelVisitCommunity": "Visita la Comunitat", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentaci\u00f3 de l'API", - "LabelDeveloperResources": "Recursos per a Desenvolupadors", - "LabelBrowseLibrary": "Examina la Biblioteca", - "LabelConfigureServer": "Configura Emby", - "LabelRestartServer": "Reiniciar Servidor", - "CategorySync": "Sync", - "CategoryUser": "Usuari", - "CategorySystem": "Sistema", - "CategoryApplication": "Aplicaci\u00f3", - "CategoryPlugin": "Complement", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Actualitzaci\u00f3 d'aplicaci\u00f3 disponible", - "NotificationOptionApplicationUpdateInstalled": "Actualitzaci\u00f3 d'aplicaci\u00f3 instal\u00b7lada", - "NotificationOptionPluginUpdateInstalled": "Actualitzaci\u00f3 de complement instal\u00b7lada", - "NotificationOptionPluginInstalled": "Complement instal\u00b7lat", - "NotificationOptionPluginUninstalled": "Complement desinstal\u00b7lat", - "NotificationOptionVideoPlayback": "Reproducci\u00f3 de v\u00eddeo iniciada", - "NotificationOptionAudioPlayback": "Reproducci\u00f3 d'\u00e0udio iniciada", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Reproducci\u00f3 de v\u00eddeo aturada", - "NotificationOptionAudioPlaybackStopped": "Reproducci\u00f3 d'\u00e0udio aturada", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Tasca programada fallida", - "NotificationOptionInstallationFailed": "Instal\u00b7laci\u00f3 fallida", - "NotificationOptionNewLibraryContent": "Nou contingut afegit", - "NotificationOptionNewLibraryContentMultiple": "Nous continguts afegits", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "Usuari blocat", - "NotificationOptionServerRestartRequired": "Cal reiniciar el servidor", - "ViewTypePlaylists": "Llistes de reproducci\u00f3", - "ViewTypeMovies": "Pel\u00b7l\u00edcules", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Jocs", - "ViewTypeMusic": "M\u00fasica", - "ViewTypeMusicGenres": "G\u00e8neres", - "ViewTypeMusicArtists": "Artistes", - "ViewTypeBoxSets": "Col\u00b7leccions", - "ViewTypeChannels": "Canals", - "ViewTypeLiveTV": "TV en Directe", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Darrers Jocs", - "ViewTypeRecentlyPlayedGames": "Reprodu\u00eft Recentment", - "ViewTypeGameFavorites": "Preferits", - "ViewTypeGameSystems": "Sistemes de Jocs", - "ViewTypeGameGenres": "G\u00e8neres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "A Continuaci\u00f3", - "ViewTypeTvLatest": "Darrers", - "ViewTypeTvShowSeries": "S\u00e8ries:", - "ViewTypeTvGenres": "G\u00e8neres", - "ViewTypeTvFavoriteSeries": "S\u00e8ries Preferides", - "ViewTypeTvFavoriteEpisodes": "Episodis Preferits", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Darrers", - "ViewTypeMovieMovies": "Pel\u00b7l\u00edcules", - "ViewTypeMovieCollections": "Col\u00b7leccions", - "ViewTypeMovieFavorites": "Preferides", - "ViewTypeMovieGenres": "G\u00e8neres", - "ViewTypeMusicLatest": "Novetats", - "ViewTypeMusicPlaylists": "Llistes de reproducci\u00f3", - "ViewTypeMusicAlbums": "\u00c0lbums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Prefer\u00e8ncies de Visualitzaci\u00f3", - "ViewTypeMusicSongs": "Can\u00e7ons", - "ViewTypeMusicFavorites": "Preferides", - "ViewTypeMusicFavoriteAlbums": "\u00c0lbums Preferits", - "ViewTypeMusicFavoriteArtists": "Artistes Preferits", - "ViewTypeMusicFavoriteSongs": "Can\u00e7ons Preferides", - "ViewTypeFolders": "Directoris", - "ViewTypeLiveTvRecordingGroups": "Enregistraments", - "ViewTypeLiveTvChannels": "Canals", + "Latest": "Darreres", + "ValueSpecialEpisodeName": "Especial - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continua Veient", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Programes Preferits", + "HeaderNextUp": "A continuaci\u00f3", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "G\u00e8neres", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", "ScheduledTaskFailedWithName": "{0} failed", "LabelRunningTimeValue": "Running time: {0}", "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Versi\u00f3 {0}", + "VersionNumber": "Version {0}", "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} afegit a la biblioteca", - "ItemRemovedWithName": "{0} eliminat de la biblioteca", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", "LabelIpAddressValue": "Ip address: {0}", "DeviceOnlineWithName": "{0} is connected", "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Prove\u00efdor: {0}", + "ProviderValue": "Provider: {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserCreatedWithName": "User {0} has been created", "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "L'usuari {0} ha estat eliminat", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageApplicationUpdated": "Emby Server has been updated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} autenticat correctament", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "L'usuari {0} ha estat blocat", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} ha comen\u00e7at a reproduir {1}", - "UserStoppedPlayingItemWithValues": "{0} ha parat de reproduir {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "Usuari", - "HeaderName": "Nom", - "HeaderDate": "Data", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Data afegida", - "HeaderReleaseDate": "Data de publicaci\u00f3", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Temporada", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "S\u00e8ries:", - "HeaderNetwork": "Network", - "HeaderYear": "Any:", - "HeaderYears": "Anys:", - "HeaderParentalRating": "Valoraci\u00f3 Parental", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Tr\u00e0ilers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Sistemes de Jocs", - "HeaderPlayers": "Jugadors:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "\u00c0udio", - "HeaderVideo": "V\u00eddeo", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subt\u00edtols", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Estat", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "M\u00fasic", - "HeaderLocked": "Blocat", - "HeaderStudios": "Estudis", - "HeaderActor": "Actors", - "HeaderComposer": "Compositors", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Artista convidat", - "HeaderProducer": "Productors", - "HeaderWriter": "Escriptors", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Qualificacions de la comunitat", - "StartupEmbyServerIsLoading": "El servidor d'Emby s'està carregant. Si et plau, tornau-ho a provar de nou en breu." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/cs.json b/Emby.Server.Implementations/Localization/Core/cs.json index e3055f5bac..68dad0e468 100644 --- a/Emby.Server.Implementations/Localization/Core/cs.json +++ b/Emby.Server.Implementations/Localization/Core/cs.json @@ -1,39 +1,70 @@ { - "DbUpgradeMessage": "Po\u010dkejte pros\u00edm, datab\u00e1ze Emby Serveru je aktualizov\u00e1na na novou verzi. Hotovo {0}%.", - "AppDeviceValues": "Aplikace: {0}, Za\u0159\u00edzen\u00ed: {1}", - "UserDownloadingItemWithValues": "{0} pr\u00e1v\u011b stahuje {1}", - "FolderTypeMixed": "Sm\u00ed\u0161en\u00fd obsah", - "FolderTypeMovies": "Filmy", - "FolderTypeMusic": "Hudba", - "FolderTypeAdultVideos": "Filmy pro dosp\u011bl\u00e9", - "FolderTypePhotos": "Fotky", - "FolderTypeMusicVideos": "Hudebn\u00ed klipy", - "FolderTypeHomeVideos": "Dom\u00e1c\u00ed video", - "FolderTypeGames": "Hry", - "FolderTypeBooks": "Knihy", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Zd\u011bdit", - "HeaderCastCrew": "Herci a obsazen\u00ed", - "HeaderPeople": "Lid\u00e9", + "Latest": "Nejnov\u011bj\u0161\u00ed", "ValueSpecialEpisodeName": "Speci\u00e1l - {0}", - "LabelChapterName": "Kapitola {0}", + "Inherit": "Zd\u011bdit", + "Books": "Knihy", + "Music": "Hudba", + "Games": "Hry", + "Photos": "Fotky", + "MixedContent": "Sm\u00ed\u0161en\u00fd obsah", + "MusicVideos": "Hudebn\u00ed klipy", + "HomeVideos": "Dom\u00e1ci videa", + "Playlists": "Seznamy skladeb", + "HeaderRecordingGroups": "Skupiny nahr\u00e1vek", + "HeaderContinueWatching": "Pokra\u010dovat ve sledov\u00e1n\u00ed", + "HeaderFavoriteArtists": "Obl\u00edben\u00ed um\u011blci", + "HeaderFavoriteSongs": "Obl\u00edben\u00e9 p\u00edsn\u011b", + "HeaderAlbumArtists": "Um\u011blci alba", + "HeaderFavoriteAlbums": "Obl\u00edben\u00e1 alba", + "HeaderFavoriteEpisodes": "Obl\u00edben\u00e9 epizody", + "HeaderFavoriteShows": "Obl\u00edben\u00e9 seri\u00e1ly", + "HeaderNextUp": "Nadch\u00e1zej\u00edc\u00ed", + "Favorites": "Obl\u00edben\u00e9", + "Collections": "Kolekce", + "Channels": "Kan\u00e1ly", + "Movies": "Filmy", + "Albums": "Alba", + "Artists": "Um\u011blci", + "Folders": "Slo\u017eky", + "Songs": "Skladby", + "Shows": "Seri\u00e1ly", + "Genres": "\u017d\u00e1nry", "NameSeasonNumber": "Sez\u00f3na {0}", - "LabelExit": "Zav\u0159\u00edt", - "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", - "LabelGithub": "Github", - "LabelApiDocumentation": "Dokumentace API", - "LabelDeveloperResources": "Zdroje v\u00fdvoj\u00e1\u0159\u016f", - "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", - "LabelConfigureServer": "Konfigurovat Emby", - "LabelRestartServer": "Restartovat server", - "CategorySync": "Synchronizace", - "CategoryUser": "U\u017eivatel:", - "CategorySystem": "Syst\u00e9m", - "CategoryApplication": "Aplikace", - "CategoryPlugin": "Z\u00e1suvn\u00fd modul", + "AppDeviceValues": "Aplikace: {0}, Za\u0159\u00edzen\u00ed: {1}", + "UserDownloadingItemWithValues": "{0} stahuje {1}", + "HeaderLiveTV": "\u017div\u00e1 TV", + "ChapterNameValue": "Kapitola {0}", + "ScheduledTaskFailedWithName": "{0} selhalo", + "LabelRunningTimeValue": "D\u00e9lka m\u00e9dia: {0}", + "ScheduledTaskStartedWithName": "{0} zah\u00e1jeno", + "VersionNumber": "Verze {0}", + "PluginInstalledWithName": "{0} byl nainstalov\u00e1n", + "StartupEmbyServerIsLoading": "Emby Server je spou\u0161t\u011bn. Zkuste to pros\u00edm v brzk\u00e9 dob\u011b znovu.", + "PluginUpdatedWithName": "{0} byl aktualizov\u00e1n", + "PluginUninstalledWithName": "{0} byl odinstalov\u00e1n", + "ItemAddedWithName": "{0} byl p\u0159id\u00e1n do knihovny", + "ItemRemovedWithName": "{0} byl odstran\u011bn z knihovny", + "LabelIpAddressValue": "IP adresa: {0}", + "DeviceOnlineWithName": "{0} je p\u0159ipojen", + "UserOnlineFromDevice": "{0} se p\u0159ipojil z {1}", + "ProviderValue": "Poskytl: {0}", + "SubtitlesDownloadedForItem": "Sta\u017eeny titulky pro {0}", + "UserCreatedWithName": "U\u017eivatel {0} byl vytvo\u0159en", + "UserPasswordChangedWithName": "Provedena zm\u011bna hesla pro u\u017eivatele {0}", + "UserDeletedWithName": "U\u017eivatel {0} byl smaz\u00e1n", + "UserConfigurationUpdatedWithName": "Konfigurace u\u017eivatele byla aktualizov\u00e1na pro {0}", + "MessageServerConfigurationUpdated": "Konfigurace serveru aktualizov\u00e1na", + "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizov\u00e1na", + "MessageApplicationUpdated": "Emby Server byl aktualizov\u00e1n", + "FailedLoginAttemptWithUserName": "Ne\u00fasp\u011b\u0161n\u00fd pokus o p\u0159ihl\u00e1\u0161en\u00ed z {0}", + "AuthenticationSucceededWithUserName": "{0} \u00fasp\u011b\u0161n\u011b ov\u011b\u0159en", + "UserOfflineFromDevice": "{0} se odpojil od {1}", + "DeviceOfflineWithName": "{0} se odpojil", + "UserStartedPlayingItemWithValues": "{0} spustil p\u0159ehr\u00e1v\u00e1n\u00ed {1}", + "UserStoppedPlayingItemWithValues": "{0} zastavil p\u0159ehr\u00e1v\u00e1n\u00ed {1}", "NotificationOptionPluginError": "Chyba z\u00e1suvn\u00e9ho modulu", - "NotificationOptionApplicationUpdateAvailable": "Dostupnost aktualizace aplikace", - "NotificationOptionApplicationUpdateInstalled": "Instalace aktualizace aplikace", + "NotificationOptionApplicationUpdateAvailable": "Dostupn\u00e1 aktualizace aplikace", + "NotificationOptionApplicationUpdateInstalled": "Aktualizace aplikace instalov\u00e1na", "NotificationOptionPluginUpdateInstalled": "Aktualizace z\u00e1suvn\u00e9ho modulu instalov\u00e1na", "NotificationOptionPluginInstalled": "Z\u00e1suvn\u00fd modul instalov\u00e1n", "NotificationOptionPluginUninstalled": "Z\u00e1suvn\u00fd modul odstran\u011bn", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Chyba napl\u00e1novan\u00e9 \u00falohy", "NotificationOptionInstallationFailed": "Chyba instalace", "NotificationOptionNewLibraryContent": "P\u0159id\u00e1n nov\u00fd obsah", - "NotificationOptionNewLibraryContentMultiple": "P\u0159id\u00e1n nov\u00fd obsah (v\u00edcen\u00e1sobn\u00fd)", "NotificationOptionCameraImageUploaded": "Kamerov\u00fd z\u00e1znam nahr\u00e1n", "NotificationOptionUserLockedOut": "U\u017eivatel uzam\u010den", "NotificationOptionServerRestartRequired": "Je vy\u017eadov\u00e1n restart serveru", - "ViewTypePlaylists": "Playlisty", - "ViewTypeMovies": "Filmy", - "ViewTypeTvShows": "Televize", - "ViewTypeGames": "Hry", - "ViewTypeMusic": "Hudba", - "ViewTypeMusicGenres": "\u017d\u00e1nry", - "ViewTypeMusicArtists": "\u00dam\u011blci", - "ViewTypeBoxSets": "Kolekce", - "ViewTypeChannels": "Kan\u00e1ly", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Vys\u00edl\u00e1no nyn\u00ed", - "ViewTypeLatestGames": "Nejnov\u011bj\u0161\u00ed hry", - "ViewTypeRecentlyPlayedGames": "Ned\u00e1vno p\u0159ehr\u00e1no", - "ViewTypeGameFavorites": "Obl\u00edben\u00e9", - "ViewTypeGameSystems": "Syst\u00e9my hry", - "ViewTypeGameGenres": "\u017d\u00e1nry", - "ViewTypeTvResume": "Obnovit", - "ViewTypeTvNextUp": "O\u010dek\u00e1van\u00e9", - "ViewTypeTvLatest": "Nejnov\u011bj\u0161\u00ed", - "ViewTypeTvShowSeries": "Seri\u00e1l", - "ViewTypeTvGenres": "\u017d\u00e1nry", - "ViewTypeTvFavoriteSeries": "Obl\u00edben\u00e9 seri\u00e1ly", - "ViewTypeTvFavoriteEpisodes": "Obl\u00edben\u00e9 epizody", - "ViewTypeMovieResume": "Obnovit", - "ViewTypeMovieLatest": "Nejnov\u011bj\u0161\u00ed", - "ViewTypeMovieMovies": "Filmy", - "ViewTypeMovieCollections": "Kolekce", - "ViewTypeMovieFavorites": "Obl\u00edben\u00e9", - "ViewTypeMovieGenres": "\u017d\u00e1nry", - "ViewTypeMusicLatest": "Nejnov\u011bj\u0161\u00ed", - "ViewTypeMusicPlaylists": "Playlisty", - "ViewTypeMusicAlbums": "Alba", - "ViewTypeMusicAlbumArtists": "Alba \u00fam\u011blc\u016f", - "HeaderOtherDisplaySettings": "Nastaven\u00ed zobrazen\u00ed", - "ViewTypeMusicSongs": "Songy", - "ViewTypeMusicFavorites": "Obl\u00edben\u00e9", - "ViewTypeMusicFavoriteAlbums": "Obl\u00edben\u00e1 alba", - "ViewTypeMusicFavoriteArtists": "Obl\u00edben\u00ed \u00fam\u011blci", - "ViewTypeMusicFavoriteSongs": "Obl\u00edben\u00e9 songy", - "ViewTypeFolders": "Slo\u017eky", - "ViewTypeLiveTvRecordingGroups": "Nahr\u00e1vky", - "ViewTypeLiveTvChannels": "Kan\u00e1ly", - "ScheduledTaskFailedWithName": "{0} selhalo", - "LabelRunningTimeValue": "D\u00e9lka m\u00e9dia: {0}", - "ScheduledTaskStartedWithName": "{0} zah\u00e1jeno", - "VersionNumber": "Verze {0}", - "PluginInstalledWithName": "{0} byl nainstalov\u00e1n", - "PluginUpdatedWithName": "{0} byl aktualizov\u00e1n", - "PluginUninstalledWithName": "{0} byl odinstalov\u00e1n", - "ItemAddedWithName": "{0} byl p\u0159id\u00e1n do knihovny", - "ItemRemovedWithName": "{0} byl odstran\u011bn z knihovny", - "LabelIpAddressValue": "IP adresa: {0}", - "DeviceOnlineWithName": "{0} je p\u0159ipojen", - "UserOnlineFromDevice": "{0} se p\u0159ipojil z {1}", - "ProviderValue": "Poskytl: {0}", - "SubtitlesDownloadedForItem": "Sta\u017eeny titulky pro {0}", - "UserConfigurationUpdatedWithName": "Konfigurace u\u017eivatele byla aktualizov\u00e1na pro {0}", - "UserCreatedWithName": "U\u017eivatel {0} byl vytvo\u0159en", - "UserPasswordChangedWithName": "Pro u\u017eivatele {0} byla provedena zm\u011bna hesla", - "UserDeletedWithName": "U\u017eivatel {0} byl smaz\u00e1n", - "MessageServerConfigurationUpdated": "Konfigurace serveru byla aktualizov\u00e1na", - "MessageNamedServerConfigurationUpdatedWithValue": "Konfigurace sekce {0} na serveru byla aktualizov\u00e1na", - "MessageApplicationUpdated": "Emby Server byl aktualizov\u00e1n", - "FailedLoginAttemptWithUserName": "Ne\u00fasp\u011b\u0161n\u00fd pokus o p\u0159ihl\u00e1\u0161en\u00ed z {0}", - "AuthenticationSucceededWithUserName": "{0} \u00fasp\u011b\u0161n\u011b ov\u011b\u0159en", - "DeviceOfflineWithName": "{0} se odpojil", "UserLockedOutWithName": "U\u017eivatel {0} byl odem\u010den", - "UserOfflineFromDevice": "{0} se odpojil od {1}", - "UserStartedPlayingItemWithValues": "{0} spustil p\u0159ehr\u00e1v\u00e1n\u00ed {1}", - "UserStoppedPlayingItemWithValues": "{0} zastavil p\u0159ehr\u00e1v\u00e1n\u00ed {1}", "SubtitleDownloadFailureForItem": "Stahov\u00e1n\u00ed titulk\u016f selhalo pro {0}", - "HeaderUnidentified": "Neidentifikov\u00e1n", - "HeaderImagePrimary": "Prim\u00e1rn\u00ed", - "HeaderImageBackdrop": "Pozad\u00ed", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Avatar u\u017eivatele", - "HeaderOverview": "P\u0159ehled", - "HeaderShortOverview": "Stru\u010dn\u00fd p\u0159ehled", - "HeaderType": "Typ", - "HeaderSeverity": "Z\u00e1va\u017enost", - "HeaderUser": "U\u017eivatel", - "HeaderName": "N\u00e1zev", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premi\u00e9ra", - "HeaderDateAdded": "P\u0159id\u00e1no", - "HeaderReleaseDate": "Datum vyd\u00e1n\u00ed", - "HeaderRuntime": "D\u00e9lka", - "HeaderPlayCount": "P\u0159ehr\u00e1no (po\u010det)", - "HeaderSeason": "Sez\u00f3na", - "HeaderSeasonNumber": "\u010c\u00edslo sez\u00f3ny", - "HeaderSeries": "Seri\u00e1l:", - "HeaderNetwork": "S\u00ed\u0165", - "HeaderYear": "Rok:", - "HeaderYears": "V letech:", - "HeaderParentalRating": "Rodi\u010dovsk\u00e9 hodnocen\u00ed", - "HeaderCommunityRating": "Hodnocen\u00ed komunity", - "HeaderTrailers": "Trailery", - "HeaderSpecials": "Speci\u00e1ly", - "HeaderGameSystems": "Syst\u00e9m hry", - "HeaderPlayers": "Hr\u00e1\u010di:", - "HeaderAlbumArtists": "\u00dam\u011blci alba", - "HeaderAlbums": "Alba", - "HeaderDisc": "Disk", - "HeaderTrack": "Stopa", - "HeaderAudio": "Zvuk", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Vlo\u017een\u00fd obr\u00e1zek", - "HeaderResolution": "Rozli\u0161en\u00ed", - "HeaderSubtitles": "Titulky", - "HeaderGenres": "\u017d\u00e1nry", - "HeaderCountries": "Zem\u011b", - "HeaderStatus": "Stav", - "HeaderTracks": "Stopy", - "HeaderMusicArtist": "Hudebn\u00ed \u00fam\u011blec", - "HeaderLocked": "Uzam\u010deno", - "HeaderStudios": "Studia", - "HeaderActor": "Herci", - "HeaderComposer": "Skladatel\u00e9", - "HeaderDirector": "Re\u017eis\u00e9\u0159i", - "HeaderGuestStar": "Hostuj\u00edc\u00ed hv\u011bzda", - "HeaderProducer": "Producenti", - "HeaderWriter": "Spisovatel\u00e9", - "HeaderParentalRatings": "Rodi\u010dovsk\u00e1 hodnocen\u00ed", - "HeaderCommunityRatings": "Hodnocen\u00ed komunity", - "StartupEmbyServerIsLoading": "Emby Server je na\u010d\u00edt\u00e1n. Zkuste to pros\u00edm znovu v brzk\u00e9 dob\u011b." + "Sync": "Synchronizace", + "User": "U\u017eivatel", + "System": "Syst\u00e9m", + "Application": "Aplikace", + "Plugin": "Z\u00e1suvn\u00fd modul", + "LabelExit": "Uko\u010dit", + "LabelVisitCommunity": "Nav\u0161t\u00edvit komunitu", + "LabelBrowseLibrary": "Proch\u00e1zet knihovnu", + "LabelConfigureServer": "Konfigurovat Emby", + "LabelRestartServer": "Restartovat Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/da.json b/Emby.Server.Implementations/Localization/Core/da.json index d2a628a809..f7a727d1ae 100644 --- a/Emby.Server.Implementations/Localization/Core/da.json +++ b/Emby.Server.Implementations/Localization/Core/da.json @@ -1,102 +1,45 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Enhed: {1}", - "UserDownloadingItemWithValues": "{0} henter {1}", - "FolderTypeMixed": "Blandet indhold", - "FolderTypeMovies": "FIlm", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Voksenfilm", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Musikvideoer", - "FolderTypeHomeVideos": "Hjemmevideoer", - "FolderTypeGames": "Spil", - "FolderTypeBooks": "B\u00f8ger", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Nedarv", - "HeaderCastCrew": "Medvirkende", - "HeaderPeople": "Mennesker", + "Latest": "Seneste", "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Kapitel {0}", + "Inherit": "Arv", + "Books": "B\u00f8ger", + "Music": "Musik", + "Games": "Spil", + "Photos": "Fotos", + "MixedContent": "Blandet indhold", + "MusicVideos": "Musikvideoer", + "HomeVideos": "Hjemmevideoer", + "Playlists": "Spillelister", + "HeaderRecordingGroups": "Optagegrupper", + "HeaderContinueWatching": "Forts\u00e6t Afspilning", + "HeaderFavoriteArtists": "Favoritkunstnere", + "HeaderFavoriteSongs": "Favoritsange", + "HeaderAlbumArtists": "Albumkunstnere", + "HeaderFavoriteAlbums": "Favoritalbum", + "HeaderFavoriteEpisodes": "Favoritepisoder", + "HeaderFavoriteShows": "Favorit serier", + "HeaderNextUp": "N\u00e6ste", + "Favorites": "Favoritter", + "Collections": "Samlinger", + "Channels": "Kanaler", + "Movies": "Film", + "Albums": "Album", + "Artists": "Kunstner", + "Folders": "Mapper", + "Songs": "Sange", + "Shows": "Shows", + "Genres": "Genre", "NameSeasonNumber": "S\u00e6son {0}", - "LabelExit": "Afslut", - "LabelVisitCommunity": "Bes\u00f8g F\u00e6lleskab", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api dokumentation", - "LabelDeveloperResources": "Udviklerressourcer", - "LabelBrowseLibrary": "Gennemse bibliotek", - "LabelConfigureServer": "Konfigurer Emby", - "LabelRestartServer": "Genstart Server", - "CategorySync": "Sync", - "CategoryUser": "Bruger", - "CategorySystem": "System", - "CategoryApplication": "Program", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin fejl", - "NotificationOptionApplicationUpdateAvailable": "Programopdatering tilg\u00e6ngelig", - "NotificationOptionApplicationUpdateInstalled": "Programopdatering installeret", - "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret", - "NotificationOptionPluginInstalled": "Plugin installeret", - "NotificationOptionPluginUninstalled": "Plugin afinstalleret", - "NotificationOptionVideoPlayback": "Videoafspilning startet", - "NotificationOptionAudioPlayback": "Lydafspilning startet", - "NotificationOptionGamePlayback": "Spilafspilning startet", - "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet", - "NotificationOptionAudioPlaybackStopped": "Lydafspilning stoppet", - "NotificationOptionGamePlaybackStopped": "Spilafspilning stoppet", - "NotificationOptionTaskFailed": "Fejl i planlagt opgave", - "NotificationOptionInstallationFailed": "Fejl ved installation", - "NotificationOptionNewLibraryContent": "Nyt indhold tilf\u00f8jet", - "NotificationOptionNewLibraryContentMultiple": "Nyt indhold tilf\u00f8jet (flere)", - "NotificationOptionCameraImageUploaded": "Kamerabillede tilf\u00f8jet", - "NotificationOptionUserLockedOut": "Bruger l\u00e5st", - "NotificationOptionServerRestartRequired": "Genstart af serveren p\u00e5kr\u00e6vet", - "ViewTypePlaylists": "Afspilningslister", - "ViewTypeMovies": "Film", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Spil", - "ViewTypeMusic": "Musik", - "ViewTypeMusicGenres": "Genrer", - "ViewTypeMusicArtists": "Artister", - "ViewTypeBoxSets": "Samlinger", - "ViewTypeChannels": "Kanaler", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Vises nu", - "ViewTypeLatestGames": "Seneste spil", - "ViewTypeRecentlyPlayedGames": "Afspillet for nylig", - "ViewTypeGameFavorites": "Favoritter", - "ViewTypeGameSystems": "Spilsystemer", - "ViewTypeGameGenres": "Genrer", - "ViewTypeTvResume": "Forts\u00e6t", - "ViewTypeTvNextUp": "N\u00e6ste", - "ViewTypeTvLatest": "Seneste", - "ViewTypeTvShowSeries": "Serier", - "ViewTypeTvGenres": "Genrer", - "ViewTypeTvFavoriteSeries": "Favoritserier", - "ViewTypeTvFavoriteEpisodes": "Favoritepisoder", - "ViewTypeMovieResume": "Forts\u00e6t", - "ViewTypeMovieLatest": "Seneste", - "ViewTypeMovieMovies": "Film", - "ViewTypeMovieCollections": "Samlinger", - "ViewTypeMovieFavorites": "Favoritter", - "ViewTypeMovieGenres": "Genrer", - "ViewTypeMusicLatest": "Seneste", - "ViewTypeMusicPlaylists": "Afspilningslister", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Albumartister", - "HeaderOtherDisplaySettings": "Indstillinger for visning", - "ViewTypeMusicSongs": "Sange", - "ViewTypeMusicFavorites": "Favoritter", - "ViewTypeMusicFavoriteAlbums": "Favoritalbums", - "ViewTypeMusicFavoriteArtists": "Favoritartister", - "ViewTypeMusicFavoriteSongs": "Favoritsange", - "ViewTypeFolders": "Mapper", - "ViewTypeLiveTvRecordingGroups": "Optagelser", - "ViewTypeLiveTvChannels": "Kanaler", - "ScheduledTaskFailedWithName": "{0} fejlede", - "LabelRunningTimeValue": "K\u00f8rselstid: {0}", - "ScheduledTaskStartedWithName": "{0} startet", + "AppDeviceValues": "App: {0}, Enhed: {1}", + "UserDownloadingItemWithValues": "{0} downloader {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Kapitel {0}", + "ScheduledTaskFailedWithName": "{0} fejlet", + "LabelRunningTimeValue": "Spilletid: {0}", + "ScheduledTaskStartedWithName": "{0} p\u00e5begyndt", "VersionNumber": "Version {0}", "PluginInstalledWithName": "{0} blev installeret", + "StartupEmbyServerIsLoading": "Emby Server indl\u00e6ser. Pr\u00f8v venligst igen om kort tid.", "PluginUpdatedWithName": "{0} blev opdateret", "PluginUninstalledWithName": "{0} blev afinstalleret", "ItemAddedWithName": "{0} blev tilf\u00f8jet til biblioteket", @@ -105,74 +48,48 @@ "DeviceOnlineWithName": "{0} er forbundet", "UserOnlineFromDevice": "{0} er online fra {1}", "ProviderValue": "Udbyder: {0}", - "SubtitlesDownloadedForItem": "Undertekster hentet til {0}", - "UserConfigurationUpdatedWithName": "Brugerkonfigurationen for {0} er blevet opdateret", - "UserCreatedWithName": "Bruger {0} er skabt", - "UserPasswordChangedWithName": "Adgangskoden for {0} er blevet \u00e6ndret", - "UserDeletedWithName": "Bruger {0} er slettet", - "MessageServerConfigurationUpdated": "Serverkonfigurationen er opdateret", - "MessageNamedServerConfigurationUpdatedWithValue": "Serverkonfiguration sektion {0} er opdateret", - "MessageApplicationUpdated": "Emby er blevet opdateret", - "FailedLoginAttemptWithUserName": "Fejlslagent loginfors\u00f8g fra {0}", - "AuthenticationSucceededWithUserName": "{0} autentificeret", + "SubtitlesDownloadedForItem": "Undertekster downloadet for {0}", + "UserCreatedWithName": "Bruger {0} er blevet oprettet", + "UserPasswordChangedWithName": "Adgangskode er \u00e6ndret for bruger {0}", + "UserDeletedWithName": "Brugeren {0} er blevet slettet", + "UserConfigurationUpdatedWithName": "Brugerkonfiguration er blevet opdateret for {0}", + "MessageServerConfigurationUpdated": "Serverkonfiguration er blevet opdateret", + "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurationssektion {0} er blevet opdateret", + "MessageApplicationUpdated": "Emby Server er blevet opdateret", + "FailedLoginAttemptWithUserName": "Fejlet loginfors\u00f8g fra {0}", + "AuthenticationSucceededWithUserName": "{0} bekr\u00e6ftet med succes", + "UserOfflineFromDevice": "{0} har afbrudt fra {1}", "DeviceOfflineWithName": "{0} har afbrudt forbindelsen", - "UserLockedOutWithName": "Bruger {0} er blevet l\u00e5st", - "UserOfflineFromDevice": "{0} har afbrudt forbindelsen fra {1}", - "UserStartedPlayingItemWithValues": "{0} afspiller {1}", - "UserStoppedPlayingItemWithValues": "{0} har stoppet afpilningen af {1}", - "SubtitleDownloadFailureForItem": "Hentning af undertekster til {0} fejlede", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "Bruger", - "HeaderName": "Navn", - "HeaderDate": "Dato", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Udgivelsesdato", - "HeaderRuntime": "Varighed", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "S\u00e6son", - "HeaderSeasonNumber": "S\u00e6sonnummer", - "HeaderSeries": "Series:", - "HeaderNetwork": "Netv\u00e6rk", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "F\u00e6llesskabsvurdering", - "HeaderTrailers": "Trailere", - "HeaderSpecials": "S\u00e6rudsendelser", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disk", - "HeaderTrack": "Spor", - "HeaderAudio": "Lyd", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Indlejret billede", - "HeaderResolution": "Opl\u00f8sning", - "HeaderSubtitles": "Undertekster", - "HeaderGenres": "Genrer", - "HeaderCountries": "Lande", - "HeaderStatus": "Status", - "HeaderTracks": "Spor", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studier", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Aldersgr\u00e6nser", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "UserStartedPlayingItemWithValues": "{0} har p\u00e5begyndt afspilning af {1}", + "UserStoppedPlayingItemWithValues": "{0} har afsluttet afspilning af {1}", + "NotificationOptionPluginError": "Pluginfejl", + "NotificationOptionApplicationUpdateAvailable": "Opdatering til applikation tilg\u00e6ngelig", + "NotificationOptionApplicationUpdateInstalled": "Opdatering til applikation installeret", + "NotificationOptionPluginUpdateInstalled": "Opdatering til plugin installeret", + "NotificationOptionPluginInstalled": "Plugin installeret", + "NotificationOptionPluginUninstalled": "Plugin afinstalleret", + "NotificationOptionVideoPlayback": "Videoafspilning p\u00e5begyndt", + "NotificationOptionAudioPlayback": "Audioafspilning p\u00e5begyndt", + "NotificationOptionGamePlayback": "Afspilning af Spil p\u00e5begyndt", + "NotificationOptionVideoPlaybackStopped": "Videoafspilning stoppet", + "NotificationOptionAudioPlaybackStopped": "Audioafspilning stoppet", + "NotificationOptionGamePlaybackStopped": "Afspilning af Spil stoppet", + "NotificationOptionTaskFailed": "Planlagt opgave fejlet", + "NotificationOptionInstallationFailed": "Installationsfejl", + "NotificationOptionNewLibraryContent": "Nyt indhold tilf\u00f8jet", + "NotificationOptionCameraImageUploaded": "Kamerabillede uploadet", + "NotificationOptionUserLockedOut": "Bruger l\u00e5st ude", + "NotificationOptionServerRestartRequired": "Genstart af server p\u00e5kr\u00e6vet", + "UserLockedOutWithName": "Brugeren {0} er blevet l\u00e5st ude", + "SubtitleDownloadFailureForItem": "Fejlet i download af undertekster for {0}", + "Sync": "Synk", + "User": "Bruger", + "System": "System", + "Application": "Applikation", + "Plugin": "Plugin", + "LabelExit": "Afslut", + "LabelVisitCommunity": "Bes\u00f8g F\u00e6llesskab", + "LabelBrowseLibrary": "Gennemse Bibliotek", + "LabelConfigureServer": "Konfigurer Emby", + "LabelRestartServer": "Genstart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/de.json b/Emby.Server.Implementations/Localization/Core/de.json index 30e3d9215e..dad7dc6226 100644 --- a/Emby.Server.Implementations/Localization/Core/de.json +++ b/Emby.Server.Implementations/Localization/Core/de.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Bitte warten Sie w\u00e4hrend die Emby Datenbank aktualisiert wird. {0}% verarbeitet.", + "Latest": "Neueste", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "\u00dcbernehmen", + "Books": "B\u00fccher", + "Music": "Musik", + "Games": "Spiele", + "Photos": "Fotos", + "MixedContent": "Gemischte Inhalte", + "MusicVideos": "Musik-Videos", + "HomeVideos": "Heimvideos", + "Playlists": "Wiedergabelisten", + "HeaderRecordingGroups": "Aufnahme-Gruppen", + "HeaderContinueWatching": "Weiterschauen", + "HeaderFavoriteArtists": "Interpreten Favoriten", + "HeaderFavoriteSongs": "Lieder Favoriten", + "HeaderAlbumArtists": "Album-K\u00fcnstler", + "HeaderFavoriteAlbums": "Lieblingsalben", + "HeaderFavoriteEpisodes": "Lieblingsepisoden", + "HeaderFavoriteShows": "Lieblingsserien", + "HeaderNextUp": "Als N\u00e4chstes", + "Favorites": "Favoriten", + "Collections": "Sammlungen", + "Channels": "Kan\u00e4le", + "Movies": "Filme", + "Albums": "Alben", + "Artists": "Interpreten", + "Folders": "Verzeichnisse", + "Songs": "Songs", + "Shows": "Serien", + "Genres": "Genres", + "NameSeasonNumber": "Staffel {0}", "AppDeviceValues": "App: {0}, Ger\u00e4t: {1}", "UserDownloadingItemWithValues": "{0} l\u00e4dt {1} herunter", - "FolderTypeMixed": "Gemischte Inhalte", - "FolderTypeMovies": "Filme", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Videos f\u00fcr Erwachsene", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Musikvideos", - "FolderTypeHomeVideos": "Heimvideos", - "FolderTypeGames": "Spiele", - "FolderTypeBooks": "B\u00fccher", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u00dcbernehmen", - "HeaderCastCrew": "Besetzung & Crew", - "HeaderPeople": "Personen", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Kapitel {0}", - "NameSeasonNumber": "Staffel {0}", - "LabelExit": "Beenden", - "LabelVisitCommunity": "Besuche die Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Dokumentation", - "LabelDeveloperResources": "Entwickler Ressourcen", - "LabelBrowseLibrary": "Bibliothek durchsuchen", - "LabelConfigureServer": "Konfiguriere Emby", - "LabelRestartServer": "Server neustarten", - "CategorySync": "Sync", - "CategoryUser": "Benutzer", - "CategorySystem": "System", - "CategoryApplication": "Anwendung", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Kapitel {0}", + "ScheduledTaskFailedWithName": "{0} fehlgeschlagen", + "LabelRunningTimeValue": "Laufzeit: {0}", + "ScheduledTaskStartedWithName": "{0} gestartet", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} wurde installiert", + "StartupEmbyServerIsLoading": "Emby Server startet, bitte versuche es gleich noch einmal.", + "PluginUpdatedWithName": "{0} wurde aktualisiert", + "PluginUninstalledWithName": "{0} wurde deinstalliert", + "ItemAddedWithName": "{0} wurde der Bibliothek hinzugef\u00fcgt", + "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt", + "LabelIpAddressValue": "IP Adresse: {0}", + "DeviceOnlineWithName": "{0} ist verbunden", + "UserOnlineFromDevice": "{0} ist online von {1}", + "ProviderValue": "Anbieter: {0}", + "SubtitlesDownloadedForItem": "Untertitel heruntergeladen f\u00fcr {0}", + "UserCreatedWithName": "Benutzer {0} wurde erstellt", + "UserPasswordChangedWithName": "Das Passwort f\u00fcr Benutzer {0} wurde ge\u00e4ndert", + "UserDeletedWithName": "Benutzer {0} wurde gel\u00f6scht", + "UserConfigurationUpdatedWithName": "Benutzereinstellungen wurden aktualisiert f\u00fcr {0}", + "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert", + "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert", + "MessageApplicationUpdated": "Emby Server wurde auf den neusten Stand gebracht.", + "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}", + "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert", + "UserOfflineFromDevice": "{0} wurde getrennt von {1}", + "DeviceOfflineWithName": "{0} wurde getrennt", + "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet", + "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet", "NotificationOptionPluginError": "Plugin Fehler", "NotificationOptionApplicationUpdateAvailable": "Anwendungsaktualisierung verf\u00fcgbar", "NotificationOptionApplicationUpdateInstalled": "Anwendungsaktualisierung installiert", @@ -43,136 +74,22 @@ "NotificationOptionVideoPlaybackStopped": "Videowiedergabe gestoppt", "NotificationOptionAudioPlaybackStopped": "Audiowiedergabe gestoppt", "NotificationOptionGamePlaybackStopped": "Spielwiedergabe gestoppt", - "NotificationOptionTaskFailed": "Fehler bei geplanter Aufgabe", + "NotificationOptionTaskFailed": "Geplante Aufgaben fehlgeschlagen", "NotificationOptionInstallationFailed": "Installationsfehler", "NotificationOptionNewLibraryContent": "Neuer Inhalt hinzugef\u00fcgt", - "NotificationOptionNewLibraryContentMultiple": "Neuen Inhalte hinzugef\u00fcgt (mehrere)", "NotificationOptionCameraImageUploaded": "Kamera Bild hochgeladen", "NotificationOptionUserLockedOut": "Benutzer ausgeschlossen", "NotificationOptionServerRestartRequired": "Serverneustart notwendig", - "ViewTypePlaylists": "Wiedergabelisten", - "ViewTypeMovies": "Filme", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Spiele", - "ViewTypeMusic": "Musik", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "K\u00fcnstler", - "ViewTypeBoxSets": "Sammlungen", - "ViewTypeChannels": "Kan\u00e4le", - "ViewTypeLiveTV": "Live-TV", - "ViewTypeLiveTvNowPlaying": "Gerade ausgestrahlt", - "ViewTypeLatestGames": "Neueste Spiele", - "ViewTypeRecentlyPlayedGames": "K\u00fcrzlich abgespielt", - "ViewTypeGameFavorites": "Favoriten", - "ViewTypeGameSystems": "Spielesysteme", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Fortsetzen", - "ViewTypeTvNextUp": "Als n\u00e4chstes", - "ViewTypeTvLatest": "Neueste", - "ViewTypeTvShowSeries": "Serien", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Serien Favoriten", - "ViewTypeTvFavoriteEpisodes": "Episoden Favoriten", - "ViewTypeMovieResume": "Fortsetzen", - "ViewTypeMovieLatest": "Neueste", - "ViewTypeMovieMovies": "Filme", - "ViewTypeMovieCollections": "Sammlungen", - "ViewTypeMovieFavorites": "Favoriten", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Neueste", - "ViewTypeMusicPlaylists": "Wiedergabelisten", - "ViewTypeMusicAlbums": "Alben", - "ViewTypeMusicAlbumArtists": "Album-K\u00fcnstler", - "HeaderOtherDisplaySettings": "Anzeige Einstellungen", - "ViewTypeMusicSongs": "Lieder", - "ViewTypeMusicFavorites": "Favoriten", - "ViewTypeMusicFavoriteAlbums": "Album Favoriten", - "ViewTypeMusicFavoriteArtists": "Interpreten Favoriten", - "ViewTypeMusicFavoriteSongs": "Lieder Favoriten", - "ViewTypeFolders": "Verzeichnisse", - "ViewTypeLiveTvRecordingGroups": "Aufnahmen", - "ViewTypeLiveTvChannels": "Kan\u00e4le", - "ScheduledTaskFailedWithName": "{0} fehlgeschlagen", - "LabelRunningTimeValue": "Laufzeit: {0}", - "ScheduledTaskStartedWithName": "{0} gestartet", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} wurde installiert", - "PluginUpdatedWithName": "{0} wurde aktualisiert", - "PluginUninstalledWithName": "{0} wurde deinstalliert", - "ItemAddedWithName": "{0} wurde der Bibliothek hinzugef\u00fcgt", - "ItemRemovedWithName": "{0} wurde aus der Bibliothek entfernt", - "LabelIpAddressValue": "IP Adresse: {0}", - "DeviceOnlineWithName": "{0} ist verbunden", - "UserOnlineFromDevice": "{0} ist online von {1}", - "ProviderValue": "Anbieter: {0}", - "SubtitlesDownloadedForItem": "Untertitel heruntergeladen f\u00fcr {0}", - "UserConfigurationUpdatedWithName": "Benutzereinstellungen wurden aktualisiert f\u00fcr {0}", - "UserCreatedWithName": "Benutzer {0} wurde erstellt", - "UserPasswordChangedWithName": "Das Passwort f\u00fcr Benutzer {0} wurde ge\u00e4ndert", - "UserDeletedWithName": "Benutzer {0} wurde gel\u00f6scht", - "MessageServerConfigurationUpdated": "Server Einstellungen wurden aktualisiert", - "MessageNamedServerConfigurationUpdatedWithValue": "Der Server Einstellungsbereich {0} wurde aktualisiert", - "MessageApplicationUpdated": "Emby Server wurde auf den neusten Stand gebracht.", - "FailedLoginAttemptWithUserName": "Fehlgeschlagener Anmeldeversuch von {0}", - "AuthenticationSucceededWithUserName": "{0} erfolgreich authentifiziert", - "DeviceOfflineWithName": "{0} wurde getrennt", "UserLockedOutWithName": "Benutzer {0} wurde ausgeschlossen", - "UserOfflineFromDevice": "{0} wurde getrennt von {1}", - "UserStartedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} gestartet", - "UserStoppedPlayingItemWithValues": "{0} hat die Wiedergabe von {1} beendet", "SubtitleDownloadFailureForItem": "Download der Untertitel fehlgeschlagen f\u00fcr {0}", - "HeaderUnidentified": "Nicht identifiziert", - "HeaderImagePrimary": "Bevorzugt", - "HeaderImageBackdrop": "Hintergrund", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Benutzerbild", - "HeaderOverview": "\u00dcbersicht", - "HeaderShortOverview": "Kurz\u00fcbersicht", - "HeaderType": "Typ", - "HeaderSeverity": "Schwere", - "HeaderUser": "Benutzer", - "HeaderName": "Name", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premiere Datum", - "HeaderDateAdded": "Datum hinzugef\u00fcgt", - "HeaderReleaseDate": "Ver\u00f6ffentlichungsdatum", - "HeaderRuntime": "Laufzeit", - "HeaderPlayCount": "Anzahl Wiedergaben", - "HeaderSeason": "Staffel", - "HeaderSeasonNumber": "Staffel Nummer", - "HeaderSeries": "Serien:", - "HeaderNetwork": "Netzwerk", - "HeaderYear": "Jahr:", - "HeaderYears": "Jahre:", - "HeaderParentalRating": "Altersfreigabe", - "HeaderCommunityRating": "Community Bewertung", - "HeaderTrailers": "Trailer", - "HeaderSpecials": "Extras", - "HeaderGameSystems": "Spiele Systeme", - "HeaderPlayers": "Spieler:", - "HeaderAlbumArtists": "Album K\u00fcnstler", - "HeaderAlbums": "Alben", - "HeaderDisc": "Disc", - "HeaderTrack": "St\u00fcck", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Integriertes Bild", - "HeaderResolution": "Aufl\u00f6sung", - "HeaderSubtitles": "Untertitel", - "HeaderGenres": "Genres", - "HeaderCountries": "L\u00e4nder", - "HeaderStatus": "Status", - "HeaderTracks": "Lieder", - "HeaderMusicArtist": "Musik K\u00fcnstler", - "HeaderLocked": "Blockiert", - "HeaderStudios": "Studios", - "HeaderActor": "Schauspieler", - "HeaderComposer": "Komponierer", - "HeaderDirector": "Regie", - "HeaderGuestStar": "Gaststar", - "HeaderProducer": "Produzenten", - "HeaderWriter": "Autoren", - "HeaderParentalRatings": "Altersbeschr\u00e4nkung", - "HeaderCommunityRatings": "Community Bewertungen", - "StartupEmbyServerIsLoading": "Emby Server startet, bitte versuchen Sie es gleich noch einmal." + "Sync": "Synchronisation", + "User": "Benutzer", + "System": "System", + "Application": "Anwendung", + "Plugin": "Plugin", + "LabelExit": "Beenden", + "LabelVisitCommunity": "Besuche die Community", + "LabelBrowseLibrary": "Bibliothek durchsuchen", + "LabelConfigureServer": "Konfiguriere Emby", + "LabelRestartServer": "Server neustarten" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/el.json b/Emby.Server.Implementations/Localization/Core/el.json deleted file mode 100644 index 9e2d321cc4..0000000000 --- a/Emby.Server.Implementations/Localization/Core/el.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\u0391\u03bd\u03ac\u03bc\u03b5\u03b9\u03ba\u03c4\u03bf \u03a0\u03b5\u03c1\u03b9\u03b5\u03c7\u03cc\u03bc\u03b5\u03bd\u03bf", - "FolderTypeMovies": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2", - "FolderTypeMusic": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ae", - "FolderTypeAdultVideos": "\u03a4\u03b1\u03b9\u03bd\u03af\u03b5\u03c2 \u0395\u03bd\u03b7\u03bb\u03af\u03ba\u03c9\u03bd", - "FolderTypePhotos": "\u03a6\u03c9\u03c4\u03bf\u03b3\u03c1\u03b1\u03c6\u03af\u03b5\u03c2", - "FolderTypeMusicVideos": "\u039c\u03bf\u03c5\u03c3\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "FolderTypeHomeVideos": "\u03a0\u03c1\u03bf\u03c3\u03c9\u03c0\u03b9\u03ba\u03ac \u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "FolderTypeGames": "\u03a0\u03b1\u03b9\u03c7\u03bd\u03af\u03b4\u03b9\u03b1", - "FolderTypeBooks": "\u0392\u03b9\u03b2\u03bb\u03af\u03b1", - "FolderTypeTvShows": "\u03a4\u03b7\u03bb\u03b5\u03cc\u03c1\u03b1\u03c3\u03b7", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "\u0397\u03b8\u03bf\u03c0\u03bf\u03b9\u03bf\u03af \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c1\u03b3\u03b5\u03af\u03bf", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "\u0388\u03be\u03bf\u03b4\u03bf\u03c2", - "LabelVisitCommunity": "\u039a\u03bf\u03b9\u03bd\u03cc\u03c4\u03b7\u03c4\u03b1", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "\u03a0\u03b7\u03b3\u03ad\u03c2 \u03a0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ae", - "LabelBrowseLibrary": "\u03a0\u03b5\u03c1\u03b9\u03b7\u03b3\u03b7\u03b8\u03b5\u03af\u03c4\u03b5 \u03c3\u03c4\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7", - "LabelConfigureServer": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 Emby", - "LabelRestartServer": "\u0395\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", - "CategorySync": "\u03a3\u03c5\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03cc\u03c2", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7 {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "\u0389\u03c7\u03bf\u03c2", - "HeaderVideo": "\u0392\u03af\u03bd\u03c4\u03b5\u03bf", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/en-GB.json b/Emby.Server.Implementations/Localization/Core/en-GB.json index 493c6c4e99..ebd240e35c 100644 --- a/Emby.Server.Implementations/Localization/Core/en-GB.json +++ b/Emby.Server.Implementations/Localization/Core/en-GB.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favourite Artists", + "HeaderFavoriteSongs": "Favourite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favourite Albums", + "HeaderFavoriteEpisodes": "Favourite Episodes", + "HeaderFavoriteShows": "Favourite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favourites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Series {0}", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Restart Server", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "IP address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New (multiple) content added", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Showing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favourites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favourite Series", - "ViewTypeTvFavoriteEpisodes": "Favourite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favourites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favourites", - "ViewTypeMusicFavoriteAlbums": "Favourite Albums", - "ViewTypeMusicFavoriteArtists": "Favourite Artists", - "ViewTypeMusicFavoriteSongs": "Favourite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/en-US.json b/Emby.Server.Implementations/Localization/Core/en-US.json index c7f8652334..d24e244df2 100644 --- a/Emby.Server.Implementations/Localization/Core/en-US.json +++ b/Emby.Server.Implementations/Localization/Core/en-US.json @@ -1,164 +1,95 @@ { - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonUnknown": "Season Unknown", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Exit", - "LabelVisitCommunity": "Visit Community", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Restart Server", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Shows", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/es-AR.json b/Emby.Server.Implementations/Localization/Core/es-AR.json index 0555aa9d9c..426e292d66 100644 --- a/Emby.Server.Implementations/Localization/Core/es-AR.json +++ b/Emby.Server.Implementations/Localization/Core/es-AR.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Series", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Salir", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentaci\u00f3n API", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configurar Emby", - "LabelRestartServer": "Reiniciar el servidor", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/es-MX.json b/Emby.Server.Implementations/Localization/Core/es-MX.json index 630c7a0379..a31b55f673 100644 --- a/Emby.Server.Implementations/Localization/Core/es-MX.json +++ b/Emby.Server.Implementations/Localization/Core/es-MX.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Por favor espere mientras la base de datos de su Servidor Emby es actualizada. {0}% completo.", + "Latest": "Recientes", + "ValueSpecialEpisodeName": "Especial - {0}", + "Inherit": "Heredar", + "Books": "Libros", + "Music": "M\u00fasica", + "Games": "Juegos", + "Photos": "Fotos", + "MixedContent": "Contenido mezclado", + "MusicVideos": "Videos musicales", + "HomeVideos": "Videos caseros", + "Playlists": "Listas de reproducci\u00f3n", + "HeaderRecordingGroups": "Grupos de Grabaciones", + "HeaderContinueWatching": "Continuar Viendo", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteSongs": "Canciones Favoritas", + "HeaderAlbumArtists": "Artistas del \u00c1lbum", + "HeaderFavoriteAlbums": "\u00c1lbumes Favoritos", + "HeaderFavoriteEpisodes": "Episodios Preferidos", + "HeaderFavoriteShows": "Programas Preferidos", + "HeaderNextUp": "A Continuaci\u00f3n", + "Favorites": "Favoritos", + "Collections": "Colecciones", + "Channels": "Canales", + "Movies": "Pel\u00edculas", + "Albums": "\u00c1lbumes", + "Artists": "Artistas", + "Folders": "Carpetas", + "Songs": "Canciones", + "Shows": "Programas", + "Genres": "G\u00e9neros", + "NameSeasonNumber": "Temporada {0}", "AppDeviceValues": "App: {0}, Dispositivo: {1}", "UserDownloadingItemWithValues": "{0} esta descargando {1}", - "FolderTypeMixed": "Contenido mezclado", - "FolderTypeMovies": "Pel\u00edculas", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "Videos para adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Videos musicales", - "FolderTypeHomeVideos": "Videos caseros", - "FolderTypeGames": "Juegos", - "FolderTypeBooks": "Libros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Heredar", - "HeaderCastCrew": "Reparto y Personal", - "HeaderPeople": "Personas", - "ValueSpecialEpisodeName": "Especial: {0}", - "LabelChapterName": "Cap\u00edtulo {0}", - "NameSeasonNumber": "Temporada {0}", - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la Comunidad", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentaci\u00f3n del API", - "LabelDeveloperResources": "Recursos para Desarrolladores", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureServer": "Configurar Emby", - "LabelRestartServer": "Reiniciar el Servidor", - "CategorySync": "Sinc.", - "CategoryUser": "Usuario", - "CategorySystem": "Sistema", - "CategoryApplication": "Aplicaci\u00f3n", - "CategoryPlugin": "Complemento", + "HeaderLiveTV": "TV en Vivo", + "ChapterNameValue": "Cap\u00edtulo {0}", + "ScheduledTaskFailedWithName": "{0} fall\u00f3", + "LabelRunningTimeValue": "Duraci\u00f3n: {0}", + "ScheduledTaskStartedWithName": "{0} Iniciado", + "VersionNumber": "Versi\u00f3n {0}", + "PluginInstalledWithName": "{0} fue instalado", + "StartupEmbyServerIsLoading": "El servidor Emby esta cargando. Por favor intente de nuevo dentro de poco.", + "PluginUpdatedWithName": "{0} fue actualizado", + "PluginUninstalledWithName": "{0} fue desinstalado", + "ItemAddedWithName": "{0} fue agregado a la biblioteca", + "ItemRemovedWithName": "{0} fue removido de la biblioteca", + "LabelIpAddressValue": "Direcci\u00f3n IP: {0}", + "DeviceOnlineWithName": "{0} est\u00e1 conectado", + "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}", + "ProviderValue": "Proveedor: {0}", + "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}", + "UserCreatedWithName": "Se ha creado el usuario {0}", + "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}", + "UserDeletedWithName": "Se ha eliminado el usuario {0}", + "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n del usuario {0}", + "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor", + "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor", + "MessageApplicationUpdated": "El servidor Emby ha sido actualizado", + "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesi\u00f3n de {0}", + "AuthenticationSucceededWithUserName": "{0} autenticado con \u00e9xito", + "UserOfflineFromDevice": "{0} se ha desconectado desde {1}", + "DeviceOfflineWithName": "{0} se ha desconectado", + "UserStartedPlayingItemWithValues": "{0} ha iniciado la reproducci\u00f3n de {1}", + "UserStoppedPlayingItemWithValues": "{0} ha detenido la reproducci\u00f3n de {1}", "NotificationOptionPluginError": "Falla de complemento", "NotificationOptionApplicationUpdateAvailable": "Actualizaci\u00f3n de aplicaci\u00f3n disponible", "NotificationOptionApplicationUpdateInstalled": "Actualizaci\u00f3n de aplicaci\u00f3n instalada", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Falla de tarea programada", "NotificationOptionInstallationFailed": "Falla de instalaci\u00f3n", "NotificationOptionNewLibraryContent": "Nuevo contenido agregado", - "NotificationOptionNewLibraryContentMultiple": "Nuevo contenido agregado (varios)", "NotificationOptionCameraImageUploaded": "Imagen de la c\u00e1mara subida", "NotificationOptionUserLockedOut": "Usuario bloqueado", - "NotificationOptionServerRestartRequired": "Reinicio del servidor requerido", - "ViewTypePlaylists": "Listas de Reproducci\u00f3n", - "ViewTypeMovies": "Pel\u00edculas", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Juegos", - "ViewTypeMusic": "M\u00fasica", - "ViewTypeMusicGenres": "G\u00e9neros", - "ViewTypeMusicArtists": "Artistas", - "ViewTypeBoxSets": "Colecciones", - "ViewTypeChannels": "Canales", - "ViewTypeLiveTV": "TV en Vivo", - "ViewTypeLiveTvNowPlaying": "Transmiti\u00e9ndose", - "ViewTypeLatestGames": "Juegos Recientes", - "ViewTypeRecentlyPlayedGames": "Reproducido Reci\u00e9ntemente", - "ViewTypeGameFavorites": "Favoritos", - "ViewTypeGameSystems": "Sistemas de Juego", - "ViewTypeGameGenres": "G\u00e9neros", - "ViewTypeTvResume": "Continuar", - "ViewTypeTvNextUp": "A Continuaci\u00f3n", - "ViewTypeTvLatest": "Recientes", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "G\u00e9neros", - "ViewTypeTvFavoriteSeries": "Series Favoritas", - "ViewTypeTvFavoriteEpisodes": "Episodios Favoritos", - "ViewTypeMovieResume": "Continuar", - "ViewTypeMovieLatest": "Recientes", - "ViewTypeMovieMovies": "Pel\u00edculas", - "ViewTypeMovieCollections": "Colecciones", - "ViewTypeMovieFavorites": "Favoritos", - "ViewTypeMovieGenres": "G\u00e9neros", - "ViewTypeMusicLatest": "Recientes", - "ViewTypeMusicPlaylists": "Listas", - "ViewTypeMusicAlbums": "\u00c1lbumes", - "ViewTypeMusicAlbumArtists": "Artistas del \u00c1lbum", - "HeaderOtherDisplaySettings": "Configuraci\u00f3n de Pantalla", - "ViewTypeMusicSongs": "Canciones", - "ViewTypeMusicFavorites": "Favoritos", - "ViewTypeMusicFavoriteAlbums": "\u00c1lbumes Favoritos", - "ViewTypeMusicFavoriteArtists": "Artistas Favoritos", - "ViewTypeMusicFavoriteSongs": "Canciones Favoritas", - "ViewTypeFolders": "Carpetas", - "ViewTypeLiveTvRecordingGroups": "Grabaciones", - "ViewTypeLiveTvChannels": "Canales", - "ScheduledTaskFailedWithName": "{0} fall\u00f3", - "LabelRunningTimeValue": "Duraci\u00f3n: {0}", - "ScheduledTaskStartedWithName": "{0} Iniciado", - "VersionNumber": "Versi\u00f3n {0}", - "PluginInstalledWithName": "{0} fue instalado", - "PluginUpdatedWithName": "{0} fue actualizado", - "PluginUninstalledWithName": "{0} fue desinstalado", - "ItemAddedWithName": "{0} fue agregado a la biblioteca", - "ItemRemovedWithName": "{0} fue removido de la biblioteca", - "LabelIpAddressValue": "Direcci\u00f3n IP: {0}", - "DeviceOnlineWithName": "{0} est\u00e1 conectado", - "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}", - "ProviderValue": "Proveedor: {0}", - "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}", - "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n del usuario {0}", - "UserCreatedWithName": "Se ha creado el usuario {0}", - "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}", - "UserDeletedWithName": "Se ha eliminado al usuario {0}", - "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor", - "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor", - "MessageApplicationUpdated": "El servidor Emby ha sido actualizado", - "FailedLoginAttemptWithUserName": "Intento fallido de inicio de sesi\u00f3n de {0}", - "AuthenticationSucceededWithUserName": "{0} autenticado con \u00e9xito", - "DeviceOfflineWithName": "{0} se ha desconectado", + "NotificationOptionServerRestartRequired": "Se necesita reiniciar el Servidor", "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", - "UserOfflineFromDevice": "{0} se ha desconectado desde {1}", - "UserStartedPlayingItemWithValues": "{0} ha iniciado la reproducci\u00f3n de {1}", - "UserStoppedPlayingItemWithValues": "{0} ha detenido la reproducci\u00f3n de {1}", "SubtitleDownloadFailureForItem": "Fall\u00f3 la descarga de subt\u00edtulos para {0}", - "HeaderUnidentified": "No Identificado", - "HeaderImagePrimary": "Principal", - "HeaderImageBackdrop": "Imagen de Fondo", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Imagen de Usuario", - "HeaderOverview": "Resumen", - "HeaderShortOverview": "Sinopsis corta:", - "HeaderType": "Tipo", - "HeaderSeverity": "Severidad", - "HeaderUser": "Usuario", - "HeaderName": "Nombre", - "HeaderDate": "Fecha", - "HeaderPremiereDate": "Fecha de Estreno", - "HeaderDateAdded": "Fecha de Adici\u00f3n", - "HeaderReleaseDate": "Fecha de estreno", - "HeaderRuntime": "Duraci\u00f3n", - "HeaderPlayCount": "Contador", - "HeaderSeason": "Temporada", - "HeaderSeasonNumber": "N\u00famero de temporada", - "HeaderSeries": "Series:", - "HeaderNetwork": "Cadena", - "HeaderYear": "A\u00f1o:", - "HeaderYears": "A\u00f1os:", - "HeaderParentalRating": "Clasificaci\u00f3n Parental", - "HeaderCommunityRating": "Calificaci\u00f3n de la comunidad", - "HeaderTrailers": "Tr\u00e1ilers", - "HeaderSpecials": "Especiales", - "HeaderGameSystems": "Sistemas de Juego", - "HeaderPlayers": "Reproductores:", - "HeaderAlbumArtists": "Artistas del \u00c1lbum", - "HeaderAlbums": "\u00c1lbumes", - "HeaderDisc": "Disco", - "HeaderTrack": "Pista", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Im\u00e1gen embebida", - "HeaderResolution": "Resoluci\u00f3n", - "HeaderSubtitles": "Subt\u00edtulos", - "HeaderGenres": "G\u00e9neros", - "HeaderCountries": "Pa\u00edses", - "HeaderStatus": "Estado", - "HeaderTracks": "Pistas", - "HeaderMusicArtist": "Int\u00e9rprete", - "HeaderLocked": "Bloqueado", - "HeaderStudios": "Estudios", - "HeaderActor": "Actores", - "HeaderComposer": "Compositores", - "HeaderDirector": "Directores", - "HeaderGuestStar": "Estrella invitada", - "HeaderProducer": "Productores", - "HeaderWriter": "Guionistas", - "HeaderParentalRatings": "Clasificaci\u00f3n Parental", - "HeaderCommunityRatings": "Clasificaciones de la comunidad", - "StartupEmbyServerIsLoading": "El servidor Emby esta cargando. Por favor intente de nuevo dentro de poco." + "Sync": "Sinc.", + "User": "Usuario", + "System": "Sistema", + "Application": "Aplicaci\u00f3n", + "Plugin": "Complemento", + "LabelExit": "Salir", + "LabelVisitCommunity": "Visitar la Comunidad", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureServer": "Configurar Emby", + "LabelRestartServer": "Reiniciar el Servidor" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/es.json b/Emby.Server.Implementations/Localization/Core/es.json index d1a56240dd..dd2569ddb0 100644 --- a/Emby.Server.Implementations/Localization/Core/es.json +++ b/Emby.Server.Implementations/Localization/Core/es.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Por favor espere mientras la base de datos de su servidor Emby se actualiza. {0}% completado.", + "Latest": "\u00daltimos", + "ValueSpecialEpisodeName": "Especial - {0}", + "Inherit": "Heredar", + "Books": "Libros", + "Music": "M\u00fasica", + "Games": "Juegos", + "Photos": "Fotos", + "MixedContent": "Contenido mixto", + "MusicVideos": "Videos musicales", + "HomeVideos": "V\u00eddeos de inicio", + "Playlists": "Listas reproducci\u00f3n", + "HeaderRecordingGroups": "Grupos de grabaci\u00f3n", + "HeaderContinueWatching": "Continuar viendo", + "HeaderFavoriteArtists": "Artistas favoritos", + "HeaderFavoriteSongs": "Canciones favoritas", + "HeaderAlbumArtists": "Artistas del \u00c1lbum", + "HeaderFavoriteAlbums": "\u00c1lbumes favoritos", + "HeaderFavoriteEpisodes": "Episodios favoritos", + "HeaderFavoriteShows": "Programas favoritos", + "HeaderNextUp": "Siguiendo", + "Favorites": "Favoritos", + "Collections": "Colecciones", + "Channels": "Canales", + "Movies": "Peliculas", + "Albums": "\u00c1lbumes", + "Artists": "Artistas", + "Folders": "Carpetas", + "Songs": "Canciones", + "Shows": "Series", + "Genres": "G\u00e9neros", + "NameSeasonNumber": "Temporada {0}", "AppDeviceValues": "Aplicaci\u00f3n: {0}, Dispositivo: {1}", "UserDownloadingItemWithValues": "{0} est\u00e1 descargando {1}", - "FolderTypeMixed": "Contenido mezclado", - "FolderTypeMovies": "Peliculas", - "FolderTypeMusic": "Musica", - "FolderTypeAdultVideos": "Videos para adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "Videos Musicales", - "FolderTypeHomeVideos": "Videos caseros", - "FolderTypeGames": "Juegos", - "FolderTypeBooks": "Libros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Heredado", - "HeaderCastCrew": "Reparto y equipo t\u00e9cnico", - "HeaderPeople": "Gente", - "ValueSpecialEpisodeName": "Especial - {0}", - "LabelChapterName": "Cap\u00edtulo {0}", - "NameSeasonNumber": "Temporada {0}", - "LabelExit": "Salir", - "LabelVisitCommunity": "Visitar la comunidad", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentaci\u00f3n API", - "LabelDeveloperResources": "Recursos del Desarrollador", - "LabelBrowseLibrary": "Navegar biblioteca", - "LabelConfigureServer": "Configurar Emby", - "LabelRestartServer": "Reiniciar el servidor", - "CategorySync": "Sincronizar", - "CategoryUser": "Usuario", - "CategorySystem": "Sistema", - "CategoryApplication": "Aplicaci\u00f3n", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Error en plugin", - "NotificationOptionApplicationUpdateAvailable": "Disponible actualizaci\u00f3n de la aplicaci\u00f3n", - "NotificationOptionApplicationUpdateInstalled": "Se ha instalado la actualizaci\u00f3n de la aplicaci\u00f3n", - "NotificationOptionPluginUpdateInstalled": "Se ha instalado la actualizaci\u00f3n del plugin", - "NotificationOptionPluginInstalled": "Plugin instalado", - "NotificationOptionPluginUninstalled": "Plugin desinstalado", - "NotificationOptionVideoPlayback": "Reproduccion de video a iniciado", - "NotificationOptionAudioPlayback": "Reproduccion de audio a iniciado", - "NotificationOptionGamePlayback": "Reproduccion de video juego a iniciado", - "NotificationOptionVideoPlaybackStopped": "Reproducci\u00f3n de video detenida", - "NotificationOptionAudioPlaybackStopped": "Reproducci\u00f3n de audio detenida", - "NotificationOptionGamePlaybackStopped": "Reproducci\u00f3n de juego detenida", - "NotificationOptionTaskFailed": "La tarea programada ha fallado", - "NotificationOptionInstallationFailed": "Fallo en la instalaci\u00f3n", - "NotificationOptionNewLibraryContent": "Nuevo contenido a\u00f1adido", - "NotificationOptionNewLibraryContentMultiple": "Nuevo contenido a\u00f1adido (multiple)", - "NotificationOptionCameraImageUploaded": "Imagen de camara se a carcado", - "NotificationOptionUserLockedOut": "Usuario bloqueado", - "NotificationOptionServerRestartRequired": "Se requiere el reinicio del servidor", - "ViewTypePlaylists": "Listas de reproducci\u00f3n", - "ViewTypeMovies": "Pel\u00edculas", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Juegos", - "ViewTypeMusic": "M\u00fasica", - "ViewTypeMusicGenres": "G\u00e9neros", - "ViewTypeMusicArtists": "Artistas", - "ViewTypeBoxSets": "Colecciones", - "ViewTypeChannels": "Canales", - "ViewTypeLiveTV": "Tv en vivo", - "ViewTypeLiveTvNowPlaying": "Transmiti\u00e9ndose ahora", - "ViewTypeLatestGames": "\u00daltimos juegos", - "ViewTypeRecentlyPlayedGames": "Reproducido recientemente", - "ViewTypeGameFavorites": "Favoritos", - "ViewTypeGameSystems": "Sistemas de juego", - "ViewTypeGameGenres": "G\u00e9neros", - "ViewTypeTvResume": "Reanudar", - "ViewTypeTvNextUp": "Pr\u00f3ximamente", - "ViewTypeTvLatest": "\u00daltimas", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "G\u00e9neros", - "ViewTypeTvFavoriteSeries": "Series favoritas", - "ViewTypeTvFavoriteEpisodes": "Episodios favoritos", - "ViewTypeMovieResume": "Reanudar", - "ViewTypeMovieLatest": "\u00daltimas", - "ViewTypeMovieMovies": "Pel\u00edculas", - "ViewTypeMovieCollections": "Colecciones", - "ViewTypeMovieFavorites": "Favoritos", - "ViewTypeMovieGenres": "G\u00e9neros", - "ViewTypeMusicLatest": "\u00daltimas", - "ViewTypeMusicPlaylists": "Lista", - "ViewTypeMusicAlbums": "\u00c1lbumes", - "ViewTypeMusicAlbumArtists": "\u00c1lbumes de artistas", - "HeaderOtherDisplaySettings": "Configuraci\u00f3n de pantalla", - "ViewTypeMusicSongs": "Canciones", - "ViewTypeMusicFavorites": "Favoritos", - "ViewTypeMusicFavoriteAlbums": "\u00c1lbumes favoritos", - "ViewTypeMusicFavoriteArtists": "Artistas favoritos", - "ViewTypeMusicFavoriteSongs": "Canciones favoritas", - "ViewTypeFolders": "Carpetas", - "ViewTypeLiveTvRecordingGroups": "Grabaciones", - "ViewTypeLiveTvChannels": "Canales", + "HeaderLiveTV": "TV en vivo", + "ChapterNameValue": "Cap\u00edtulo {0}", "ScheduledTaskFailedWithName": "{0} fall\u00f3", - "LabelRunningTimeValue": "Tiempo de ejecuci\u00f3n: {0}", - "ScheduledTaskStartedWithName": "{0} iniciado", + "LabelRunningTimeValue": "Tiempo de funcionamiento: {0}", + "ScheduledTaskStartedWithName": "{0} iniciada", "VersionNumber": "Versi\u00f3n {0}", - "PluginInstalledWithName": "{0} ha sido instalado", - "PluginUpdatedWithName": "{0} ha sido actualizado", - "PluginUninstalledWithName": "{0} ha sido desinstalado", - "ItemAddedWithName": "{0} ha sido a\u00f1adido a la biblioteca", - "ItemRemovedWithName": "{0} se ha eliminado de la biblioteca", + "PluginInstalledWithName": "{0} se ha instalado", + "StartupEmbyServerIsLoading": "Emby Server se est\u00e1 cargando. Vuelve a intentarlo en breve.", + "PluginUpdatedWithName": "{0} se actualiz\u00f3", + "PluginUninstalledWithName": "{0} se ha desinstalado", + "ItemAddedWithName": "{0} se ha a\u00f1adido a la biblioteca", + "ItemRemovedWithName": "{0} se elimina de la biblioteca", "LabelIpAddressValue": "Direcci\u00f3n IP: {0}", "DeviceOnlineWithName": "{0} est\u00e1 conectado", - "UserOnlineFromDevice": "{0} est\u00e1 conectado desde {1}", + "UserOnlineFromDevice": "{0} est\u00e1 en l\u00ednea desde {1}", "ProviderValue": "Proveedor: {0}", - "SubtitlesDownloadedForItem": "Subt\u00edtulos descargados para {0}", - "UserConfigurationUpdatedWithName": "Se ha actualizado la configuraci\u00f3n de usuario para {0}", - "UserCreatedWithName": "Se ha creado el usuario {0}", - "UserPasswordChangedWithName": "Contrase\u00f1a cambiada al usuario {0}", - "UserDeletedWithName": "El usuario {0} ha sido eliminado", + "SubtitlesDownloadedForItem": "Descargar subt\u00edtulos para {0}", + "UserCreatedWithName": "El usuario {0} ha sido creado", + "UserPasswordChangedWithName": "Se ha cambiado la contrase\u00f1a para el usuario {0}", + "UserDeletedWithName": "El usuario {0} ha sido borrado", + "UserConfigurationUpdatedWithName": "Configuraci\u00f3n de usuario se ha actualizado para {0}", "MessageServerConfigurationUpdated": "Se ha actualizado la configuraci\u00f3n del servidor", - "MessageNamedServerConfigurationUpdatedWithValue": "Se ha actualizado la secci\u00f3n {0} de la configuraci\u00f3n del servidor", + "MessageNamedServerConfigurationUpdatedWithValue": "La secci\u00f3n de configuraci\u00f3n del servidor {0} ha sido actualizado", "MessageApplicationUpdated": "Se ha actualizado el servidor Emby", - "FailedLoginAttemptWithUserName": "Intento de inicio de sesi\u00f3n fallido desde {0}", - "AuthenticationSucceededWithUserName": "{0} se ha autenticado satisfactoriamente", - "DeviceOfflineWithName": "{0} se ha desconectado", - "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", + "FailedLoginAttemptWithUserName": "Error al intentar iniciar sesi\u00f3n a partir de {0}", + "AuthenticationSucceededWithUserName": "{0} autenticado correctamente", "UserOfflineFromDevice": "{0} se ha desconectado de {1}", - "UserStartedPlayingItemWithValues": "{0} ha empezado a reproducir {1}", - "UserStoppedPlayingItemWithValues": "{0} ha parado de reproducir {1}", - "SubtitleDownloadFailureForItem": "Fallo en la descarga de subt\u00edtulos para {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "Usuario", - "HeaderName": "Nombre", - "HeaderDate": "Fecha", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subt\u00edtulos", - "HeaderGenres": "G\u00e9neros", - "HeaderCountries": "Paises", - "HeaderStatus": "Estado", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Estudios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Clasificaci\u00f3n parental", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "DeviceOfflineWithName": "{0} se ha desconectado", + "UserStartedPlayingItemWithValues": "{0} ha comenzado jugando {1}", + "UserStoppedPlayingItemWithValues": "{0} ha dejado de reproducir {1}", + "NotificationOptionPluginError": "Error en plugin", + "NotificationOptionApplicationUpdateAvailable": "Actualizaci\u00f3n de la aplicaci\u00f3n disponible", + "NotificationOptionApplicationUpdateInstalled": "Actualizaci\u00f3n de la aplicaci\u00f3n instalada", + "NotificationOptionPluginUpdateInstalled": "Actualizaci\u00f3n del complemento instalada", + "NotificationOptionPluginInstalled": "Plugin instalado", + "NotificationOptionPluginUninstalled": "Plugin desinstalado", + "NotificationOptionVideoPlayback": "Se inici\u00f3 la reproducci\u00f3n de v\u00eddeo", + "NotificationOptionAudioPlayback": "Se inici\u00f3 la reproducci\u00f3n de audio", + "NotificationOptionGamePlayback": "Se inici\u00f3 la reproducci\u00f3n del juego", + "NotificationOptionVideoPlaybackStopped": "Reproducci\u00f3n de v\u00eddeo detenida", + "NotificationOptionAudioPlaybackStopped": "Se detuvo la reproducci\u00f3n de audio", + "NotificationOptionGamePlaybackStopped": "Se detuvo la reproducci\u00f3n del juego", + "NotificationOptionTaskFailed": "Error de tarea programada", + "NotificationOptionInstallationFailed": "Error de instalaci\u00f3n", + "NotificationOptionNewLibraryContent": "Nuevo contenido a\u00f1adido", + "NotificationOptionCameraImageUploaded": "Imagen de la c\u00e1mara cargada", + "NotificationOptionUserLockedOut": "Usuario bloqueado", + "NotificationOptionServerRestartRequired": "Requiere reinicio del servidor", + "UserLockedOutWithName": "El usuario {0} ha sido bloqueado", + "SubtitleDownloadFailureForItem": "Error al descargar subt\u00edtulos para {0}", + "Sync": "Sincronizar", + "User": "Usuario", + "System": "Sistema", + "Application": "Aplicaci\u00f3n", + "Plugin": "Plugin", + "LabelExit": "Salida", + "LabelVisitCommunity": "Visita la Comunidad", + "LabelBrowseLibrary": "Navegar la biblioteca", + "LabelConfigureServer": "Configurar Emby", + "LabelRestartServer": "Configurar Emby" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/fi.json b/Emby.Server.Implementations/Localization/Core/fi.json deleted file mode 100644 index 20efa14067..0000000000 --- a/Emby.Server.Implementations/Localization/Core/fi.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Poistu", - "LabelVisitCommunity": "K\u00e4y Yhteis\u00f6ss\u00e4", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Selaa Kirjastoa", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "K\u00e4ynnist\u00e4 Palvelin uudelleen", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/fr-CA.json b/Emby.Server.Implementations/Localization/Core/fr-CA.json index 789817c843..c63948e319 100644 --- a/Emby.Server.Implementations/Localization/Core/fr-CA.json +++ b/Emby.Server.Implementations/Localization/Core/fr-CA.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Veuillez patienter pendant que la base de donn\u00e9e de votre Serveur Emby se met \u00e0 jour. Termin\u00e9e \u00e0 {0}%.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continuer \u00e0 regarder", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "\u00c0 Suivre", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Series", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Quitter", - "LabelVisitCommunity": "Visiter la Communaut\u00e9", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentation de l'API", - "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", - "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", - "LabelConfigureServer": "Configurer Emby", - "LabelRestartServer": "Red\u00e9marrer le Serveur", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/fr.json b/Emby.Server.Implementations/Localization/Core/fr.json index 25c722989c..79fa8e1f8c 100644 --- a/Emby.Server.Implementations/Localization/Core/fr.json +++ b/Emby.Server.Implementations/Localization/Core/fr.json @@ -1,42 +1,73 @@ { - "DbUpgradeMessage": "Veuillez patienter pendant que la base de donn\u00e9e de votre Emby Serveur se met \u00e0 jour. Termin\u00e9e \u00e0 {0}%.", - "AppDeviceValues": "Application : {0}, Appareil: {1}", - "UserDownloadingItemWithValues": "{0} est en train de t\u00e9l\u00e9charger {1}", - "FolderTypeMixed": "Contenus m\u00e9lang\u00e9s", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Musique", - "FolderTypeAdultVideos": "Vid\u00e9os Adultes", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Vid\u00e9os Musical", - "FolderTypeHomeVideos": "Vid\u00e9os personnelles", - "FolderTypeGames": "Jeux", - "FolderTypeBooks": "Livres", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "H\u00e9rite", - "HeaderCastCrew": "\u00c9quipe de tournage", - "HeaderPeople": "Personnes", + "Latest": "R\u00e9cent", "ValueSpecialEpisodeName": "Sp\u00e9cial - {0}", - "LabelChapterName": "Chapitre {0}", + "Inherit": "H\u00e9riter", + "Books": "Livres", + "Music": "Musique", + "Games": "Jeux", + "Photos": "Photos", + "MixedContent": "Contenu mixte", + "MusicVideos": "Vid\u00e9os musicales", + "HomeVideos": "Vid\u00e9os personnelles", + "Playlists": "Listes de lecture", + "HeaderRecordingGroups": "Groupes d'enregistrements", + "HeaderContinueWatching": "Continuer \u00e0 regarder", + "HeaderFavoriteArtists": "Artistes favoris", + "HeaderFavoriteSongs": "Chansons favorites", + "HeaderAlbumArtists": "Artistes de l'album", + "HeaderFavoriteAlbums": "Albums favoris", + "HeaderFavoriteEpisodes": "\u00c9pisodes favoris", + "HeaderFavoriteShows": "S\u00e9ries favorites", + "HeaderNextUp": "En Cours", + "Favorites": "Favoris", + "Collections": "Collections", + "Channels": "Cha\u00eenes", + "Movies": "Films", + "Albums": "Albums", + "Artists": "Artistes", + "Folders": "Dossiers", + "Songs": "Chansons", + "Shows": "\u00c9missions", + "Genres": "Genres", "NameSeasonNumber": "Saison {0}", - "LabelExit": "Quitter", - "LabelVisitCommunity": "Visiter la Communaut\u00e9", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentation de l'API", - "LabelDeveloperResources": "Ressources pour d\u00e9veloppeurs", - "LabelBrowseLibrary": "Parcourir la biblioth\u00e8que", - "LabelConfigureServer": "Configurer Emby", - "LabelRestartServer": "Red\u00e9marrer le Serveur", - "CategorySync": "Sync", - "CategoryUser": "Utilisateur", - "CategorySystem": "Syst\u00e8me", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Erreur de plugin", - "NotificationOptionApplicationUpdateAvailable": "Mise \u00e0 jour d'application disponible", - "NotificationOptionApplicationUpdateInstalled": "Mise \u00e0 jour d'application install\u00e9e", - "NotificationOptionPluginUpdateInstalled": "Mise \u00e0 jour de plugin install\u00e9e", - "NotificationOptionPluginInstalled": "Plugin install\u00e9", - "NotificationOptionPluginUninstalled": "Plugin d\u00e9sinstall\u00e9", + "AppDeviceValues": "Application\u00a0: {0}, Appareil\u00a0: {1}", + "UserDownloadingItemWithValues": "{0} est en train de t\u00e9l\u00e9charger {1}", + "HeaderLiveTV": "TV en direct", + "ChapterNameValue": "Chapitre {0}", + "ScheduledTaskFailedWithName": "{0} a \u00e9chou\u00e9", + "LabelRunningTimeValue": "Dur\u00e9e\u00a0: {0}", + "ScheduledTaskStartedWithName": "{0} a commenc\u00e9", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} a \u00e9t\u00e9 install\u00e9", + "StartupEmbyServerIsLoading": "Le serveur Emby est en cours de chargement. Veuillez r\u00e9essayer dans quelques instants.", + "PluginUpdatedWithName": "{0} a \u00e9t\u00e9 mis \u00e0 jour", + "PluginUninstalledWithName": "{0} a \u00e9t\u00e9 d\u00e9sinstall\u00e9", + "ItemAddedWithName": "{0} a \u00e9t\u00e9 ajout\u00e9 \u00e0 la m\u00e9diath\u00e8que", + "ItemRemovedWithName": "{0} a \u00e9t\u00e9 supprim\u00e9 de la m\u00e9diath\u00e8que", + "LabelIpAddressValue": "Adresse IP\u00a0: {0}", + "DeviceOnlineWithName": "{0} est connect\u00e9", + "UserOnlineFromDevice": "{0} s'est connect\u00e9 depuis {1}", + "ProviderValue": "Fournisseur\u00a0: {0}", + "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s", + "UserCreatedWithName": "L'utilisateur {0} a \u00e9t\u00e9 cr\u00e9\u00e9", + "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a \u00e9t\u00e9 modifi\u00e9", + "UserDeletedWithName": "L'utilisateur {0} a \u00e9t\u00e9 supprim\u00e9", + "UserConfigurationUpdatedWithName": "La configuration utilisateur de {0} a \u00e9t\u00e9 mise \u00e0 jour", + "MessageServerConfigurationUpdated": "La configuration du serveur a \u00e9t\u00e9 mise \u00e0 jour.", + "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a \u00e9t\u00e9 mise \u00e0 jour", + "MessageApplicationUpdated": "Le serveur Emby a \u00e9t\u00e9 mis \u00e0 jour", + "FailedLoginAttemptWithUserName": "\u00c9chec d'une tentative de connexion de {0}", + "AuthenticationSucceededWithUserName": "{0} s'est authentifi\u00e9 avec succ\u00e8s", + "UserOfflineFromDevice": "{0} s'est d\u00e9connect\u00e9 depuis {1}", + "DeviceOfflineWithName": "{0} s'est d\u00e9connect\u00e9", + "UserStartedPlayingItemWithValues": "{0} vient de commencer la lecture de {1}", + "UserStoppedPlayingItemWithValues": "{0} vient d'arr\u00eater la lecture de {1}", + "NotificationOptionPluginError": "Erreur d'extension", + "NotificationOptionApplicationUpdateAvailable": "Mise \u00e0 jour de l'application disponible", + "NotificationOptionApplicationUpdateInstalled": "Mise \u00e0 jour de l'application install\u00e9e", + "NotificationOptionPluginUpdateInstalled": "Mise \u00e0 jour d'extension install\u00e9e", + "NotificationOptionPluginInstalled": "Extension install\u00e9e", + "NotificationOptionPluginUninstalled": "Extension d\u00e9sinstall\u00e9e", "NotificationOptionVideoPlayback": "Lecture vid\u00e9o d\u00e9marr\u00e9e", "NotificationOptionAudioPlayback": "Lecture audio d\u00e9marr\u00e9e", "NotificationOptionGamePlayback": "Lecture de jeu d\u00e9marr\u00e9e", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "\u00c9chec de t\u00e2che planifi\u00e9e", "NotificationOptionInstallationFailed": "\u00c9chec d'installation", "NotificationOptionNewLibraryContent": "Nouveau contenu ajout\u00e9", - "NotificationOptionNewLibraryContentMultiple": "Nouveau contenu ajout\u00e9 (multiple)", - "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a \u00e9t\u00e9 upload\u00e9e", + "NotificationOptionCameraImageUploaded": "L'image de l'appareil photo a \u00e9t\u00e9 transf\u00e9r\u00e9e", "NotificationOptionUserLockedOut": "Utilisateur verrouill\u00e9", "NotificationOptionServerRestartRequired": "Un red\u00e9marrage du serveur est requis", - "ViewTypePlaylists": "Listes de lecture", - "ViewTypeMovies": "Films", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Jeux", - "ViewTypeMusic": "Musique", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artistes", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Cha\u00eenes", - "ViewTypeLiveTV": "TV en direct", - "ViewTypeLiveTvNowPlaying": "En cours de diffusion", - "ViewTypeLatestGames": "Derniers jeux", - "ViewTypeRecentlyPlayedGames": "R\u00e9cemment jou\u00e9", - "ViewTypeGameFavorites": "Favoris", - "ViewTypeGameSystems": "Syst\u00e8me de jeu", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Reprise", - "ViewTypeTvNextUp": "A venir", - "ViewTypeTvLatest": "Derniers", - "ViewTypeTvShowSeries": "S\u00e9ries", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "S\u00e9ries favorites", - "ViewTypeTvFavoriteEpisodes": "Episodes favoris", - "ViewTypeMovieResume": "Reprise", - "ViewTypeMovieLatest": "Dernier", - "ViewTypeMovieMovies": "Films", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favoris", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Dernier", - "ViewTypeMusicPlaylists": "Listes de lectures", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Artiste de l'album", - "HeaderOtherDisplaySettings": "Param\u00e8tres d'affichage", - "ViewTypeMusicSongs": "Chansons", - "ViewTypeMusicFavorites": "Favoris", - "ViewTypeMusicFavoriteAlbums": "Albums favoris", - "ViewTypeMusicFavoriteArtists": "Artistes favoris", - "ViewTypeMusicFavoriteSongs": "Chansons favorites", - "ViewTypeFolders": "R\u00e9pertoires", - "ViewTypeLiveTvRecordingGroups": "Enregistrements", - "ViewTypeLiveTvChannels": "Cha\u00eenes", - "ScheduledTaskFailedWithName": "{0} a \u00e9chou\u00e9", - "LabelRunningTimeValue": "Dur\u00e9e: {0}", - "ScheduledTaskStartedWithName": "{0} a commenc\u00e9", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} a \u00e9t\u00e9 install\u00e9", - "PluginUpdatedWithName": "{0} a \u00e9t\u00e9 mis \u00e0 jour", - "PluginUninstalledWithName": "{0} a \u00e9t\u00e9 d\u00e9sinstall\u00e9", - "ItemAddedWithName": "{0} a \u00e9t\u00e9 ajout\u00e9 \u00e0 la biblioth\u00e8que", - "ItemRemovedWithName": "{0} a \u00e9t\u00e9 supprim\u00e9 de la biblioth\u00e8que", - "LabelIpAddressValue": "Adresse IP: {0}", - "DeviceOnlineWithName": "{0} est connect\u00e9", - "UserOnlineFromDevice": "{0} s'est connect\u00e9 depuis {1}", - "ProviderValue": "Fournisseur : {0}", - "SubtitlesDownloadedForItem": "Les sous-titres de {0} ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s", - "UserConfigurationUpdatedWithName": "La configuration utilisateur de {0} a \u00e9t\u00e9 mise \u00e0 jour", - "UserCreatedWithName": "L'utilisateur {0} a \u00e9t\u00e9 cr\u00e9\u00e9.", - "UserPasswordChangedWithName": "Le mot de passe pour l'utilisateur {0} a \u00e9t\u00e9 modifi\u00e9.", - "UserDeletedWithName": "L'utilisateur {0} a \u00e9t\u00e9 supprim\u00e9.", - "MessageServerConfigurationUpdated": "La configuration du serveur a \u00e9t\u00e9 mise \u00e0 jour.", - "MessageNamedServerConfigurationUpdatedWithValue": "La configuration de la section {0} du serveur a \u00e9t\u00e9 mise \u00e0 jour.", - "MessageApplicationUpdated": "Le serveur Emby a \u00e9t\u00e9 mis \u00e0 jour", - "FailedLoginAttemptWithUserName": "Echec d'une tentative de connexion de {0}", - "AuthenticationSucceededWithUserName": "{0} s'est authentifi\u00e9 avec succ\u00e8s", - "DeviceOfflineWithName": "{0} s'est d\u00e9connect\u00e9", "UserLockedOutWithName": "L'utilisateur {0} a \u00e9t\u00e9 verrouill\u00e9", - "UserOfflineFromDevice": "{0} s'est d\u00e9connect\u00e9 depuis {1}", - "UserStartedPlayingItemWithValues": "{0} vient de commencer la lecture de {1}", - "UserStoppedPlayingItemWithValues": "{0} vient d'arr\u00eater la lecture de {1}", "SubtitleDownloadFailureForItem": "Le t\u00e9l\u00e9chargement des sous-titres pour {0} a \u00e9chou\u00e9.", - "HeaderUnidentified": "Non identifi\u00e9", - "HeaderImagePrimary": "Primaire", - "HeaderImageBackdrop": "Contexte", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Avatar de l'utilisateur", - "HeaderOverview": "Aper\u00e7u", - "HeaderShortOverview": "Synopsys", - "HeaderType": "Type", - "HeaderSeverity": "S\u00e9v\u00e9rit\u00e9", - "HeaderUser": "Utilisateur", - "HeaderName": "Nom", - "HeaderDate": "Date", - "HeaderPremiereDate": "Date de la Premi\u00e8re", - "HeaderDateAdded": "Date d'ajout", - "HeaderReleaseDate": "Date de sortie ", - "HeaderRuntime": "Dur\u00e9e", - "HeaderPlayCount": "Nombre de lectures", - "HeaderSeason": "Saison", - "HeaderSeasonNumber": "Num\u00e9ro de saison", - "HeaderSeries": "S\u00e9ries :", - "HeaderNetwork": "R\u00e9seau", - "HeaderYear": "Ann\u00e9e :", - "HeaderYears": "Ann\u00e9es :", - "HeaderParentalRating": "Classification parentale", - "HeaderCommunityRating": "Note de la communaut\u00e9", - "HeaderTrailers": "Bandes-annonces", - "HeaderSpecials": "Episodes sp\u00e9ciaux", - "HeaderGameSystems": "Plateformes de jeu", - "HeaderPlayers": "Lecteurs :", - "HeaderAlbumArtists": "Artistes sur l'album", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disque", - "HeaderTrack": "Piste", - "HeaderAudio": "Audio", - "HeaderVideo": "Vid\u00e9o", - "HeaderEmbeddedImage": "Image int\u00e9gr\u00e9e", - "HeaderResolution": "R\u00e9solution", - "HeaderSubtitles": "Sous-titres", - "HeaderGenres": "Genres", - "HeaderCountries": "Pays", - "HeaderStatus": "\u00c9tat", - "HeaderTracks": "Pistes", - "HeaderMusicArtist": "Artiste de l'album", - "HeaderLocked": "Verrouill\u00e9", - "HeaderStudios": "Studios", - "HeaderActor": "Acteurs", - "HeaderComposer": "Compositeurs", - "HeaderDirector": "R\u00e9alisateurs", - "HeaderGuestStar": "R\u00f4le principal", - "HeaderProducer": "Producteurs", - "HeaderWriter": "Auteur(e)s", - "HeaderParentalRatings": "Note parentale", - "HeaderCommunityRatings": "Classification de la communaut\u00e9", - "StartupEmbyServerIsLoading": "Le serveur Emby est en cours de chargement. Veuillez r\u00e9essayer dans quelques instant." + "Sync": "Synchroniser", + "User": "Utilisateur", + "System": "Syst\u00e8me", + "Application": "Application", + "Plugin": "Extension", + "LabelExit": "Quitter", + "LabelVisitCommunity": "Visiter la communaut\u00e9", + "LabelBrowseLibrary": "Parcourir la m\u00e9diath\u00e8que", + "LabelConfigureServer": "Configurer Emby", + "LabelRestartServer": "Red\u00e9marrer le serveur" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/gsw.json b/Emby.Server.Implementations/Localization/Core/gsw.json deleted file mode 100644 index 88af82b7e4..0000000000 --- a/Emby.Server.Implementations/Localization/Core/gsw.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Verschiedeni Sache", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musig", - "FolderTypeAdultVideos": "Erwachseni Film", - "FolderTypePhotos": "F\u00f6teli", - "FolderTypeMusicVideos": "Musigvideos", - "FolderTypeHomeVideos": "Heimvideos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "B\u00fcecher", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "erbf\u00e4hig", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Verlasse", - "LabelVisitCommunity": "Bsuech d'Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "API Dokumentatione", - "LabelDeveloperResources": "Entwickler Ressurce", - "LabelBrowseLibrary": "Dursuech d'Bibliothek", - "LabelConfigureServer": "Konfigurier Emby", - "LabelRestartServer": "Server neustarte", - "CategorySync": "Synchronisierig", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/he.json b/Emby.Server.Implementations/Localization/Core/he.json index 137b455441..c934af48f8 100644 --- a/Emby.Server.Implementations/Localization/Core/he.json +++ b/Emby.Server.Implementations/Localization/Core/he.json @@ -1,102 +1,45 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "\u05de\u05d9\u05d5\u05d7\u05d3- {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "\u05e1\u05e8\u05d8\u05d9\u05dd", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "\u05d6'\u05d0\u05e0\u05e8\u05d9\u05dd", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\u05ea\u05d5\u05db\u05df \u05de\u05e2\u05d5\u05e8\u05d1", - "FolderTypeMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "\u05d8\u05dc\u05d5\u05d9\u05d6\u05d9\u05d4", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd \u05d5\u05e6\u05d5\u05d5\u05ea", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "\u05d9\u05e6\u05d9\u05d0\u05d4", - "LabelVisitCommunity": "\u05d1\u05e7\u05e8 \u05d1\u05e7\u05d4\u05d9\u05dc\u05d4", - "LabelGithub": "Github", - "LabelApiDocumentation": "\u05ea\u05d9\u05e2\u05d5\u05d3 API", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "\u05d3\u05e4\u05d3\u05e3 \u05d1\u05e1\u05e4\u05e8\u05d9\u05d4", - "LabelConfigureServer": "\u05e7\u05d1\u05e2 \u05ea\u05e6\u05d5\u05e8\u05ea Emby", - "LabelRestartServer": "\u05d0\u05ea\u05d7\u05dc \u05d0\u05ea \u05d4\u05e9\u05e8\u05ea", - "CategorySync": "\u05e1\u05e0\u05db\u05e8\u05df", - "CategoryUser": "\u05de\u05e9\u05ea\u05de\u05e9", - "CategorySystem": "\u05de\u05e2\u05e8\u05db\u05ea", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "\u05ea\u05e7\u05dc\u05d4 \u05d1\u05ea\u05d5\u05e1\u05e3", - "NotificationOptionApplicationUpdateAvailable": "\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d5\u05db\u05de\u05d4 \u05e7\u05d9\u05d9\u05dd", - "NotificationOptionApplicationUpdateInstalled": "\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d5\u05db\u05e0\u05d4 \u05d4\u05d5\u05ea\u05e7\u05df", - "NotificationOptionPluginUpdateInstalled": "\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d5\u05e1\u05e3 \u05d4\u05d5\u05ea\u05e7\u05df", - "NotificationOptionPluginInstalled": "\u05ea\u05d5\u05e1\u05e3 \u05d4\u05d5\u05ea\u05e7\u05df", - "NotificationOptionPluginUninstalled": "\u05ea\u05d5\u05e1\u05e3 \u05d4\u05d5\u05e1\u05e8", - "NotificationOptionVideoPlayback": "\u05e0\u05d2\u05d9\u05e0\u05ea \u05d5\u05d9\u05d3\u05d0\u05d5 \u05d4\u05d7\u05dc\u05d4", - "NotificationOptionAudioPlayback": "\u05e0\u05d2\u05d9\u05e0\u05ea \u05e6\u05dc\u05d9\u05dc \u05d4\u05d7\u05dc\u05d4", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "\u05e0\u05d2\u05d9\u05e0\u05ea \u05d5\u05d9\u05d3\u05d0\u05d5 \u05d4\u05d5\u05e4\u05e1\u05e7\u05d4", - "NotificationOptionAudioPlaybackStopped": "\u05e0\u05d2\u05d9\u05e0\u05ea \u05e6\u05dc\u05d9\u05dc \u05d4\u05d5\u05e4\u05e1\u05e7\u05d4", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "\u05de\u05e9\u05d9\u05de\u05d4 \u05de\u05ea\u05d5\u05d6\u05de\u05e0\u05ea \u05e0\u05db\u05e9\u05dc\u05d4", - "NotificationOptionInstallationFailed": "\u05d4\u05ea\u05e7\u05e0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4", - "NotificationOptionNewLibraryContent": "\u05ea\u05d5\u05db\u05df \u05d7\u05d3\u05e9 \u05e0\u05d5\u05e1\u05e3", - "NotificationOptionNewLibraryContentMultiple": "\u05d4\u05ea\u05d5\u05d5\u05e1\u05e4\u05d5 \u05ea\u05db\u05e0\u05d9\u05dd \u05d7\u05d3\u05e9\u05d9\u05dd", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "\u05e0\u05d3\u05e8\u05e9\u05ea \u05d4\u05e4\u05e2\u05dc\u05d4 \u05de\u05d7\u05d3\u05e9 \u05e9\u05dc \u05d4\u05e9\u05e8\u05ea", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", - "ViewTypeTvShows": "\u05d8\u05dc\u05d5\u05d9\u05d6\u05d9\u05d4", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "\u05e1\u05e8\u05d8\u05d9\u05dd", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", "ScheduledTaskFailedWithName": "{0} failed", "LabelRunningTimeValue": "Running time: {0}", "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "\u05d2\u05d9\u05e8\u05e1\u05d0 {0}", + "VersionNumber": "Version {0}", "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", "ItemAddedWithName": "{0} was added to the library", @@ -106,73 +49,47 @@ "UserOnlineFromDevice": "{0} is online from {1}", "ProviderValue": "Provider: {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserCreatedWithName": "User {0} has been created", "UserPasswordChangedWithName": "Password has been changed for user {0}", "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageApplicationUpdated": "Emby Server has been updated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", "UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "\u05e9\u05dd", - "HeaderDate": "\u05ea\u05d0\u05e8\u05d9\u05da", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "\u05ea\u05d0\u05e8\u05d9\u05da \u05d4\u05d5\u05e1\u05e4\u05d4", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "\u05e1\u05d3\u05e8\u05d4", - "HeaderNetwork": "Network", - "HeaderYear": "\u05e9\u05e0\u05d4", - "HeaderYears": "\u05e9\u05e0\u05d9\u05dd", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "\u05de\u05e6\u05d1", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "\u05e9\u05d7\u05e7\u05e0\u05d9\u05dd", - "HeaderComposer": "\u05de\u05dc\u05d7\u05d9\u05e0\u05d9\u05dd", - "HeaderDirector": "\u05d1\u05de\u05d0\u05d9\u05dd", - "HeaderGuestStar": "\u05d0\u05de\u05df \u05d0\u05d5\u05e8\u05d7", - "HeaderProducer": "\u05de\u05e4\u05d9\u05e7\u05d9\u05dd", - "HeaderWriter": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "\u05e1\u05e0\u05db\u05e8\u05df", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json index 7a94dc32b7..8d6d95fd8c 100644 --- a/Emby.Server.Implementations/Localization/Core/hr.json +++ b/Emby.Server.Implementations/Localization/Core/hr.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Glumci i ekipa", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Izlaz", - "LabelVisitCommunity": "Posjeti zajednicu", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Pregledaj biblioteku", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Restartiraj Server", - "CategorySync": "Sync", - "CategoryUser": "Korisnik", - "CategorySystem": "Sistem", - "CategoryApplication": "Aplikacija", - "CategoryPlugin": "Dodatak", + "Latest": "Najnovije", + "ValueSpecialEpisodeName": "Specijal - {0}", + "Inherit": "Naslijedi", + "Books": "Knjige", + "Music": "Glazba", + "Games": "Igre", + "Photos": "Slike", + "MixedContent": "Mije\u0161ani sadr\u017eaj", + "MusicVideos": "Glazbeni spotovi", + "HomeVideos": "Ku\u0107ni videi", + "Playlists": "Popisi", + "HeaderRecordingGroups": "Grupa snimka", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Omiljeni izvo\u0111a\u010di", + "HeaderFavoriteSongs": "Omiljene pjesme", + "HeaderAlbumArtists": "Izvo\u0111a\u010di albuma", + "HeaderFavoriteAlbums": "Omiljeni albumi", + "HeaderFavoriteEpisodes": "Omiljene epizode", + "HeaderFavoriteShows": "Omiljene emisije", + "HeaderNextUp": "Sljede\u0107e je", + "Favorites": "Omiljeni", + "Collections": "Kolekcije", + "Channels": "Kanali", + "Movies": "Filmovi", + "Albums": "Albumi", + "Artists": "Izvo\u0111a\u010di", + "Folders": "Mape", + "Songs": "Pjesme", + "Shows": "Shows", + "Genres": "\u017danrovi", + "NameSeasonNumber": "Sezona {0}", + "AppDeviceValues": "Aplikacija: {0}, Ure\u0111aj: {1}", + "UserDownloadingItemWithValues": "{0} se preuzima {1}", + "HeaderLiveTV": "TV u\u017eivo", + "ChapterNameValue": "Poglavlje {0}", + "ScheduledTaskFailedWithName": "{0} neuspjelo", + "LabelRunningTimeValue": "Vrijeme rada: {0}", + "ScheduledTaskStartedWithName": "{0} pokrenuto", + "VersionNumber": "Verzija {0}", + "PluginInstalledWithName": "{0} je instalirano", + "StartupEmbyServerIsLoading": "Emby Server se u\u010ditava. Poku\u0161ajte ponovo kasnije.", + "PluginUpdatedWithName": "{0} je a\u017eurirano", + "PluginUninstalledWithName": "{0} je deinstalirano", + "ItemAddedWithName": "{0} je dodano u biblioteku", + "ItemRemovedWithName": "{0} je uklonjen iz biblioteke", + "LabelIpAddressValue": "Ip adresa: {0}", + "DeviceOnlineWithName": "{0} je spojeno", + "UserOnlineFromDevice": "{0} je online od {1}", + "ProviderValue": "Pru\u017eitelj: {0}", + "SubtitlesDownloadedForItem": "Titlovi prijevoda preuzeti za {0}", + "UserCreatedWithName": "Korisnik {0} je stvoren", + "UserPasswordChangedWithName": "Lozinka je promijenjena za korisnika {0}", + "UserDeletedWithName": "Korisnik {0} je obrisan", + "UserConfigurationUpdatedWithName": "Postavke korisnika su a\u017eurirane za {0}", + "MessageServerConfigurationUpdated": "Postavke servera su a\u017eurirane", + "MessageNamedServerConfigurationUpdatedWithValue": "Odjeljak postavka servera {0} je a\u017euriran", + "MessageApplicationUpdated": "Emby Server je a\u017euriran", + "FailedLoginAttemptWithUserName": "Neuspjeli poku\u0161aj prijave za {0}", + "AuthenticationSucceededWithUserName": "{0} uspje\u0161no ovjerena", + "UserOfflineFromDevice": "{0} se odspojilo od {1}", + "DeviceOfflineWithName": "{0} se odspojilo", + "UserStartedPlayingItemWithValues": "{0} je pokrenuo {1}", + "UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}", "NotificationOptionPluginError": "Dodatak otkazao", "NotificationOptionApplicationUpdateAvailable": "Dostupno a\u017euriranje aplikacije", "NotificationOptionApplicationUpdateInstalled": "Instalirano a\u017euriranje aplikacije", @@ -40,139 +71,25 @@ "NotificationOptionVideoPlayback": "Reprodukcija videa zapo\u010deta", "NotificationOptionAudioPlayback": "Reprodukcija glazbe zapo\u010deta", "NotificationOptionGamePlayback": "Igrica pokrenuta", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionVideoPlaybackStopped": "Reprodukcija videozapisa je zaustavljena", + "NotificationOptionAudioPlaybackStopped": "Reprodukcija audiozapisa je zaustavljena", + "NotificationOptionGamePlaybackStopped": "Reprodukcija igre je zaustavljena", "NotificationOptionTaskFailed": "Zakazan zadatak nije izvr\u0161en", "NotificationOptionInstallationFailed": "Instalacija nije izvr\u0161ena", - "NotificationOptionNewLibraryContent": "Novi sadr\u017eaj dodan", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionNewLibraryContent": "Novi sadr\u017eaj je dodan", + "NotificationOptionCameraImageUploaded": "Slike kamere preuzete", + "NotificationOptionUserLockedOut": "Korisnik zaklju\u010dan", "NotificationOptionServerRestartRequired": "Potrebno ponovo pokretanje servera", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Verzija {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Ime", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "UserLockedOutWithName": "Korisnik {0} je zaklju\u010dan", + "SubtitleDownloadFailureForItem": "Titlovi prijevoda nisu preuzeti za {0}", + "Sync": "Sink.", + "User": "Korisnik", + "System": "Sistem", + "Application": "Aplikacija", + "Plugin": "Dodatak", + "LabelExit": "Izlaz", + "LabelVisitCommunity": "Posjeti zajednicu", + "LabelBrowseLibrary": "Pregledaj biblioteku", + "LabelConfigureServer": "Podesi Emby", + "LabelRestartServer": "Restartiraj Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/hu.json b/Emby.Server.Implementations/Localization/Core/hu.json index 2b9d28d8c0..3dd9b4347a 100644 --- a/Emby.Server.Implementations/Localization/Core/hu.json +++ b/Emby.Server.Implementations/Localization/Core/hu.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "K\u00e9rlek v\u00e1rj, m\u00edg az Emby Szerver adatb\u00e1zis friss\u00fcl. {0}% k\u00e9sz.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Vegyes tartalom", - "FolderTypeMovies": "Filmek", - "FolderTypeMusic": "Zen\u00e9k", - "FolderTypeAdultVideos": "Feln\u0151tt vide\u00f3k", - "FolderTypePhotos": "F\u00e9nyk\u00e9pek", - "FolderTypeMusicVideos": "Zenei vide\u00f3k", - "FolderTypeHomeVideos": "H\u00e1zi vide\u00f3k", - "FolderTypeGames": "J\u00e1t\u00e9kok", - "FolderTypeBooks": "K\u00f6nyvek", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Szerepl\u0151k & R\u00e9sztvev\u0151k", - "HeaderPeople": "Emberek", - "ValueSpecialEpisodeName": "K\u00fcl\u00f6nleges - {0}", - "LabelChapterName": "Fejezet {0}", - "NameSeasonNumber": "\u00c9vad {0}", - "LabelExit": "Kil\u00e9p\u00e9s", - "LabelVisitCommunity": "K\u00f6z\u00f6ss\u00e9g", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api dokument\u00e1ci\u00f3", - "LabelDeveloperResources": "Fejleszt\u0151i eszk\u00f6z\u00f6k", - "LabelBrowseLibrary": "M\u00e9diat\u00e1r tall\u00f3z\u00e1sa", - "LabelConfigureServer": "Emby konfigur\u00e1l\u00e1sa", - "LabelRestartServer": "Szerver \u00fajraindit\u00e1sa", - "CategorySync": "Sync", - "CategoryUser": "Felhaszn\u00e1l\u00f3", - "CategorySystem": "Rendszer", - "CategoryApplication": "Alkalmaz\u00e1s", - "CategoryPlugin": "B\u0151v\u00edtm\u00e9ny", + "Latest": "Leg\u00fajabb", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Vet\u00edt\u00e9s(ek) folytat\u00e1sa", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Kedvenc Epiz\u00f3dok", + "HeaderFavoriteShows": "Kedvenc M\u0171sorok", + "HeaderNextUp": "K\u00f6vetkezik", + "Favorites": "Favorites", + "Collections": "Gy\u0171jtem\u00e9nyek", + "Channels": "Csatorn\u00e1k", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "M\u0171fajok", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "Program: {0}, Eszk\u00f6z: {1}", + "UserDownloadingItemWithValues": "{0} let\u00f6lti {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Jelenet {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} telep\u00edtve", + "StartupEmbyServerIsLoading": "Emby Szerver bet\u00f6lt\u0151dik. K\u00e9rj\u00fck, pr\u00f3b\u00e1ld meg \u00fajra k\u00e9s\u0151bb.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} elt\u00e1vol\u00edtva", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Szerver konfigur\u00e1ci\u00f3 friss\u00fclt", + "MessageNamedServerConfigurationUpdatedWithValue": "Szerver konfigur\u00e1ci\u00f3s r\u00e9sz {0} friss\u00edtve", + "MessageApplicationUpdated": "Emby Szerver friss\u00edtve", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} kijelentkezett innen {1}", + "DeviceOfflineWithName": "{0} kijelentkezett", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "B\u0151v\u00edtm\u00e9ny hiba", "NotificationOptionApplicationUpdateAvailable": "Friss\u00edt\u00e9s el\u00e9rhet\u0151", "NotificationOptionApplicationUpdateInstalled": "Program friss\u00edt\u00e9s telep\u00edtve", "NotificationOptionPluginUpdateInstalled": "B\u0151v\u00edtm\u00e9ny friss\u00edt\u00e9s telep\u00edtve", "NotificationOptionPluginInstalled": "B\u0151v\u00edtm\u00e9ny telep\u00edtve", "NotificationOptionPluginUninstalled": "B\u0151v\u00edtm\u00e9ny elt\u00e1vol\u00edtva", - "NotificationOptionVideoPlayback": "Vide\u00f3 elind\u00edtva", - "NotificationOptionAudioPlayback": "Zene elind\u00edtva", - "NotificationOptionGamePlayback": "J\u00e1t\u00e9k elind\u00edtva", - "NotificationOptionVideoPlaybackStopped": "Vide\u00f3 meg\u00e1ll\u00edtva", - "NotificationOptionAudioPlaybackStopped": "Zene meg\u00e1ll\u00edtva", - "NotificationOptionGamePlaybackStopped": "J\u00e1t\u00e9k meg\u00e1ll\u00edtva", + "NotificationOptionVideoPlayback": "Vide\u00f3 lej\u00e1tsz\u00e1s elkezdve", + "NotificationOptionAudioPlayback": "Audi\u00f3 lej\u00e1tsz\u00e1s elkezdve", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Vide\u00f3 lej\u00e1tsz\u00e1s befejezve", + "NotificationOptionAudioPlaybackStopped": "Audi\u00f3 lej\u00e1tsz\u00e1s befejezve", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Telep\u00edt\u00e9si hiba", "NotificationOptionNewLibraryContent": "\u00daj tartalom hozz\u00e1adva", - "NotificationOptionNewLibraryContentMultiple": "\u00daj tartalom hozz\u00e1adva (t\u00f6bbsz\u00f6r\u00f6s)", "NotificationOptionCameraImageUploaded": "Kamera k\u00e9p felt\u00f6ltve", "NotificationOptionUserLockedOut": "Felhaszn\u00e1l\u00f3 tiltva", - "NotificationOptionServerRestartRequired": "\u00dajraind\u00edt\u00e1s sz\u00fcks\u00e9ges", - "ViewTypePlaylists": "Lej\u00e1tsz\u00e1si list\u00e1k", - "ViewTypeMovies": "Filmek", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "J\u00e1t\u00e9kok", - "ViewTypeMusic": "Zene", - "ViewTypeMusicGenres": "M\u0171fajok", - "ViewTypeMusicArtists": "M\u0171v\u00e9szek", - "ViewTypeBoxSets": "Gy\u0171jtem\u00e9nyek", - "ViewTypeChannels": "Csatorn\u00e1k", - "ViewTypeLiveTV": "\u00c9l\u0151 TV", - "ViewTypeLiveTvNowPlaying": "Most J\u00e1tszott", - "ViewTypeLatestGames": "Leg\u00fajabb J\u00e1t\u00e9kok", - "ViewTypeRecentlyPlayedGames": "Legut\u00f3bb J\u00e1tszott", - "ViewTypeGameFavorites": "Kedvencek", - "ViewTypeGameSystems": "J\u00e1t\u00e9k Rendszer", - "ViewTypeGameGenres": "M\u0171fajok", - "ViewTypeTvResume": "Folytat\u00e1s", - "ViewTypeTvNextUp": "K\u00f6vetkez\u0151", - "ViewTypeTvLatest": "Leg\u00fajabb", - "ViewTypeTvShowSeries": "Sorozat", - "ViewTypeTvGenres": "M\u0171fajok", - "ViewTypeTvFavoriteSeries": "Kedvenc Sorozat", - "ViewTypeTvFavoriteEpisodes": "Kedvenc R\u00e9szek", - "ViewTypeMovieResume": "Folytat\u00e1s", - "ViewTypeMovieLatest": "Leg\u00fajabb", - "ViewTypeMovieMovies": "Filmek", - "ViewTypeMovieCollections": "Gy\u0171jtem\u00e9nyek", - "ViewTypeMovieFavorites": "Kedvencek", - "ViewTypeMovieGenres": "M\u0171fajok", - "ViewTypeMusicLatest": "Leg\u00fajabb", - "ViewTypeMusicPlaylists": "Lej\u00e1tsz\u00e1si list\u00e1k", - "ViewTypeMusicAlbums": "Albumok", - "ViewTypeMusicAlbumArtists": "Album El\u0151ad\u00f3k", - "HeaderOtherDisplaySettings": "Megjelen\u00edt\u00e9si Be\u00e1ll\u00edt\u00e1sok", - "ViewTypeMusicSongs": "Dalok", - "ViewTypeMusicFavorites": "Kedvencek", - "ViewTypeMusicFavoriteAlbums": "Kedvenc Albumok", - "ViewTypeMusicFavoriteArtists": "Kedvenc M\u0171v\u00e9szek", - "ViewTypeMusicFavoriteSongs": "Kedvenc Dalok", - "ViewTypeFolders": "K\u00f6nyvt\u00e1rak", - "ViewTypeLiveTvRecordingGroups": "Felv\u00e9telek", - "ViewTypeLiveTvChannels": "Csatorn\u00e1k", - "ScheduledTaskFailedWithName": "{0} hiba", - "LabelRunningTimeValue": "Fut\u00e1si id\u0151: {0}", - "ScheduledTaskStartedWithName": "{0} elkezdve", - "VersionNumber": "Verzi\u00f3 {0}", - "PluginInstalledWithName": "{0} telep\u00edtve", - "PluginUpdatedWithName": "{0} friss\u00edtve", - "PluginUninstalledWithName": "{0} elt\u00e1vol\u00edtva", - "ItemAddedWithName": "{0} k\u00f6nyvt\u00e1rhoz adva", - "ItemRemovedWithName": "{0} t\u00f6r\u00f6lve a k\u00f6nyvt\u00e1rb\u00f3l", - "LabelIpAddressValue": "Ip c\u00edm: {0}", - "DeviceOnlineWithName": "{0} kapcsol\u00f3dva", - "UserOnlineFromDevice": "{0} akt\u00edv err\u0151l {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Felirat let\u00f6lt\u00e9se ehhez {0}", - "UserConfigurationUpdatedWithName": "A k\u00f6vetkez\u0151 felhaszn\u00e1l\u00f3 be\u00e1ll\u00edt\u00e1sai friss\u00edtve {0}", - "UserCreatedWithName": "Felhaszn\u00e1l\u00f3 {0} l\u00e9trehozva", - "UserPasswordChangedWithName": "Jelsz\u00f3 m\u00f3dos\u00edtva ennek a felhaszn\u00e1l\u00f3nak {0}", - "UserDeletedWithName": "Felhaszn\u00e1l\u00f3 {0} t\u00f6r\u00f6lve", - "MessageServerConfigurationUpdated": "Szerver be\u00e1ll\u00edt\u00e1sok friss\u00edtve", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server friss\u00edtve", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} sz\u00e9tkapcsolt", - "UserLockedOutWithName": "A k\u00f6vetkez\u0151 felhaszn\u00e1l\u00f3 tiltva {0}", - "UserOfflineFromDevice": "{0} kil\u00e9pett innen {1}", - "UserStartedPlayingItemWithValues": "{0} megkezdte j\u00e1tszani a(z) {1}", - "UserStoppedPlayingItemWithValues": "{0} befejezte a(z) {1}", - "SubtitleDownloadFailureForItem": "Nem siker\u00fcl a felirat let\u00f6lt\u00e9s ehhez {0}", - "HeaderUnidentified": "Azonos\u00edtatlan", - "HeaderImagePrimary": "Els\u0151dleges", - "HeaderImageBackdrop": "H\u00e1tt\u00e9r", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Felhaszn\u00e1l\u00f3 K\u00e9p", - "HeaderOverview": "\u00c1ttekint\u00e9s", - "HeaderShortOverview": "R\u00f6vid \u00c1ttekint\u00e9s", - "HeaderType": "T\u00edpus", - "HeaderSeverity": "Severity", - "HeaderUser": "Felhaszn\u00e1l\u00f3", - "HeaderName": "N\u00e9v", - "HeaderDate": "D\u00e1tum", - "HeaderPremiereDate": "Megjelen\u00e9s D\u00e1tuma", - "HeaderDateAdded": "Hozz\u00e1adva", - "HeaderReleaseDate": "Megjelen\u00e9s d\u00e1tuma", - "HeaderRuntime": "J\u00e1t\u00e9kid\u0151", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "\u00c9vad", - "HeaderSeasonNumber": "\u00c9vad sz\u00e1ma", - "HeaderSeries": "Sorozatok:", - "HeaderNetwork": "H\u00e1l\u00f3zat", - "HeaderYear": "\u00c9v:", - "HeaderYears": "\u00c9v:", - "HeaderParentalRating": "Korhat\u00e1r besorol\u00e1s", - "HeaderCommunityRating": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9s", - "HeaderTrailers": "El\u0151zetesek", - "HeaderSpecials": "Speci\u00e1lis", - "HeaderGameSystems": "J\u00e1t\u00e9k Rendszer", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albumok", - "HeaderDisc": "Lemez", - "HeaderTrack": "S\u00e1v", - "HeaderAudio": "Audi\u00f3", - "HeaderVideo": "Vide\u00f3", - "HeaderEmbeddedImage": "Be\u00e1gyazott k\u00e9p", - "HeaderResolution": "Felbont\u00e1s", - "HeaderSubtitles": "Feliratok", - "HeaderGenres": "M\u0171fajok", - "HeaderCountries": "Orsz\u00e1gok", - "HeaderStatus": "\u00c1llapot", - "HeaderTracks": "S\u00e1vok", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Z\u00e1rt", - "HeaderStudios": "St\u00fadi\u00f3k", - "HeaderActor": "Sz\u00edn\u00e9szek", - "HeaderComposer": "Zeneszerz\u0151k", - "HeaderDirector": "Rendez\u0151k", - "HeaderGuestStar": "Vend\u00e9g szt\u00e1r", - "HeaderProducer": "Producerek", - "HeaderWriter": "\u00cdr\u00f3k", - "HeaderParentalRatings": "Korhat\u00e1r besorol\u00e1s", - "HeaderCommunityRatings": "K\u00f6z\u00f6ss\u00e9gi \u00e9rt\u00e9kel\u00e9sek", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "NotificationOptionServerRestartRequired": "Szerver \u00fajraind\u00edt\u00e1s sz\u00fcks\u00e9ges", + "UserLockedOutWithName": "User {0} has been locked out", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Szinkroniz\u00e1l", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Kil\u00e9p\u00e9s", + "LabelVisitCommunity": "K\u00f6z\u00f6ss\u00e9g", + "LabelBrowseLibrary": "M\u00e9diat\u00e1r tall\u00f3z\u00e1sa", + "LabelConfigureServer": "Emby konfigur\u00e1l\u00e1sa", + "LabelRestartServer": "Szerver \u00fajraindit\u00e1sa" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/id.json b/Emby.Server.Implementations/Localization/Core/id.json deleted file mode 100644 index 8d64b63c46..0000000000 --- a/Emby.Server.Implementations/Localization/Core/id.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Silahkan menunggu sementara database Emby Server anda diupgrade. {0}% selesai.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Mewarisi", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Keluar", - "LabelVisitCommunity": "Kunjungi Komunitas", - "LabelGithub": "Github", - "LabelApiDocumentation": "Dokumentasi Api", - "LabelDeveloperResources": "Sumber daya Pengembang", - "LabelBrowseLibrary": "Telusuri Pustaka", - "LabelConfigureServer": "Konfigurasi Emby", - "LabelRestartServer": "Hidupkan ulang Server", - "CategorySync": "Singkron", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/it.json b/Emby.Server.Implementations/Localization/Core/it.json index d2d697c3ee..7c21d27131 100644 --- a/Emby.Server.Implementations/Localization/Core/it.json +++ b/Emby.Server.Implementations/Localization/Core/it.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Pi\u00f9 recenti", + "ValueSpecialEpisodeName": "Speciale - {0}", + "Inherit": "Eredita", + "Books": "Libri", + "Music": "Musica", + "Games": "Giochi", + "Photos": "Foto", + "MixedContent": "Contenuto misto", + "MusicVideos": "Video musicali", + "HomeVideos": "Video personali", + "Playlists": "Playlist", + "HeaderRecordingGroups": "Gruppi di Registrazione", + "HeaderContinueWatching": "Continua a guardare", + "HeaderFavoriteArtists": "Artisti preferiti", + "HeaderFavoriteSongs": "Brani Preferiti", + "HeaderAlbumArtists": "Artisti Album", + "HeaderFavoriteAlbums": "Album preferiti", + "HeaderFavoriteEpisodes": "Episodi Preferiti", + "HeaderFavoriteShows": "Show preferiti", + "HeaderNextUp": "Prossimo", + "Favorites": "Preferiti", + "Collections": "Collezioni", + "Channels": "Canali", + "Movies": "Film", + "Albums": "Album", + "Artists": "Artisti", + "Folders": "Cartelle", + "Songs": "Canzoni", + "Shows": "Programmi", + "Genres": "Generi", + "NameSeasonNumber": "Stagione {0}", "AppDeviceValues": "App: {0}, Dispositivo: {1}", "UserDownloadingItemWithValues": "{0} sta scaricando {1}", - "FolderTypeMixed": "contenuto misto", - "FolderTypeMovies": "Film", - "FolderTypeMusic": "Musica", - "FolderTypeAdultVideos": "Video per adulti", - "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Video musicali", - "FolderTypeHomeVideos": "Video personali", - "FolderTypeGames": "Giochi", - "FolderTypeBooks": "Libri", - "FolderTypeTvShows": "Tv", - "FolderTypeInherit": "ereditare", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "Persone", - "ValueSpecialEpisodeName": "Speciali - {0}", - "LabelChapterName": "Capitolo {0}", - "NameSeasonNumber": "Stagione {0}", - "LabelExit": "Esci", - "LabelVisitCommunity": "Visita la Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentazione Api", - "LabelDeveloperResources": "Risorse programmatori", - "LabelBrowseLibrary": "Esplora la libreria", - "LabelConfigureServer": "Configura Emby", - "LabelRestartServer": "Riavvia Server", - "CategorySync": "Sincronizza", - "CategoryUser": "Utente", - "CategorySystem": "Sistema", - "CategoryApplication": "Applicazione", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin fallito", - "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile", - "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato", - "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plugin installato", - "NotificationOptionPluginInstalled": "Plugin installato", - "NotificationOptionPluginUninstalled": "Plugin disinstallato", - "NotificationOptionVideoPlayback": "La riproduzione video \u00e8 iniziata", - "NotificationOptionAudioPlayback": "Riproduzione audio iniziata", - "NotificationOptionGamePlayback": "Gioco avviato", - "NotificationOptionVideoPlaybackStopped": "Riproduzione video interrotta", - "NotificationOptionAudioPlaybackStopped": "Audio Fermato", - "NotificationOptionGamePlaybackStopped": "Gioco Fermato", - "NotificationOptionTaskFailed": "Operazione pianificata fallita", - "NotificationOptionInstallationFailed": "Installazione fallita", - "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto", - "NotificationOptionNewLibraryContentMultiple": "Nuovi contenuti aggiunti (multipli)", - "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata", - "NotificationOptionUserLockedOut": "Utente bloccato", - "NotificationOptionServerRestartRequired": "Riavvio del server necessario", - "ViewTypePlaylists": "Playlist", - "ViewTypeMovies": "Film", - "ViewTypeTvShows": "Serie Tv", - "ViewTypeGames": "Giochi", - "ViewTypeMusic": "Musica", - "ViewTypeMusicGenres": "Generi", - "ViewTypeMusicArtists": "Artisti", - "ViewTypeBoxSets": "Collezioni", - "ViewTypeChannels": "Canali", - "ViewTypeLiveTV": "TV in diretta", - "ViewTypeLiveTvNowPlaying": "Ora in onda", - "ViewTypeLatestGames": "Ultimi Giorchi", - "ViewTypeRecentlyPlayedGames": "Guardato di recente", - "ViewTypeGameFavorites": "Preferiti", - "ViewTypeGameSystems": "Configurazione gioco", - "ViewTypeGameGenres": "Generi", - "ViewTypeTvResume": "Riprendi", - "ViewTypeTvNextUp": "Prossimi", - "ViewTypeTvLatest": "Ultimi", - "ViewTypeTvShowSeries": "Serie", - "ViewTypeTvGenres": "Generi", - "ViewTypeTvFavoriteSeries": "Serie Preferite", - "ViewTypeTvFavoriteEpisodes": "Episodi Preferiti", - "ViewTypeMovieResume": "Riprendi", - "ViewTypeMovieLatest": "Ultimi", - "ViewTypeMovieMovies": "Film", - "ViewTypeMovieCollections": "Collezioni", - "ViewTypeMovieFavorites": "Preferiti", - "ViewTypeMovieGenres": "Generi", - "ViewTypeMusicLatest": "Ultimi", - "ViewTypeMusicPlaylists": "Playlist", - "ViewTypeMusicAlbums": "Album", - "ViewTypeMusicAlbumArtists": "Album Artisti", - "HeaderOtherDisplaySettings": "Impostazioni Video", - "ViewTypeMusicSongs": "Canzoni", - "ViewTypeMusicFavorites": "Preferiti", - "ViewTypeMusicFavoriteAlbums": "Album preferiti", - "ViewTypeMusicFavoriteArtists": "Artisti preferiti", - "ViewTypeMusicFavoriteSongs": "Canzoni Preferite", - "ViewTypeFolders": "Cartelle", - "ViewTypeLiveTvRecordingGroups": "Registrazioni", - "ViewTypeLiveTvChannels": "canali", - "ScheduledTaskFailedWithName": "{0} Falliti", + "HeaderLiveTV": "Diretta TV", + "ChapterNameValue": "Capitolo {0}", + "ScheduledTaskFailedWithName": "{0} fallito", "LabelRunningTimeValue": "Durata: {0}", - "ScheduledTaskStartedWithName": "{0} Avviati", + "ScheduledTaskStartedWithName": "{0} avviati", "VersionNumber": "Versione {0}", - "PluginInstalledWithName": "{0} sono stati Installati", - "PluginUpdatedWithName": "{0} sono stati aggiornati", - "PluginUninstalledWithName": "{0} non sono stati installati", - "ItemAddedWithName": "{0} aggiunti alla libreria", - "ItemRemovedWithName": "{0} rimossi dalla libreria", + "PluginInstalledWithName": "{0} \u00e8 stato Installato", + "StartupEmbyServerIsLoading": "Emby server si sta avviando. Per favore riprova pi\u00f9 tardi.", + "PluginUpdatedWithName": "{0} \u00e8 stato aggiornato", + "PluginUninstalledWithName": "{0} \u00e8 stato disinstallato", + "ItemAddedWithName": "{0} \u00e8 stato aggiunto alla libreria", + "ItemRemovedWithName": "{0} \u00e8 stato rimosso dalla libreria", "LabelIpAddressValue": "Indirizzo IP: {0}", "DeviceOnlineWithName": "{0} \u00e8 connesso", "UserOnlineFromDevice": "{0} \u00e8 online da {1}", "ProviderValue": "Provider: {0}", "SubtitlesDownloadedForItem": "Sottotitoli scaricati per {0}", - "UserConfigurationUpdatedWithName": "Configurazione utente \u00e8 stata aggiornata per {0}", - "UserCreatedWithName": "Utente {0} \u00e8 stato creato", - "UserPasswordChangedWithName": "Password utente cambiata per {0}", - "UserDeletedWithName": "Utente {0} \u00e8 stato cancellato", - "MessageServerConfigurationUpdated": "Configurazione server aggioprnata", - "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} \u00e8 stata aggiornata", + "UserCreatedWithName": "L'utente {0} \u00e8 stato creato", + "UserPasswordChangedWithName": "La password \u00e8 stata cambiata per l'utente {0}", + "UserDeletedWithName": "L'utente {0} \u00e8 stato rimosso", + "UserConfigurationUpdatedWithName": "La configurazione utente \u00e8 stata aggiornata per {0}", + "MessageServerConfigurationUpdated": "La configurazione del server \u00e8 stata aggiornata", + "MessageNamedServerConfigurationUpdatedWithValue": "La sezione {0} della configurazione server \u00e8 stata aggiornata", "MessageApplicationUpdated": "Il Server Emby \u00e8 stato aggiornato", - "FailedLoginAttemptWithUserName": "Login fallito da {0}", - "AuthenticationSucceededWithUserName": "{0} Autenticati con successo", - "DeviceOfflineWithName": "{0} \u00e8 stato disconesso", + "FailedLoginAttemptWithUserName": "Tentativo di accesso fallito da {0}", + "AuthenticationSucceededWithUserName": "{0} autenticato con successo", + "UserOfflineFromDevice": "{0} \u00e8 stato disconnesso da {1}", + "DeviceOfflineWithName": "{0} \u00e8 stato disconnesso", + "UserStartedPlayingItemWithValues": "{0} ha avviato la riproduzione di {1}", + "UserStoppedPlayingItemWithValues": "{0} ha interrotto la riproduzione di {1}", + "NotificationOptionPluginError": "Errore del Plug-in", + "NotificationOptionApplicationUpdateAvailable": "Aggiornamento dell'applicazione disponibile", + "NotificationOptionApplicationUpdateInstalled": "Aggiornamento dell'applicazione installato", + "NotificationOptionPluginUpdateInstalled": "Aggiornamento del plug-in installato", + "NotificationOptionPluginInstalled": "Plug-in installato", + "NotificationOptionPluginUninstalled": "Plug-in disinstallato", + "NotificationOptionVideoPlayback": "La riproduzione video \u00e8 iniziata", + "NotificationOptionAudioPlayback": "La riproduzione audio \u00e8 iniziata", + "NotificationOptionGamePlayback": "Il gioco \u00e8 stato avviato", + "NotificationOptionVideoPlaybackStopped": "La riproduzione video \u00e8 stata interrotta", + "NotificationOptionAudioPlaybackStopped": "La riproduzione audio \u00e8 stata interrotta", + "NotificationOptionGamePlaybackStopped": "Il gioco \u00e8 stato fermato", + "NotificationOptionTaskFailed": "Operazione pianificata fallita", + "NotificationOptionInstallationFailed": "Installazione fallita", + "NotificationOptionNewLibraryContent": "Nuovo contenuto aggiunto", + "NotificationOptionCameraImageUploaded": "Immagine fotocamera caricata", + "NotificationOptionUserLockedOut": "Utente bloccato", + "NotificationOptionServerRestartRequired": "Riavvio del server necessario", "UserLockedOutWithName": "L'utente {0} \u00e8 stato bloccato", - "UserOfflineFromDevice": "{0} \u00e8 stato disconesso da {1}", - "UserStartedPlayingItemWithValues": "{0} \u00e8 partito da {1}", - "UserStoppedPlayingItemWithValues": "{0} stoppato {1}", - "SubtitleDownloadFailureForItem": "Sottotitoli non scaricati per {0}", - "HeaderUnidentified": "Non identificata", - "HeaderImagePrimary": "Primaria", - "HeaderImageBackdrop": "Sfondo", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Immagine utente", - "HeaderOverview": "Panoramica", - "HeaderShortOverview": "breve panoramica", - "HeaderType": "Tipo", - "HeaderSeverity": "gravit\u00e0", - "HeaderUser": "Utente", - "HeaderName": "Nome", - "HeaderDate": "Data", - "HeaderPremiereDate": "Data della prima", - "HeaderDateAdded": "Aggiunto il", - "HeaderReleaseDate": "Data Rilascio", - "HeaderRuntime": "Durata", - "HeaderPlayCount": "Visto N\u00b0", - "HeaderSeason": "Stagione", - "HeaderSeasonNumber": "Stagione Numero", - "HeaderSeries": "Serie:", - "HeaderNetwork": "Rete", - "HeaderYear": "Anno:", - "HeaderYears": "Anni", - "HeaderParentalRating": "Valutazione parentale", - "HeaderCommunityRating": "Voto Comunit\u00e0", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Speciali", - "HeaderGameSystems": "Sistemi di gioco", - "HeaderPlayers": "Giocatori", - "HeaderAlbumArtists": "Album Artisti", - "HeaderAlbums": "Album", - "HeaderDisc": "Disco", - "HeaderTrack": "Traccia", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Immagine incorporata", - "HeaderResolution": "Risoluzione", - "HeaderSubtitles": "Sottotitoli", - "HeaderGenres": "Generi", - "HeaderCountries": "Paesi", - "HeaderStatus": "Stato", - "HeaderTracks": "Traccia", - "HeaderMusicArtist": "Musica artisti", - "HeaderLocked": "Bloccato", - "HeaderStudios": "Studios", - "HeaderActor": "Attori", - "HeaderComposer": "Compositori", - "HeaderDirector": "Registi", - "HeaderGuestStar": "Personaggi famosi", - "HeaderProducer": "Produttori", - "HeaderWriter": "Sceneggiatori", - "HeaderParentalRatings": "Valutazioni genitori", - "HeaderCommunityRatings": "Valutazione Comunity", - "StartupEmbyServerIsLoading": "Emby server si sta avviando. Riprova tra un po" + "SubtitleDownloadFailureForItem": "Impossibile scaricare i sottotitoli per {0}", + "Sync": "Sincronizza", + "User": "Utente", + "System": "Sistema", + "Application": "Applicazione", + "Plugin": "Plug-in", + "LabelExit": "Esci", + "LabelVisitCommunity": "Visita il forum di discussione", + "LabelBrowseLibrary": "Esplora la libreria", + "LabelConfigureServer": "Configura Emby", + "LabelRestartServer": "Riavvia Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/kk.json b/Emby.Server.Implementations/Localization/Core/kk.json index 93252c30b8..73647ea12c 100644 --- a/Emby.Server.Implementations/Localization/Core/kk.json +++ b/Emby.Server.Implementations/Localization/Core/kk.json @@ -1,38 +1,69 @@ { - "DbUpgradeMessage": "Emby Server \u0434\u0435\u0440\u0435\u043a\u049b\u043e\u0440\u044b\u04a3\u044b\u0437\u0434\u044b\u04a3 \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u044b\u043b\u0443\u044b\u043d \u043a\u04af\u0442\u0435 \u0442\u04b1\u0440\u044b\u04a3\u044b\u0437. {0} % \u0430\u044f\u049b\u0442\u0430\u043b\u0434\u044b.", + "Latest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", + "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", + "Inherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", + "Books": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", + "Music": "\u041c\u0443\u0437\u044b\u043a\u0430", + "Games": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", + "Photos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", + "MixedContent": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", + "MusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "HomeVideos": "\u04ae\u0439\u043b\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", + "Playlists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", + "HeaderRecordingGroups": "\u0416\u0430\u0437\u0431\u0430 \u0442\u043e\u043f\u0442\u0430\u0440\u044b", + "HeaderContinueWatching": "\u049a\u0430\u0440\u0430\u0443\u0434\u044b \u0436\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u0443", + "HeaderFavoriteArtists": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "HeaderFavoriteSongs": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", + "HeaderAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", + "HeaderFavoriteAlbums": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "HeaderFavoriteEpisodes": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", + "HeaderFavoriteShows": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", + "HeaderNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", + "Favorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", + "Collections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", + "Channels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", + "Movies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", + "Albums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", + "Artists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", + "Folders": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", + "Songs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", + "Shows": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043c\u0434\u0435\u0440", + "Genres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", + "NameSeasonNumber": "{0}-\u043c\u0430\u0443\u0441\u044b\u043c", "AppDeviceValues": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430: {0}, \u049a\u04b1\u0440\u044b\u043b\u0493\u044b: {1}", "UserDownloadingItemWithValues": "{0} \u043c\u044b\u043d\u0430\u043d\u044b \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443\u0434\u0430: {1}", - "FolderTypeMixed": "\u0410\u0440\u0430\u043b\u0430\u0441 \u043c\u0430\u0437\u043c\u04b1\u043d", - "FolderTypeMovies": "\u041a\u0438\u043d\u043e", - "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0415\u0440\u0435\u0441\u0435\u043a\u0442\u0456\u043a \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypePhotos": "\u0424\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440", - "FolderTypeMusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044b\u049b \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440", - "FolderTypeHomeVideos": "\u04ae\u0439 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0440\u0456", - "FolderTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "FolderTypeBooks": "\u041a\u0456\u0442\u0430\u043f\u0442\u0430\u0440", - "FolderTypeTvShows": "\u0422\u0414", - "FolderTypeInherit": "\u041c\u04b1\u0440\u0430\u0493\u0430 \u0438\u0435\u043b\u0435\u043d\u0443", - "HeaderCastCrew": "\u0421\u043e\u043c\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440 \u043c\u0435\u043d \u0442\u04af\u0441\u0456\u0440\u0443\u0448\u0456\u043b\u0435\u0440", - "HeaderPeople": "\u0410\u0434\u0430\u043c\u0434\u0430\u0440", - "ValueSpecialEpisodeName": "\u0410\u0440\u043d\u0430\u0439\u044b - {0}", - "LabelChapterName": "{0}-\u0441\u0430\u0445\u043d\u0430", - "NameSeasonNumber": "{0}-\u0441\u0435\u0437\u043e\u043d", - "LabelExit": "\u0428\u044b\u0493\u0443", - "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", - "LabelGithub": "GitHub \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439\u0456", - "LabelApiDocumentation": "API \u049b\u04b1\u0436\u0430\u0442\u0442\u0430\u043c\u0430\u0441\u044b", - "LabelDeveloperResources": "\u0416\u0430\u0441\u0430\u049b\u0442\u0430\u0443\u0448\u044b \u043a\u04e9\u0437\u0434\u0435\u0440\u0456", - "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", - "LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443", - "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443", - "CategorySync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", - "CategoryUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", - "CategorySystem": "\u0416\u04af\u0439\u0435", - "CategoryApplication": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430", - "CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\u043d", + "HeaderLiveTV": "\u042d\u0444\u0438\u0440", + "ChapterNameValue": "{0}-\u0441\u0430\u0445\u043d\u0430", + "ScheduledTaskFailedWithName": "{0} \u0441\u04d9\u0442\u0441\u0456\u0437", + "LabelRunningTimeValue": "\u0406\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u0443\u0430\u049b\u044b\u0442\u044b: {0}", + "ScheduledTaskStartedWithName": "{0} \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0434\u044b", + "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", + "PluginInstalledWithName": "{0} \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b", + "StartupEmbyServerIsLoading": "Emby Server \u0436\u04af\u043a\u0442\u0435\u043b\u0443\u0434\u0435. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u04e9\u043f \u04b1\u0437\u0430\u043c\u0430\u0439 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437.", + "PluginUpdatedWithName": "{0} \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", + "PluginUninstalledWithName": "{0} \u0436\u043e\u0439\u044b\u043b\u0434\u044b", + "ItemAddedWithName": "{0} \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456", + "ItemRemovedWithName": "{0} \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b", + "LabelIpAddressValue": "IP-\u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b: {0}", + "DeviceOnlineWithName": "{0} \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d", + "UserOnlineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d", + "ProviderValue": "\u0416\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456: {0}", + "SubtitlesDownloadedForItem": "{0} \u04af\u0448\u0456\u043d \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0434\u044b", + "UserCreatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d", + "UserPasswordChangedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u04af\u0448\u0456\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0434\u0456", + "UserDeletedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u043e\u0439\u044b\u043b\u0493\u0430\u043d", + "UserConfigurationUpdatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", + "MessageServerConfigurationUpdated": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", + "MessageNamedServerConfigurationUpdatedWithValue": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456 ({0} \u0431\u04e9\u043b\u0456\u043c\u0456) \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", + "MessageApplicationUpdated": "Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.", + "FailedLoginAttemptWithUserName": "{0} \u0442\u0430\u0440\u0430\u043f\u044b\u043d\u0430\u043d \u043a\u0456\u0440\u0443 \u04d9\u0440\u0435\u043a\u0435\u0442\u0456 \u0441\u04d9\u0442\u0441\u0456\u0437", + "AuthenticationSucceededWithUserName": "{0} \u0442\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b\u0493\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0443\u044b \u0441\u04d9\u0442\u0442\u0456", + "UserOfflineFromDevice": "{0} - {1} \u0442\u0430\u0440\u0430\u043f\u044b\u043d\u0430\u043d \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d", + "DeviceOfflineWithName": "{0} \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d", + "UserStartedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0434\u044b", + "UserStoppedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b\u043d \u0442\u043e\u049b\u0442\u0430\u0442\u0442\u044b", "NotificationOptionPluginError": "\u041f\u043b\u0430\u0433\u0438\u043d \u0441\u04d9\u0442\u0441\u0456\u0437\u0434\u0456\u0433\u0456", - "NotificationOptionApplicationUpdateAvailable": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u044b \u049b\u043e\u043b \u0436\u0435\u0442\u0456\u043c\u0434\u0456", + "NotificationOptionApplicationUpdateAvailable": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u044b \u049b\u043e\u043b\u0436\u0435\u0442\u0456\u043c\u0434\u0456", "NotificationOptionApplicationUpdateInstalled": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430 \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u044b \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b", "NotificationOptionPluginUpdateInstalled": "\u041f\u043b\u0430\u0433\u0438\u043d \u0436\u0430\u04a3\u0430\u0440\u0442\u0443\u044b \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b", "NotificationOptionPluginInstalled": "\u041f\u043b\u0430\u0433\u0438\u043d \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "\u0416\u043e\u0441\u043f\u0430\u0440\u043b\u0430\u0493\u0430\u043d \u0442\u0430\u043f\u0441\u044b\u0440\u043c\u0430 \u0441\u04d9\u0442\u0441\u0456\u0437\u0434\u0456\u0433\u0456", "NotificationOptionInstallationFailed": "\u041e\u0440\u043d\u0430\u0442\u0443 \u0441\u04d9\u0442\u0441\u0456\u0437\u0434\u0456\u0433\u0456", "NotificationOptionNewLibraryContent": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d \u04af\u0441\u0442\u0435\u043b\u0433\u0435\u043d", - "NotificationOptionNewLibraryContentMultiple": "\u0416\u0430\u04a3\u0430 \u043c\u0430\u0437\u043c\u04b1\u043d \u049b\u043e\u0441\u044b\u043b\u0434\u044b (\u043a\u04e9\u043f\u0442\u0435\u0433\u0435\u043d)", "NotificationOptionCameraImageUploaded": "\u041a\u0430\u043c\u0435\u0440\u0430\u0434\u0430\u043d \u0444\u043e\u0442\u043e\u0441\u0443\u0440\u0435\u0442 \u043a\u0435\u0440\u0456 \u049b\u043e\u0442\u0430\u0440\u044b\u043b\u0493\u0430\u043d", "NotificationOptionUserLockedOut": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u0441\u0430\u0443\u043b\u044b", "NotificationOptionServerRestartRequired": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443 \u049b\u0430\u0436\u0435\u0442", - "ViewTypePlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", - "ViewTypeMovies": "\u041a\u0438\u043d\u043e", - "ViewTypeTvShows": "\u0422\u0414", - "ViewTypeGames": "\u041e\u0439\u044b\u043d\u0434\u0430\u0440", - "ViewTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "ViewTypeMusicGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "ViewTypeMusicArtists": "\u041e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", - "ViewTypeBoxSets": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", - "ViewTypeChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "ViewTypeLiveTV": "\u042d\u0444\u0438\u0440\u043b\u0456\u043a \u0422\u0414", - "ViewTypeLiveTvNowPlaying": "\u042d\u0444\u0438\u0440\u0434\u0435", - "ViewTypeLatestGames": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u043e\u0439\u044b\u043d\u0434\u0430\u0440", - "ViewTypeRecentlyPlayedGames": "\u0416\u0430\u049b\u044b\u043d\u0434\u0430 \u043e\u0439\u043d\u0430\u0442\u044b\u043b\u0493\u0430\u043d\u0434\u0430\u0440", - "ViewTypeGameFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "ViewTypeGameSystems": "\u041e\u0439\u044b\u043d \u0436\u04af\u0439\u0435\u043b\u0435\u0440\u0456", - "ViewTypeGameGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "ViewTypeTvResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u044b", - "ViewTypeTvNextUp": "\u041a\u0435\u0437\u0435\u043a\u0442\u0456", - "ViewTypeTvLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", - "ViewTypeTvShowSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", - "ViewTypeTvGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "ViewTypeTvFavoriteSeries": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0442\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", - "ViewTypeTvFavoriteEpisodes": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440", - "ViewTypeMovieResume": "\u0416\u0430\u043b\u0493\u0430\u0441\u0442\u044b\u0440\u043c\u0430\u043b\u044b", - "ViewTypeMovieLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", - "ViewTypeMovieMovies": "\u0424\u0438\u043b\u044c\u043c\u0434\u0435\u0440", - "ViewTypeMovieCollections": "\u0416\u0438\u044b\u043d\u0442\u044b\u049b\u0442\u0430\u0440", - "ViewTypeMovieFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "ViewTypeMovieGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "ViewTypeMusicLatest": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456", - "ViewTypeMusicPlaylists": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u0440\u0456", - "ViewTypeMusicAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", - "ViewTypeMusicAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", - "HeaderOtherDisplaySettings": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456", - "ViewTypeMusicSongs": "\u04d8\u0443\u0435\u043d\u0434\u0435\u0440", - "ViewTypeMusicFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440", - "ViewTypeMusicFavoriteAlbums": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u0430\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", - "ViewTypeMusicFavoriteArtists": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440", - "ViewTypeMusicFavoriteSongs": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b \u04d9\u0443\u0435\u043d\u0434\u0435\u0440", - "ViewTypeFolders": "\u049a\u0430\u043b\u0442\u0430\u043b\u0430\u0440", - "ViewTypeLiveTvRecordingGroups": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440", - "ViewTypeLiveTvChannels": "\u0410\u0440\u043d\u0430\u043b\u0430\u0440", - "ScheduledTaskFailedWithName": "{0} \u0441\u04d9\u0442\u0441\u0456\u0437", - "LabelRunningTimeValue": "\u0406\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0443 \u0443\u0430\u049b\u044b\u0442\u044b: {0}", - "ScheduledTaskStartedWithName": "{0} \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u044b\u043b\u0434\u044b", - "VersionNumber": "\u041d\u04b1\u0441\u049b\u0430\u0441\u044b: {0}", - "PluginInstalledWithName": "{0} \u043e\u0440\u043d\u0430\u0442\u044b\u043b\u0434\u044b", - "PluginUpdatedWithName": "{0} \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", - "PluginUninstalledWithName": "{0} \u0436\u043e\u0439\u044b\u043b\u0434\u044b", - "ItemAddedWithName": "{0} (\u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0493\u0430 \u04af\u0441\u0442\u0435\u043b\u0456\u043d\u0434\u0456)", - "ItemRemovedWithName": "{0} (\u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u0434\u0430\u043d \u0430\u043b\u0430\u0441\u0442\u0430\u043b\u0434\u044b)", - "LabelIpAddressValue": "IP \u043c\u0435\u043a\u0435\u043d\u0436\u0430\u0439\u044b: {0}", - "DeviceOnlineWithName": "{0} \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d", - "UserOnlineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d", - "ProviderValue": "\u0416\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456: {0}", - "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 {0} \u04af\u0448\u0456\u043d \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0434\u044b", - "UserConfigurationUpdatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u04af\u0448\u0456\u043d \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", - "UserCreatedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u0430\u0441\u0430\u043b\u0493\u0430\u043d", - "UserPasswordChangedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u04af\u0448\u0456\u043d \u049b\u04b1\u043f\u0438\u044f \u0441\u04e9\u0437 \u04e9\u0437\u0433\u0435\u0440\u0442\u0456\u043b\u0434\u0456", - "UserDeletedWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u0436\u043e\u0439\u044b\u043b\u0493\u0430\u043d", - "MessageServerConfigurationUpdated": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456 \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", - "MessageNamedServerConfigurationUpdatedWithValue": "\u0421\u0435\u0440\u0432\u0435\u0440 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456 ({0} \u0431\u04e9\u043b\u0456\u043c\u0456) \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b", - "MessageApplicationUpdated": "Emby Server \u0436\u0430\u04a3\u0430\u0440\u0442\u044b\u043b\u0434\u044b.", - "FailedLoginAttemptWithUserName": "{0} \u043a\u0456\u0440\u0443 \u04d9\u0440\u0435\u043a\u0435\u0442\u0456 \u0441\u04d9\u0442\u0441\u0456\u0437", - "AuthenticationSucceededWithUserName": "{0} \u0442\u04af\u043f\u043d\u04b1\u0441\u049b\u0430\u043b\u044b\u0493\u044b\u043d \u0440\u0430\u0441\u0442\u0430\u043b\u0443\u044b \u0441\u04d9\u0442\u0442\u0456", - "DeviceOfflineWithName": "{0} \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d", "UserLockedOutWithName": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b {0} \u049b\u04b1\u0440\u0441\u0430\u0443\u043b\u044b", - "UserOfflineFromDevice": "{0} - {1} \u0430\u0440\u049b\u044b\u043b\u044b \u0430\u0436\u044b\u0440\u0430\u0442\u044b\u043b\u0493\u0430\u043d", - "UserStartedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b\u043d \u0431\u0430\u0441\u0442\u0430\u0434\u044b", - "UserStoppedPlayingItemWithValues": "{0} - {1} \u043e\u0439\u043d\u0430\u0442\u0443\u044b\u043d \u0442\u043e\u049b\u0442\u0430\u0442\u0442\u044b", "SubtitleDownloadFailureForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440 {0} \u04af\u0448\u0456\u043d \u0436\u04af\u043a\u0442\u0435\u043b\u0456\u043f \u0430\u043b\u044b\u043d\u0443\u044b \u0441\u04d9\u0442\u0441\u0456\u0437", - "HeaderUnidentified": "\u0410\u043d\u044b\u049b\u0442\u0430\u043b\u043c\u0430\u0493\u0430\u043d", - "HeaderImagePrimary": "\u041d\u0435\u0433\u0456\u0437\u0433\u0456", - "HeaderImageBackdrop": "\u0410\u0440\u0442\u049b\u044b \u0441\u0443\u0440\u0435\u0442", - "HeaderImageLogo": "\u041b\u043e\u0433\u043e\u0442\u0438\u043f", - "HeaderUserPrimaryImage": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u0441\u0443\u0440\u0435\u0442\u0456", - "HeaderOverview": "\u0416\u0430\u043b\u043f\u044b \u0448\u043e\u043b\u0443", - "HeaderShortOverview": "\u049a\u044b\u0441\u049b\u0430\u0448\u0430 \u0448\u043e\u043b\u0443", - "HeaderType": "\u0422\u04af\u0440\u0456", - "HeaderSeverity": "\u049a\u0438\u044b\u043d\u0434\u044b\u0493\u044b", - "HeaderUser": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", - "HeaderName": "\u0410\u0442\u044b", - "HeaderDate": "\u041a\u04af\u043d\u0456", - "HeaderPremiereDate": "\u0422\u04b1\u0441\u0430\u0443\u043a\u0435\u0441\u0435\u0440 \u043a\u04af\u043d\u0456", - "HeaderDateAdded": "\u04ae\u0441\u0442\u0435\u043b\u0433\u0435\u043d \u043a\u04af\u043d\u0456", - "HeaderReleaseDate": "\u0428\u044b\u0493\u0430\u0440\u0443 \u043a\u04af\u043d\u0456", - "HeaderRuntime": "\u04b0\u0437\u0430\u049b\u0442\u044b\u0493\u044b", - "HeaderPlayCount": "\u041e\u0439\u043d\u0430\u0442\u0443 \u0435\u0441\u0435\u0431\u0456", - "HeaderSeason": "\u041c\u0430\u0443\u0441\u044b\u043c", - "HeaderSeasonNumber": "\u041c\u0430\u0443\u0441\u044b\u043c \u043d\u04e9\u043c\u0456\u0440\u0456", - "HeaderSeries": "\u0422\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440", - "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0436\u0435\u043b\u0456", - "HeaderYear": "\u0416\u044b\u043b:", - "HeaderYears": "\u0416\u044b\u043b\u0434\u0430\u0440:", - "HeaderParentalRating": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u044b", - "HeaderCommunityRating": "\u049a\u0430\u0443\u044b\u043c \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u044b", - "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u043b\u0435\u0440", - "HeaderSpecials": "\u0410\u0440\u043d\u0430\u0439\u044b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0434\u0430\u0440", - "HeaderGameSystems": "\u041e\u0439\u044b\u043d \u0436\u04af\u0439\u0435\u043b\u0435\u0440\u0456", - "HeaderPlayers": "\u041e\u0439\u044b\u043d\u0448\u044b\u043b\u0430\u0440:", - "HeaderAlbumArtists": "\u0410\u043b\u044c\u0431\u043e\u043c \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b\u043b\u0430\u0440\u044b", - "HeaderAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0434\u0430\u0440", - "HeaderDisc": "\u0414\u0438\u0441\u043a\u0456", - "HeaderTrack": "\u0416\u043e\u043b\u0448\u044b\u049b", - "HeaderAudio": "\u0414\u044b\u0431\u044b\u0441", - "HeaderVideo": "\u0411\u0435\u0439\u043d\u0435", - "HeaderEmbeddedImage": "\u0415\u043d\u0434\u0456\u0440\u0456\u043b\u0433\u0435\u043d \u0441\u0443\u0440\u0435\u0442", - "HeaderResolution": "\u0410\u0436\u044b\u0440\u0430\u0442\u044b\u043c\u0434\u044b\u043b\u044b\u0493\u044b", - "HeaderSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440", - "HeaderGenres": "\u0416\u0430\u043d\u0440\u043b\u0430\u0440", - "HeaderCountries": "\u0415\u043b\u0434\u0435\u0440", - "HeaderStatus": "\u041a\u04af\u0439", - "HeaderTracks": "\u0416\u043e\u043b\u0448\u044b\u049b\u0442\u0430\u0440", - "HeaderMusicArtist": "\u041c\u0443\u0437\u044b\u043a\u0430 \u043e\u0440\u044b\u043d\u0434\u0430\u0443\u0448\u044b", - "HeaderLocked": "\u049a\u04b1\u043b\u044b\u043f\u0442\u0430\u043b\u0493\u0430\u043d", - "HeaderStudios": "\u0421\u0442\u0443\u0434\u0438\u044f\u043b\u0430\u0440", - "HeaderActor": "\u0410\u043a\u0442\u0435\u0440\u043b\u0435\u0440", - "HeaderComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u043b\u0430\u0440", - "HeaderDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0435\u0440\u043b\u0435\u0440", - "HeaderGuestStar": "\u0428\u0430\u049b\u044b\u0440\u044b\u043b\u0493\u0430\u043d \u0430\u043a\u0442\u0435\u0440", - "HeaderProducer": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u043b\u0435\u0440", - "HeaderWriter": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439\u0448\u0456\u043b\u0435\u0440", - "HeaderParentalRatings": "\u0416\u0430\u0441\u0442\u0430\u0441 \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440", - "HeaderCommunityRatings": "\u049a\u0430\u0443\u044b\u043c \u0431\u0430\u0493\u0430\u043b\u0430\u0443\u043b\u0430\u0440\u044b", - "StartupEmbyServerIsLoading": "Emby Server \u0436\u04af\u043a\u0442\u0435\u043b\u0443\u0434\u0435. \u04d8\u0440\u0435\u043a\u0435\u0442\u0442\u0456 \u043a\u04e9\u043f \u04b1\u0437\u0430\u043c\u0430\u0439 \u049b\u0430\u0439\u0442\u0430\u043b\u0430\u04a3\u044b\u0437." + "Sync": "\u04ae\u043d\u0434\u0435\u0441\u0442\u0456\u0440\u0443", + "User": "\u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b", + "System": "\u0416\u04af\u0439\u0435", + "Application": "\u049a\u043e\u043b\u0434\u0430\u043d\u0431\u0430", + "Plugin": "\u041f\u043b\u0430\u0433\u0438\u043d", + "LabelExit": "\u0428\u044b\u0493\u0443", + "LabelVisitCommunity": "\u049a\u0430\u0443\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u049b\u049b\u0430 \u0431\u0430\u0440\u0443", + "LabelBrowseLibrary": "\u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043d\u044b \u0448\u043e\u043b\u0443", + "LabelConfigureServer": "Emby \u0442\u0435\u04a3\u0448\u0435\u0443", + "LabelRestartServer": "\u0421\u0435\u0440\u0432\u0435\u0440\u0434\u0456 \u049b\u0430\u0439\u0442\u0430 \u0456\u0441\u043a\u0435 \u049b\u043e\u0441\u0443" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/ko.json b/Emby.Server.Implementations/Localization/Core/ko.json index 834ccc17bc..bd2909efb1 100644 --- a/Emby.Server.Implementations/Localization/Core/ko.json +++ b/Emby.Server.Implementations/Localization/Core/ko.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "\uc571: {0}, \uc7a5\uce58: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\ud63c\ud569 \ucf58\ud150\ud2b8", - "FolderTypeMovies": "\uc601\ud654", - "FolderTypeMusic": "\uc74c\uc545", - "FolderTypeAdultVideos": "\uc131\uc778 \ube44\ub514\uc624", - "FolderTypePhotos": "\uc0ac\uc9c4", - "FolderTypeMusicVideos": "\ubba4\uc9c1 \ube44\ub514\uc624", - "FolderTypeHomeVideos": "\ud648 \ube44\ub514\uc624", - "FolderTypeGames": "\uac8c\uc784", - "FolderTypeBooks": "\ucc45", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "\ubc30\uc5ed \ubc0f \uc81c\uc791\uc9c4", - "HeaderPeople": "People", + "Latest": "Latest", "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "\ucc55\ud130 {0}", - "NameSeasonNumber": "\uc2dc\uc98c {0}", - "LabelExit": "\uc885\ub8cc", - "LabelVisitCommunity": "\ucee4\ubba4\ub2c8\ud2f0 \ubc29\ubb38", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api \ubb38\uc11c", - "LabelDeveloperResources": "\uac1c\ubc1c\uc790 \ub9ac\uc18c\uc2a4", - "LabelBrowseLibrary": "\ub77c\uc774\ube0c\ub7ec\ub9ac \ud0d0\uc0c9", - "LabelConfigureServer": "Emby \uc124\uc815", - "LabelRestartServer": "\uc11c\ubc84 \uc7ac\uc2dc\ub3d9", - "CategorySync": "\ub3d9\uae30\ud654", - "CategoryUser": "\uc0ac\uc6a9\uc790", - "CategorySystem": "\uc2dc\uc2a4\ud15c", - "CategoryApplication": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158", - "CategoryPlugin": "\ud50c\ub7ec\uadf8\uc778", - "NotificationOptionPluginError": "\ud50c\ub7ec\uadf8\uc778 \uc2e4\ud328", - "NotificationOptionApplicationUpdateAvailable": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub370\uc774\ud2b8 \uc0ac\uc6a9 \uac00\ub2a5", - "NotificationOptionApplicationUpdateInstalled": "\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc5c5\ub370\uc774\ud2b8 \uc124\uce58\ub428", - "NotificationOptionPluginUpdateInstalled": "\ud50c\ub7ec\uadf8\uc778 \uc5c5\ub370\uc774\ud2b8 \uc124\uce58\ub428", - "NotificationOptionPluginInstalled": "\ud50c\ub7ec\uadf8\uc778 \uc124\uce58\ub428", - "NotificationOptionPluginUninstalled": "\ud50c\ub7ec\uadf8\uc778 \uc124\uce58 \uc81c\uac70\ub428", - "NotificationOptionVideoPlayback": "\ube44\ub514\uc624 \uc7ac\uc0dd \uc2dc\uc791\ub428", - "NotificationOptionAudioPlayback": "\uc624\ub514\uc624 \uc7ac\uc0dd \uc2dc\uc791\ub428", - "NotificationOptionGamePlayback": "\uac8c\uc784 \ud50c\ub808\uc774 \uc9c0\uc791\ub428", - "NotificationOptionVideoPlaybackStopped": "\ube44\ub514\uc624 \uc7ac\uc0dd \uc911\uc9c0\ub428", - "NotificationOptionAudioPlaybackStopped": "\uc624\ub514\uc624 \uc7ac\uc0dd \uc911\uc9c0\ub428", - "NotificationOptionGamePlaybackStopped": "\uac8c\uc784 \ud50c\ub808\uc774 \uc911\uc9c0\ub428", - "NotificationOptionTaskFailed": "\uc608\uc57d \uc791\uc5c5 \uc2e4\ud328", - "NotificationOptionInstallationFailed": "\uc124\uce58 \uc2e4\ud328", - "NotificationOptionNewLibraryContent": "\uc0c8 \ucf58\ud150\ud2b8 \ucd94\uac00\ub428", - "NotificationOptionNewLibraryContentMultiple": "\uc0c8 \ucf58\ub374\ud2b8 \ucd94\uac00\ub428 (\ubcf5\uc218)", - "NotificationOptionCameraImageUploaded": "\uce74\uba54\ub77c \uc774\ubbf8\uc9c0 \uc5c5\ub85c\ub4dc\ub428", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "\uc11c\ubc84\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud558\uc5ec\uc57c \ud569\ub2c8\ub2e4", - "ViewTypePlaylists": "\uc7ac\uc0dd\ubaa9\ub85d", - "ViewTypeMovies": "\uc601\ud654", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "\uac8c\uc784", - "ViewTypeMusic": "\uc74c\uc545", - "ViewTypeMusicGenres": "\uc7a5\ub974", - "ViewTypeMusicArtists": "\uc544\ud2f0\uc2a4\ud2b8", - "ViewTypeBoxSets": "\uceec\ub809\uc158", - "ViewTypeChannels": "\ucc44\ub110", - "ViewTypeLiveTV": "TV \ubc29\uc1a1", - "ViewTypeLiveTvNowPlaying": "\uc9c0\uae08 \ubc29\uc1a1 \uc911", - "ViewTypeLatestGames": "\ucd5c\uadfc \uac8c\uc784", - "ViewTypeRecentlyPlayedGames": "\ucd5c\uadfc \ud50c\ub808\uc774", - "ViewTypeGameFavorites": "\uc990\uaca8\ucc3e\uae30", - "ViewTypeGameSystems": "\uac8c\uc784 \uc2dc\uc2a4\ud15c", - "ViewTypeGameGenres": "\uc7a5\ub974", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "\uc2dc\ub9ac\uc988", - "ViewTypeTvGenres": "\uc7a5\ub974", - "ViewTypeTvFavoriteSeries": "\uc88b\uc544\ud558\ub294 \uc2dc\ub9ac\uc988", - "ViewTypeTvFavoriteEpisodes": "\uc88b\uc544\ud558\ub294 \uc5d0\ud53c\uc18c\ub4dc", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "\uc601\ud654", - "ViewTypeMovieCollections": "\uceec\ub809\uc158", - "ViewTypeMovieFavorites": "\uc990\uaca8\ucc3e\uae30", - "ViewTypeMovieGenres": "\uc7a5\ub974", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "\uc7ac\uc0dd\ubaa9\ub85d", - "ViewTypeMusicAlbums": "\uc568\ubc94", - "ViewTypeMusicAlbumArtists": "\uc568\ubc94 \uc544\ud2f0\uc2a4\ud2b8", - "HeaderOtherDisplaySettings": "\ud654\uba74 \uc124\uc815", - "ViewTypeMusicSongs": "\ub178\ub798", - "ViewTypeMusicFavorites": "\uc990\uaca8\ucc3e\uae30", - "ViewTypeMusicFavoriteAlbums": "\uc88b\uc544\ud558\ub294 \uc568\ubc94", - "ViewTypeMusicFavoriteArtists": "\uc88b\uc544\ud558\ub294 \uc544\ud2f0\uc2a4\ud2b8", - "ViewTypeMusicFavoriteSongs": "\uc88b\uc544\ud558\ub294 \ub178\ub798", - "ViewTypeFolders": "\ud3f4\ub354", - "ViewTypeLiveTvRecordingGroups": "\ub179\ud654", - "ViewTypeLiveTvChannels": "\ucc44\ub110", - "ScheduledTaskFailedWithName": "{0} \uc2e4\ud328", - "LabelRunningTimeValue": "\uc0c1\uc601 \uc2dc\uac04: {0}", - "ScheduledTaskStartedWithName": "{0} \uc2dc\uc791\ub428", - "VersionNumber": "\ubc84\uc804 {0}", - "PluginInstalledWithName": "{0} \uc124\uce58\ub428", - "PluginUpdatedWithName": "{0} \uc5c5\ub370\uc774\ud2b8\ub428", - "PluginUninstalledWithName": "{0} \uc124\uce58 \uc81c\uac70\ub428", - "ItemAddedWithName": "\ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0 {0} \ucd94\uac00\ub428", - "ItemRemovedWithName": "\ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0\uc11c {0} \uc0ad\uc81c\ub428", - "LabelIpAddressValue": "IP \uc8fc\uc18c: {0}", - "DeviceOnlineWithName": "{0} \uc5f0\uacb0\ub428", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "\uacc4\uc18d \uc2dc\uccad\ud558\uae30", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "\uc568\ubc94 \uc544\ud2f0\uc2a4\ud2b8", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "\uc990\uaca8\ucc3e\ub294 \uc1fc", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby \uc11c\ubc84\ub97c \ubd88\ub7ec\uc624\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc7a0\uc2dc\ud6c4 \ub2e4\uc2dc\uc2dc\ub3c4 \ud574\uc8fc\uc138\uc694.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "\uc81c\uacf5\uc790: {0}", - "SubtitlesDownloadedForItem": "{0} \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc\ub428", - "UserConfigurationUpdatedWithName": "{0} \uc0ac\uc6a9\uc790 \uc124\uc815\uc774 \uc5c5\ub370\uc774\ud2b8\ub428", - "UserCreatedWithName": "\uc0ac\uc6a9\uc790 {0} \uc0dd\uc131\ub428", - "UserPasswordChangedWithName": "\uc0ac\uc6a9\uc790 {0} \ube44\ubc00\ubc88\ud638 \ubcc0\uacbd\ub428", - "UserDeletedWithName": "\uc0ac\uc6a9\uc790 {0} \uc0ad\uc81c\ub428", - "MessageServerConfigurationUpdated": "\uc11c\ubc84 \ud658\uacbd \uc124\uc815 \uc5c5\ub370\uc774\ub4dc\ub428", - "MessageNamedServerConfigurationUpdatedWithValue": "\uc11c\ubc84 \ud658\uacbd \uc124\uc815 {0} \uc139\uc158 \uc5c5\ub370\uc774\ud2b8 \ub428", - "MessageApplicationUpdated": "Emby \uc11c\ubc84 \uc5c5\ub370\uc774\ud2b8\ub428", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} \uc5f0\uacb0 \ud574\uc81c\ub428", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{1} \uc5d0\uc11c {0} \uc5f0\uacb0 \ud574\uc81c\ub428", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", "UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "{0} \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc \uc2e4\ud328", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "\ubc30\uacbd", - "HeaderImageLogo": "\ub85c\uace0", - "HeaderUserPrimaryImage": "\uc0ac\uc6a9\uc790 \uc774\ubbf8\uc9c0", - "HeaderOverview": "\uc904\uac70\ub9ac", - "HeaderShortOverview": "\uac04\ub7b5 \uc904\uac70\ub9ac", - "HeaderType": "Type", - "HeaderSeverity": "\uc2ec\uac01\ub3c4", - "HeaderUser": "\uc0ac\uc6a9\uc790", - "HeaderName": "Name", - "HeaderDate": "\ub0a0\uc9dc", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "\uac1c\ubd09\uc77c", - "HeaderRuntime": "\uc0c1\uc601 \uc2dc\uac04", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "\uc2dc\uc98c", - "HeaderSeasonNumber": "\uc2dc\uc98c \ubc88\ud638", - "HeaderSeries": "Series:", - "HeaderNetwork": "\ub124\ud2b8\uc6cc\ud06c", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "\ucee4\ubba4\ub2c8\ud2f0 \ud3c9\uc810", - "HeaderTrailers": "\uc608\uace0\ud3b8", - "HeaderSpecials": "\uc2a4\ud398\uc15c", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "\uc568\ubc94", - "HeaderDisc": "\ub514\uc2a4\ud06c", - "HeaderTrack": "\ud2b8\ub799", - "HeaderAudio": "\uc624\ub514\uc624", - "HeaderVideo": "\ube44\ub514\uc624", - "HeaderEmbeddedImage": "\ub0b4\uc7a5 \uc774\ubbf8\uc9c0", - "HeaderResolution": "\ud574\uc0c1\ub3c4", - "HeaderSubtitles": "\uc790\ub9c9", - "HeaderGenres": "\uc7a5\ub974", - "HeaderCountries": "\uad6d\uac00", - "HeaderStatus": "\uc0c1\ud0dc", - "HeaderTracks": "\ud2b8\ub799", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "\uc7a0\uae40", - "HeaderStudios": "\uc2a4\ud29c\ub514\uc624", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "\uc790\ub140 \ubcf4\ud638 \ub4f1\uae09", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/lt-LT.json b/Emby.Server.Implementations/Localization/Core/lt-LT.json new file mode 100644 index 0000000000..51b962c650 --- /dev/null +++ b/Emby.Server.Implementations/Localization/Core/lt-LT.json @@ -0,0 +1,95 @@ +{ + "Latest": "Latest", + "ValueSpecialEpisodeName": "Ypatinga - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "\u017di\u016br\u0117ti toliau", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Filmai", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "\u017danrai", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Sinchronizuoti", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" +} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/ms.json b/Emby.Server.Implementations/Localization/Core/ms.json index fe5eef894d..426e292d66 100644 --- a/Emby.Server.Implementations/Localization/Core/ms.json +++ b/Emby.Server.Implementations/Localization/Core/ms.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Series", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Tutup", - "LabelVisitCommunity": "Melawat Masyarakat", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Imbas Pengumpulan", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Restart Server", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/nb.json b/Emby.Server.Implementations/Localization/Core/nb.json index 315d49b5fd..c422d21777 100644 --- a/Emby.Server.Implementations/Localization/Core/nb.json +++ b/Emby.Server.Implementations/Localization/Core/nb.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0} , Device: {1}", - "UserDownloadingItemWithValues": "{0} laster ned {1}", - "FolderTypeMixed": "Forskjellig innhold", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musikk", - "FolderTypeAdultVideos": "Voksen-videoer", - "FolderTypePhotos": "Foto", - "FolderTypeMusicVideos": "Musikk-videoer", - "FolderTypeHomeVideos": "Hjemme-videoer", - "FolderTypeGames": "Spill", - "FolderTypeBooks": "B\u00f8ker", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Arve", - "HeaderCastCrew": "Mannskap", - "HeaderPeople": "Personer", - "ValueSpecialEpisodeName": "Spesiell - {0}", - "LabelChapterName": "Kapittel {0}", + "Latest": "Siste", + "ValueSpecialEpisodeName": "Spesial - {0}", + "Inherit": "Arve", + "Books": "B\u00f8ker", + "Music": "Musikk", + "Games": "Spill", + "Photos": "BIlder", + "MixedContent": "Blandet innhold", + "MusicVideos": "Musikkvideoer", + "HomeVideos": "Hjemmelaget filmer", + "Playlists": "Spilleliste", + "HeaderRecordingGroups": "Opptak Grupper", + "HeaderContinueWatching": "Forsett og see p\u00e5", + "HeaderFavoriteArtists": "Favorittartister", + "HeaderFavoriteSongs": "Favorittsanger", + "HeaderAlbumArtists": "Albumartist", + "HeaderFavoriteAlbums": "Favoritt albumer", + "HeaderFavoriteEpisodes": "Favoritt episode", + "HeaderFavoriteShows": "Favorittserier", + "HeaderNextUp": "Neste", + "Favorites": "Favoritter", + "Collections": "Samlinger", + "Channels": "Kanaler", + "Movies": "Filmer", + "Albums": "Album", + "Artists": "Artister", + "Folders": "Mapper", + "Songs": "Sanger", + "Shows": "Programmer", + "Genres": "Sjanger", "NameSeasonNumber": "Sesong {0}", - "LabelExit": "Avslutt", - "LabelVisitCommunity": "Bes\u00f8k oss", - "LabelGithub": "Github", - "LabelApiDocumentation": "API-dokumentasjon", - "LabelDeveloperResources": "Ressurser for Utviklere", - "LabelBrowseLibrary": "Browse biblioteket", - "LabelConfigureServer": "Konfigurer Emby", - "LabelRestartServer": "Restart serveren", - "CategorySync": "Synk", - "CategoryUser": "Bruker", - "CategorySystem": "System", - "CategoryApplication": "Applikasjon", - "CategoryPlugin": "Programtillegg", - "NotificationOptionPluginError": "Programtillegg feilet", - "NotificationOptionApplicationUpdateAvailable": "Oppdatering tilgjengelig", - "NotificationOptionApplicationUpdateInstalled": "Oppdatering installert", - "NotificationOptionPluginUpdateInstalled": "Oppdatert programtillegg installert", - "NotificationOptionPluginInstalled": "Programtillegg installert", - "NotificationOptionPluginUninstalled": "Programtillegg er fjernet", - "NotificationOptionVideoPlayback": "Videoavspilling startet", - "NotificationOptionAudioPlayback": "Lydavspilling startet", - "NotificationOptionGamePlayback": "Spill startet", - "NotificationOptionVideoPlaybackStopped": "Videoavspilling stoppet", - "NotificationOptionAudioPlaybackStopped": "Lydavspilling stoppet", - "NotificationOptionGamePlaybackStopped": "Spill stoppet", - "NotificationOptionTaskFailed": "Planlagt oppgave feilet", - "NotificationOptionInstallationFailed": "Installasjon feilet", - "NotificationOptionNewLibraryContent": "Nytt innhold er lagt til", - "NotificationOptionNewLibraryContentMultiple": "Nytt innhold lagt til (flere)", - "NotificationOptionCameraImageUploaded": "Bilde fra kamera lastet opp", - "NotificationOptionUserLockedOut": "Bruker er utestengt", - "NotificationOptionServerRestartRequired": "Server m\u00e5 startes p\u00e5 nytt", - "ViewTypePlaylists": "Spillelister", - "ViewTypeMovies": "Filmer", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Spill", - "ViewTypeMusic": "Musikk", - "ViewTypeMusicGenres": "Sjangere", - "ViewTypeMusicArtists": "Artist", - "ViewTypeBoxSets": "Samlinger", - "ViewTypeChannels": "Kanaler", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Sendes n\u00e5", - "ViewTypeLatestGames": "Siste spill", - "ViewTypeRecentlyPlayedGames": "Nylig spilt", - "ViewTypeGameFavorites": "Favoritter", - "ViewTypeGameSystems": "Spillsystemer", - "ViewTypeGameGenres": "Sjangere", - "ViewTypeTvResume": "Fortsette", - "ViewTypeTvNextUp": "Neste", - "ViewTypeTvLatest": "Siste", - "ViewTypeTvShowSeries": "Serier", - "ViewTypeTvGenres": "Sjangere", - "ViewTypeTvFavoriteSeries": "Favoritt serier", - "ViewTypeTvFavoriteEpisodes": "Favoritt episoder", - "ViewTypeMovieResume": "Fortsette", - "ViewTypeMovieLatest": "Siste", - "ViewTypeMovieMovies": "Filmer", - "ViewTypeMovieCollections": "Samlinger", - "ViewTypeMovieFavorites": "Favoritter", - "ViewTypeMovieGenres": "Sjangere", - "ViewTypeMusicLatest": "Siste", - "ViewTypeMusicPlaylists": "Spillelister", - "ViewTypeMusicAlbums": "Albumer", - "ViewTypeMusicAlbumArtists": "Album artister", - "HeaderOtherDisplaySettings": "Visnings Innstillinger", - "ViewTypeMusicSongs": "Sanger", - "ViewTypeMusicFavorites": "Favoritter", - "ViewTypeMusicFavoriteAlbums": "Favorittalbumer", - "ViewTypeMusicFavoriteArtists": "Favorittartister", - "ViewTypeMusicFavoriteSongs": "Favorittsanger", - "ViewTypeFolders": "Mapper", - "ViewTypeLiveTvRecordingGroups": "Opptak", - "ViewTypeLiveTvChannels": "Kanaler", - "ScheduledTaskFailedWithName": "{0} feilet", - "LabelRunningTimeValue": "Spille tide: {0}", - "ScheduledTaskStartedWithName": "{0} startet", + "AppDeviceValues": "App:{0}, Enhet {1}", + "UserDownloadingItemWithValues": "{0} laster ned {1}", + "HeaderLiveTV": "Direkte TV", + "ChapterNameValue": "Kapittel {0}", + "ScheduledTaskFailedWithName": "{0} Mislykkes", + "LabelRunningTimeValue": "L\u00f8petid {0}", + "ScheduledTaskStartedWithName": "{0} Startet", "VersionNumber": "Versjon {0}", "PluginInstalledWithName": "{0} ble installert", + "StartupEmbyServerIsLoading": "Emby server laster. Pr\u00f8v igjen snart.", "PluginUpdatedWithName": "{0} ble oppdatert", "PluginUninstalledWithName": "{0} ble avinstallert", - "ItemAddedWithName": "{0} ble lagt til biblioteket", + "ItemAddedWithName": "{0} ble lagt til i biblioteket", "ItemRemovedWithName": "{0} ble fjernet fra biblioteket", - "LabelIpAddressValue": "Ip adresse: {0}", + "LabelIpAddressValue": "IP adresse: {0}", "DeviceOnlineWithName": "{0} er tilkoblet", - "UserOnlineFromDevice": "{0} er online fra {1}", - "ProviderValue": "Tilbyder: {0}", + "UserOnlineFromDevice": "{0} er tilkoblet fra {1}", + "ProviderValue": "Leverand\u00f8rer: {0}", "SubtitlesDownloadedForItem": "Undertekster lastet ned for {0}", - "UserConfigurationUpdatedWithName": "Bruker konfigurasjon har blitt oppdatert for {0}", - "UserCreatedWithName": "Bruker {0} har blitt opprettet", - "UserPasswordChangedWithName": "Passord har blitt endret for bruker {0}", + "UserCreatedWithName": "Bruker {0} er opprettet", + "UserPasswordChangedWithName": "Passordet for {0} er oppdatert", "UserDeletedWithName": "Bruker {0} har blitt slettet", - "MessageServerConfigurationUpdated": "Server konfigurasjon har blitt oppdatert", + "UserConfigurationUpdatedWithName": "Brukerkonfigurasjon har blitt oppdatert for {0}", + "MessageServerConfigurationUpdated": "Server konfigurasjon er oppdatert", "MessageNamedServerConfigurationUpdatedWithValue": "Server konfigurasjon seksjon {0} har blitt oppdatert", "MessageApplicationUpdated": "Emby server har blitt oppdatert", - "FailedLoginAttemptWithUserName": "P\u00e5loggingsfors\u00f8k feilet fra {0}", - "AuthenticationSucceededWithUserName": "{0} autentisert med suksess", - "DeviceOfflineWithName": "{0} har koblet fra", - "UserLockedOutWithName": "User {0} has been locked out", + "FailedLoginAttemptWithUserName": "Mislykket p\u00e5loggingsfors\u00f8k fra {0}", + "AuthenticationSucceededWithUserName": "{0} vellykkede autentisert", "UserOfflineFromDevice": "{0} har koblet fra {1}", - "UserStartedPlayingItemWithValues": "{0} har startet avspilling av {1}", - "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling av {1}", - "SubtitleDownloadFailureForItem": "nedlasting av undertekster feilet for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "Bruker", - "HeaderName": "Navn", - "HeaderDate": "Dato", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Utgivelsesdato", - "HeaderRuntime": "Spilletid", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Sesong", - "HeaderSeasonNumber": "Sesong nummer", - "HeaderSeries": "Series:", - "HeaderNetwork": "Nettverk", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Fellesskap anmeldelse", - "HeaderTrailers": "Trailere", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albumer", - "HeaderDisc": "Disk", - "HeaderTrack": "Spor", - "HeaderAudio": "Lyd", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "innebygd bilde", - "HeaderResolution": "Oppl\u00f8sning", - "HeaderSubtitles": "Undertekster", - "HeaderGenres": "Sjanger", - "HeaderCountries": "Land", - "HeaderStatus": "Status", - "HeaderTracks": "Spor", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studioer", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Foreldresensur", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "DeviceOfflineWithName": "{0} har koblet fra", + "UserStartedPlayingItemWithValues": "{0} har startet avspilling {1}", + "UserStoppedPlayingItemWithValues": "{0} har stoppet avspilling {1}", + "NotificationOptionPluginError": "Plugin feil", + "NotificationOptionApplicationUpdateAvailable": "Applikasjon oppdatering tilgjengelig", + "NotificationOptionApplicationUpdateInstalled": "Applikasjon oppdatering installert.", + "NotificationOptionPluginUpdateInstalled": "Plugin oppdatering installert", + "NotificationOptionPluginInstalled": "Plugin installert", + "NotificationOptionPluginUninstalled": "Plugin avinstallert", + "NotificationOptionVideoPlayback": "Video tilbakespilling startet", + "NotificationOptionAudioPlayback": "Lyd tilbakespilling startet", + "NotificationOptionGamePlayback": "Spill avspillingen startet", + "NotificationOptionVideoPlaybackStopped": "Video avspilling stoppet", + "NotificationOptionAudioPlaybackStopped": "Lyd avspilling stoppet", + "NotificationOptionGamePlaybackStopped": "Filmer", + "NotificationOptionTaskFailed": "Feil under utf\u00f8ring av planlagt oppgaver", + "NotificationOptionInstallationFailed": "Installasjon feil", + "NotificationOptionNewLibraryContent": "Ny innhold er lagt til", + "NotificationOptionCameraImageUploaded": "Kamera bilde lastet opp", + "NotificationOptionUserLockedOut": "Bruker er utestengt", + "NotificationOptionServerRestartRequired": "Server omstart er n\u00f8dvendig", + "UserLockedOutWithName": "Bruker {0} er blitt utestengt", + "SubtitleDownloadFailureForItem": "En feil oppst\u00e5 under nedlasting av undertekster for {0}", + "Sync": "Synk", + "User": "Bruker", + "System": "System", + "Application": "Applikasjon", + "Plugin": "Plugin", + "LabelExit": "Avslutt", + "LabelVisitCommunity": "Bes\u00f8k Samfunnet", + "LabelBrowseLibrary": "Bla i biblioteket", + "LabelConfigureServer": "Konfigurere Emby", + "LabelRestartServer": "Start om serveren" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json index 2818fbf6a6..37120f08cf 100644 --- a/Emby.Server.Implementations/Localization/Core/nl.json +++ b/Emby.Server.Implementations/Localization/Core/nl.json @@ -1,102 +1,45 @@ { - "DbUpgradeMessage": "Een ogenblik geduld terwijl uw Emby Server-database wordt bijgewerkt. {0}% voltooid.", + "Latest": "Nieuwste", + "ValueSpecialEpisodeName": "Speciaal - {0}", + "Inherit": "Overerven", + "Books": "Boeken", + "Music": "Muziek", + "Games": "Spellen", + "Photos": "Foto's", + "MixedContent": "Gemengde inhoud", + "MusicVideos": "Muziek video's", + "HomeVideos": "Thuis video's", + "Playlists": "Afspeellijsten", + "HeaderRecordingGroups": "Opname groepen", + "HeaderContinueWatching": "Kijken hervatten", + "HeaderFavoriteArtists": "Favoriete artiesten", + "HeaderFavoriteSongs": "Favoriete titels", + "HeaderAlbumArtists": "Album artiesten", + "HeaderFavoriteAlbums": "Favoriete albums", + "HeaderFavoriteEpisodes": "Favoriete Afleveringen", + "HeaderFavoriteShows": "Favoriete Shows", + "HeaderNextUp": "Volgende", + "Favorites": "Favorieten", + "Collections": "Collecties", + "Channels": "Kanalen", + "Movies": "Films", + "Albums": "Albums", + "Artists": "Artiesten", + "Folders": "Mappen", + "Songs": "Titels", + "Shows": "Series", + "Genres": "Genres", + "NameSeasonNumber": "Seizoen {0}", "AppDeviceValues": "App: {0}, Apparaat: {1}", "UserDownloadingItemWithValues": "{0} download {1}", - "FolderTypeMixed": "Gemengde inhoud", - "FolderTypeMovies": "Films", - "FolderTypeMusic": "Muziek", - "FolderTypeAdultVideos": "Adult video's", - "FolderTypePhotos": "Foto's", - "FolderTypeMusicVideos": "Muziek video's", - "FolderTypeHomeVideos": "Thuis video's", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Boeken", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "overerven", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "Personen", - "ValueSpecialEpisodeName": "Speciaal - {0}", - "LabelChapterName": "Hoofdstuk {0}", - "NameSeasonNumber": "Seizoen {0}", - "LabelExit": "Afsluiten", - "LabelVisitCommunity": "Bezoek Gemeenschap", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api documentatie", - "LabelDeveloperResources": "Ontwikkelaars bronnen", - "LabelBrowseLibrary": "Bekijk bibliotheek", - "LabelConfigureServer": "Emby Configureren", - "LabelRestartServer": "Server herstarten", - "CategorySync": "Sync", - "CategoryUser": "Gebruiker", - "CategorySystem": "Systeem", - "CategoryApplication": "Toepassing", - "CategoryPlugin": "Plug-in", - "NotificationOptionPluginError": "Plug-in fout", - "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar", - "NotificationOptionApplicationUpdateInstalled": "Programma-update ge\u00efnstalleerd", - "NotificationOptionPluginUpdateInstalled": "Plug-in-update ge\u00efnstalleerd", - "NotificationOptionPluginInstalled": "Plug-in ge\u00efnstalleerd", - "NotificationOptionPluginUninstalled": "Plug-in verwijderd", - "NotificationOptionVideoPlayback": "Video afspelen gestart", - "NotificationOptionAudioPlayback": "Geluid afspelen gestart", - "NotificationOptionGamePlayback": "Game gestart", - "NotificationOptionVideoPlaybackStopped": "Video afspelen gestopt", - "NotificationOptionAudioPlaybackStopped": "Geluid afspelen gestopt", - "NotificationOptionGamePlaybackStopped": "Afspelen spel gestopt", - "NotificationOptionTaskFailed": "Mislukken van de geplande taak", - "NotificationOptionInstallationFailed": "Mislukken van de installatie", - "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd", - "NotificationOptionNewLibraryContentMultiple": "Nieuwe content toegevoegd (meerdere)", - "NotificationOptionCameraImageUploaded": "Camera afbeelding ge\u00fcpload", - "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld", - "NotificationOptionServerRestartRequired": "Server herstart nodig", - "ViewTypePlaylists": "Afspeellijsten", - "ViewTypeMovies": "Films", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Muziek", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artiesten", - "ViewTypeBoxSets": "Collecties", - "ViewTypeChannels": "Kanalen", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Nu uitgezonden", - "ViewTypeLatestGames": "Nieuwste games", - "ViewTypeRecentlyPlayedGames": "Recent gespeelt", - "ViewTypeGameFavorites": "Favorieten", - "ViewTypeGameSystems": "Game systemen", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Hervatten", - "ViewTypeTvNextUp": "Volgende", - "ViewTypeTvLatest": "Nieuwste", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favoriete Series", - "ViewTypeTvFavoriteEpisodes": "Favoriete Afleveringen", - "ViewTypeMovieResume": "Hervatten", - "ViewTypeMovieLatest": "Nieuwste", - "ViewTypeMovieMovies": "Films", - "ViewTypeMovieCollections": "Collecties", - "ViewTypeMovieFavorites": "Favorieten", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Nieuwste", - "ViewTypeMusicPlaylists": "Afspeellijsten", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album artiesten", - "HeaderOtherDisplaySettings": "Beeld instellingen", - "ViewTypeMusicSongs": "Nummers", - "ViewTypeMusicFavorites": "Favorieten", - "ViewTypeMusicFavoriteAlbums": "Favoriete albums", - "ViewTypeMusicFavoriteArtists": "Favoriete artiesten", - "ViewTypeMusicFavoriteSongs": "Favoriete nummers", - "ViewTypeFolders": "Mappen", - "ViewTypeLiveTvRecordingGroups": "Opnamen", - "ViewTypeLiveTvChannels": "Kanalen", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Hoofdstuk {0}", "ScheduledTaskFailedWithName": "{0} is mislukt", "LabelRunningTimeValue": "Looptijd: {0}", "ScheduledTaskStartedWithName": "{0} is gestart", "VersionNumber": "Versie {0}", "PluginInstalledWithName": "{0} is ge\u00efnstalleerd", + "StartupEmbyServerIsLoading": "Emby Server is aan het laden, probeer het later opnieuw.", "PluginUpdatedWithName": "{0} is bijgewerkt", "PluginUninstalledWithName": "{0} is gede\u00efnstalleerd", "ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek", @@ -106,73 +49,47 @@ "UserOnlineFromDevice": "{0} heeft verbinding met {1}", "ProviderValue": "Aanbieder: {0}", "SubtitlesDownloadedForItem": "Ondertiteling voor {0} is gedownload", - "UserConfigurationUpdatedWithName": "Gebruikersinstellingen voor {0} zijn bijgewerkt", "UserCreatedWithName": "Gebruiker {0} is aangemaakt", "UserPasswordChangedWithName": "Wachtwoord voor {0} is gewijzigd", "UserDeletedWithName": "Gebruiker {0} is verwijderd", + "UserConfigurationUpdatedWithName": "Gebruikersinstellingen voor {0} zijn bijgewerkt", "MessageServerConfigurationUpdated": "Server configuratie is bijgewerkt", "MessageNamedServerConfigurationUpdatedWithValue": "Sectie {0} van de server configuratie is bijgewerkt", "MessageApplicationUpdated": "Emby Server is bijgewerkt", "FailedLoginAttemptWithUserName": "Mislukte aanmeld poging van {0}", "AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd", - "DeviceOfflineWithName": "{0} is losgekoppeld", - "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld", "UserOfflineFromDevice": "Verbinding van {0} met {1} is verbroken", + "DeviceOfflineWithName": "{0} is losgekoppeld", "UserStartedPlayingItemWithValues": "{0} heeft afspelen van {1} gestart", "UserStoppedPlayingItemWithValues": "{0} heeft afspelen van {1} gestopt", + "NotificationOptionPluginError": "Plug-in fout", + "NotificationOptionApplicationUpdateAvailable": "Programma-update beschikbaar", + "NotificationOptionApplicationUpdateInstalled": "Programma-update ge\u00efnstalleerd", + "NotificationOptionPluginUpdateInstalled": "Plug-in-update ge\u00efnstalleerd", + "NotificationOptionPluginInstalled": "Plug-in ge\u00efnstalleerd", + "NotificationOptionPluginUninstalled": "Plug-in verwijderd", + "NotificationOptionVideoPlayback": "Video gestart", + "NotificationOptionAudioPlayback": "Geluid gestart", + "NotificationOptionGamePlayback": "Spel gestart", + "NotificationOptionVideoPlaybackStopped": "Video gestopt", + "NotificationOptionAudioPlaybackStopped": "Geluid gestopt", + "NotificationOptionGamePlaybackStopped": "Spel gestopt", + "NotificationOptionTaskFailed": "Geplande taak mislukt", + "NotificationOptionInstallationFailed": "Installatie mislukt", + "NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd", + "NotificationOptionCameraImageUploaded": "Camera afbeelding ge\u00fcpload", + "NotificationOptionUserLockedOut": "Gebruikersaccount vergrendeld", + "NotificationOptionServerRestartRequired": "Server herstart nodig", + "UserLockedOutWithName": "Gebruikersaccount {0} is vergrendeld", "SubtitleDownloadFailureForItem": "Downloaden van ondertiteling voor {0} is mislukt", - "HeaderUnidentified": "One\u00efdentificaard", - "HeaderImagePrimary": "Primair", - "HeaderImageBackdrop": "Achtergrond", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Afbeelding gebruiker", - "HeaderOverview": "Overzicht", - "HeaderShortOverview": "Kort overzicht", - "HeaderType": "Type", - "HeaderSeverity": "Ernst", - "HeaderUser": "Gebruiker", - "HeaderName": "Naam", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premi\u00e8re Datum", - "HeaderDateAdded": "Datum toegevoegd", - "HeaderReleaseDate": "Uitgave datum", - "HeaderRuntime": "Speelduur", - "HeaderPlayCount": "Afspeel telling", - "HeaderSeason": "Seizoen", - "HeaderSeasonNumber": "Seizoen nummer", - "HeaderSeries": "Series:", - "HeaderNetwork": "Zender", - "HeaderYear": "Jaar:", - "HeaderYears": "Jaren:", - "HeaderParentalRating": "Kijkwijzer classificatie", - "HeaderCommunityRating": "Gemeenschap cijfer", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game systemen", - "HeaderPlayers": "Spelers:", - "HeaderAlbumArtists": "Album artiesten", - "HeaderAlbums": "Albums", - "HeaderDisc": "Schijf", - "HeaderTrack": "Track", - "HeaderAudio": "Geluid", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Ingesloten afbeelding", - "HeaderResolution": "Resolutie", - "HeaderSubtitles": "Ondertiteling", - "HeaderGenres": "Genres", - "HeaderCountries": "Landen", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Muziek artiest", - "HeaderLocked": "Vergrendeld", - "HeaderStudios": "Studio's", - "HeaderActor": "Acteurs", - "HeaderComposer": "Componisten", - "HeaderDirector": "Regiseurs", - "HeaderGuestStar": "Gast ster", - "HeaderProducer": "Producenten", - "HeaderWriter": "Schrijvers", - "HeaderParentalRatings": "Ouderlijke toezicht", - "HeaderCommunityRatings": "Gemeenschapswaardering", - "StartupEmbyServerIsLoading": "Emby Server is aan het laden, probeer het later opnieuw." + "Sync": "Synchronisatie", + "User": "Gebruiker", + "System": "Systeem", + "Application": "Toepassing", + "Plugin": "Plug-in", + "LabelExit": "Afsluiten", + "LabelVisitCommunity": "Bezoek Gemeenschap", + "LabelBrowseLibrary": "Bekijk bibliotheek", + "LabelConfigureServer": "Emby Configureren", + "LabelRestartServer": "Server herstarten" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/pl.json b/Emby.Server.Implementations/Localization/Core/pl.json index cdaa87c4d8..363d0e792d 100644 --- a/Emby.Server.Implementations/Localization/Core/pl.json +++ b/Emby.Server.Implementations/Localization/Core/pl.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Prosz\u0119 czeka\u0107 na koniec aktualizacji biblioteki. Post\u0119p: {0}%", + "Latest": "Ostatnio dodane do", + "ValueSpecialEpisodeName": "Specjalne - {0}", + "Inherit": "Dziedzicz", + "Books": "Ksi\u0105\u017cki", + "Music": "Muzyka", + "Games": "Gry", + "Photos": "Zdj\u0119cia", + "MixedContent": "Zawarto\u015b\u0107 mieszana", + "MusicVideos": "Teledyski", + "HomeVideos": "Nagrania prywatne", + "Playlists": "Listy odtwarzania", + "HeaderRecordingGroups": "Grupy nagra\u0144", + "HeaderContinueWatching": "Kontynuuj ogl\u0105danie", + "HeaderFavoriteArtists": "Wykonawcy ulubieni", + "HeaderFavoriteSongs": "Utwory ulubione", + "HeaderAlbumArtists": "Wykonawcy album\u00f3w", + "HeaderFavoriteAlbums": "Albumy ulubione", + "HeaderFavoriteEpisodes": "Odcinki ulubione", + "HeaderFavoriteShows": "Seriale ulubione", + "HeaderNextUp": "Do obejrzenia", + "Favorites": "Ulubione", + "Collections": "Kolekcje", + "Channels": "Kana\u0142y", + "Movies": "Filmy", + "Albums": "Albumy", + "Artists": "Wykonawcy", + "Folders": "Foldery", + "Songs": "Utwory", + "Shows": "Seriale", + "Genres": "Gatunki", + "NameSeasonNumber": "Sezon {0}", "AppDeviceValues": "Aplikacja: {0}, Urz\u0105dzenie: {1}", "UserDownloadingItemWithValues": "{0} pobiera {1}", - "FolderTypeMixed": "Zawarto\u015b\u0107 mieszana", - "FolderTypeMovies": "Filmy", - "FolderTypeMusic": "Muzyka", - "FolderTypeAdultVideos": "Filmy dla doros\u0142ych", - "FolderTypePhotos": "Zdj\u0119cia", - "FolderTypeMusicVideos": "Teledyski", - "FolderTypeHomeVideos": "Filmy domowe", - "FolderTypeGames": "Gry", - "FolderTypeBooks": "Ksi\u0105\u017cki", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Dziedzicz", - "HeaderCastCrew": "Obsada & Eikpa", - "HeaderPeople": "Ludzie", - "ValueSpecialEpisodeName": "Specjalny - {0}", - "LabelChapterName": "Rozdzia\u0142 {0}", - "NameSeasonNumber": "Sezon {0}", - "LabelExit": "Wyj\u015bcie", - "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", - "LabelGithub": "Github", - "LabelApiDocumentation": "Dokumantacja API", - "LabelDeveloperResources": "Materia\u0142y dla deweloper\u00f3w", - "LabelBrowseLibrary": "Przegl\u0105daj bibliotek\u0119", - "LabelConfigureServer": "Konfiguracja Emby", - "LabelRestartServer": "Restart serwera", - "CategorySync": "Sync", - "CategoryUser": "U\u017cytkownik", - "CategorySystem": "System", - "CategoryApplication": "Aplikacja", - "CategoryPlugin": "Wtyczka", - "NotificationOptionPluginError": "Niepowodzenie wtyczki", + "HeaderLiveTV": "Telewizja", + "ChapterNameValue": "Rozdzia\u0142 {0}", + "ScheduledTaskFailedWithName": "Nieudane {0}", + "LabelRunningTimeValue": "Czas trwania: {0}", + "ScheduledTaskStartedWithName": "Rozpocz\u0119to {0}", + "VersionNumber": "Wersja {0}", + "PluginInstalledWithName": "{0} zosta\u0142o zainstalowane", + "StartupEmbyServerIsLoading": "Twa wczytywanie serwera Emby. Spr\u00f3buj ponownie za chwil\u0119.", + "PluginUpdatedWithName": "{0} zaktualizowane", + "PluginUninstalledWithName": "{0} odinstalowane", + "ItemAddedWithName": "{0} zosta\u0142o dodane do biblioteki", + "ItemRemovedWithName": "{0} zosta\u0142o usuni\u0119te z biblioteki", + "LabelIpAddressValue": "Adres IP: {0}", + "DeviceOnlineWithName": "{0} po\u0142\u0105czy\u0142 si\u0119", + "UserOnlineFromDevice": "{0} po\u0142\u0105czy\u0142 si\u0119 z {1}", + "ProviderValue": "Dostawca: {0}", + "SubtitlesDownloadedForItem": "Pobrano napisy dla {0}", + "UserCreatedWithName": "U\u017cytkownik {0} zosta\u0142 utworzony", + "UserPasswordChangedWithName": "Has\u0142o u\u017cytkownika {0} zosta\u0142o zmienione", + "UserDeletedWithName": "U\u017cytkownik {0} zosta\u0142 usuni\u0119ty", + "UserConfigurationUpdatedWithName": "Konfiguracja u\u017cytkownika {0} zosta\u0142a zaktualizowana", + "MessageServerConfigurationUpdated": "Konfiguracja serwera zosta\u0142a zaktualizowana", + "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera zosta\u0142a zaktualizowana", + "MessageApplicationUpdated": "Serwer Emby zosta\u0142 zaktualizowany", + "FailedLoginAttemptWithUserName": "Pr\u00f3ba logowania przez {0} zako\u0144czona niepowodzeniem", + "AuthenticationSucceededWithUserName": "{0} zosta\u0142 pomy\u015blnie uwierzytelniony", + "UserOfflineFromDevice": "{0} z {1} zosta\u0142 roz\u0142\u0105czony", + "DeviceOfflineWithName": "{0} zosta\u0142 roz\u0142\u0105czony", + "UserStartedPlayingItemWithValues": "{0} rozpocz\u0105\u0142 odtwarzanie {1}", + "UserStoppedPlayingItemWithValues": "{0} zatrzyma\u0142 odtwarzanie {1}", + "NotificationOptionPluginError": "Awaria wtyczki", "NotificationOptionApplicationUpdateAvailable": "Dost\u0119pna aktualizacja aplikacji", "NotificationOptionApplicationUpdateInstalled": "Zainstalowano aktualizacj\u0119 aplikacji", "NotificationOptionPluginUpdateInstalled": "Zainstalowano aktualizacj\u0119 wtyczki", "NotificationOptionPluginInstalled": "Zainstalowano wtyczk\u0119", "NotificationOptionPluginUninstalled": "Odinstalowano wtyczk\u0119", "NotificationOptionVideoPlayback": "Rozpocz\u0119to odtwarzanie wideo", - "NotificationOptionAudioPlayback": "Rozpocz\u0119to odtwarzanie audio", + "NotificationOptionAudioPlayback": "Rozpocz\u0119to odtwarzanie muzyki", "NotificationOptionGamePlayback": "Odtwarzanie gry rozpocz\u0119te", "NotificationOptionVideoPlaybackStopped": "Odtwarzanie wideo zatrzymane", - "NotificationOptionAudioPlaybackStopped": "Odtwarzane audio zatrzymane", + "NotificationOptionAudioPlaybackStopped": "Odtwarzane d\u017awi\u0119ku zatrzymane", "NotificationOptionGamePlaybackStopped": "Odtwarzanie gry zatrzymane", - "NotificationOptionTaskFailed": "Niepowodzenie zaplanowanego zadania", + "NotificationOptionTaskFailed": "Awaria zaplanowanego zadania", "NotificationOptionInstallationFailed": "Niepowodzenie instalacji", - "NotificationOptionNewLibraryContent": "Nowa zawarto\u015b\u0107 dodana", - "NotificationOptionNewLibraryContentMultiple": "Nowa zawarto\u015b\u0107 dodana (wiele)", - "NotificationOptionCameraImageUploaded": "Obraz z Kamery dodany", + "NotificationOptionNewLibraryContent": "Dodano now\u0105 zawarto\u015b\u0107", + "NotificationOptionCameraImageUploaded": "Przekazano obraz z urz\u0105dzenia mobilnego", "NotificationOptionUserLockedOut": "U\u017cytkownik zablokowany", - "NotificationOptionServerRestartRequired": "Restart serwera wymagany", - "ViewTypePlaylists": "Playlisty", - "ViewTypeMovies": "Filmy", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Gry", - "ViewTypeMusic": "Muzyka", - "ViewTypeMusicGenres": "Gatunki", - "ViewTypeMusicArtists": "Arty\u015bci", - "ViewTypeBoxSets": "Kolekcje", - "ViewTypeChannels": "Kana\u0142y", - "ViewTypeLiveTV": "TV Na \u017bywo", - "ViewTypeLiveTvNowPlaying": "Teraz Transmitowane", - "ViewTypeLatestGames": "Ostatnie Gry", - "ViewTypeRecentlyPlayedGames": "Ostatnio Odtwarzane", - "ViewTypeGameFavorites": "Ulubione", - "ViewTypeGameSystems": "Systemy Gier Wideo", - "ViewTypeGameGenres": "Gatunki", - "ViewTypeTvResume": "Wzn\u00f3w", - "ViewTypeTvNextUp": "Nast\u0119pny", - "ViewTypeTvLatest": "Najnowsze", - "ViewTypeTvShowSeries": "Seriale", - "ViewTypeTvGenres": "Gatunki", - "ViewTypeTvFavoriteSeries": "Ulubione Seriale", - "ViewTypeTvFavoriteEpisodes": "Ulubione Odcinki", - "ViewTypeMovieResume": "Wzn\u00f3w", - "ViewTypeMovieLatest": "Najnowsze", - "ViewTypeMovieMovies": "Filmy", - "ViewTypeMovieCollections": "Kolekcje", - "ViewTypeMovieFavorites": "Ulubione", - "ViewTypeMovieGenres": "Gatunki", - "ViewTypeMusicLatest": "Najnowsze", - "ViewTypeMusicPlaylists": "Playlisty", - "ViewTypeMusicAlbums": "Albumy", - "ViewTypeMusicAlbumArtists": "Arty\u015bci albumu", - "HeaderOtherDisplaySettings": "Ustawienia Wy\u015bwietlania", - "ViewTypeMusicSongs": "Utwory", - "ViewTypeMusicFavorites": "Ulubione", - "ViewTypeMusicFavoriteAlbums": "Ulubione Albumy", - "ViewTypeMusicFavoriteArtists": "Ulubieni Arty\u015bci", - "ViewTypeMusicFavoriteSongs": "Ulubione Utwory", - "ViewTypeFolders": "Foldery", - "ViewTypeLiveTvRecordingGroups": "Nagrania", - "ViewTypeLiveTvChannels": "Kana\u0142y", - "ScheduledTaskFailedWithName": "{0} niepowodze\u0144", - "LabelRunningTimeValue": "Czas trwania: {0}", - "ScheduledTaskStartedWithName": "{0} rozpocz\u0119te", - "VersionNumber": "Wersja {0}", - "PluginInstalledWithName": "{0} zainstalowanych", - "PluginUpdatedWithName": "{0} zaktualizowanych", - "PluginUninstalledWithName": "{0} odinstalowanych", - "ItemAddedWithName": "{0} dodanych do biblioteki", - "ItemRemovedWithName": "{0} usuni\u0119tych z biblioteki", - "LabelIpAddressValue": "Adres IP: {0}", - "DeviceOnlineWithName": "{0} po\u0142\u0105czonych", - "UserOnlineFromDevice": "{0} jest online od {1}", - "ProviderValue": "Dostawca: {0}", - "SubtitlesDownloadedForItem": "Napisy pobrane dla {0}", - "UserConfigurationUpdatedWithName": "Konfiguracja u\u017cytkownika zosta\u0142a zaktualizowana dla {0}", - "UserCreatedWithName": "U\u017cytkownik {0} zosta\u0142 utworzony", - "UserPasswordChangedWithName": "Has\u0142o zosta\u0142o zmienione dla u\u017cytkownika {0}", - "UserDeletedWithName": "u\u017cytkownik {0} zosta\u0142 usuni\u0119ty", - "MessageServerConfigurationUpdated": "Konfiguracja serwera zosta\u0142a zaktualizowana", - "MessageNamedServerConfigurationUpdatedWithValue": "Sekcja {0} konfiguracji serwera zosta\u0142a zaktualizowana", - "MessageApplicationUpdated": "Serwer Emby zosta\u0142 zaktualizowany", - "FailedLoginAttemptWithUserName": "Nieudana pr\u00f3ba logowania z {0}", - "AuthenticationSucceededWithUserName": "{0} zaktualizowanych z powodzeniem", - "DeviceOfflineWithName": "{0} zosta\u0142o od\u0142aczonych", + "NotificationOptionServerRestartRequired": "Wymagane ponowne uruchomienie serwera", "UserLockedOutWithName": "U\u017cytkownik {0} zosta\u0142 zablokowany", - "UserOfflineFromDevice": "{0} zosta\u0142o od\u0142\u0105czonych od {1}", - "UserStartedPlayingItemWithValues": "{0} rozpocz\u0105\u0142 odtwarzanie {1}", - "UserStoppedPlayingItemWithValues": "{0} zatrzyma\u0142 odtwarzanie {1}", - "SubtitleDownloadFailureForItem": "Napisy niepobrane dla {0}", - "HeaderUnidentified": "Niezidentyfikowane", - "HeaderImagePrimary": "Priorytetowy", - "HeaderImageBackdrop": "Obraz t\u0142a", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Avatar u\u017cytkownika", - "HeaderOverview": "Opis", - "HeaderShortOverview": "Kr\u00f3tki Opis", - "HeaderType": "Typ", - "HeaderSeverity": "Rygor", - "HeaderUser": "U\u017cytkownik", - "HeaderName": "Nazwa", - "HeaderDate": "Data", - "HeaderPremiereDate": "Data premiery", - "HeaderDateAdded": "Data dodania", - "HeaderReleaseDate": "Data wydania", - "HeaderRuntime": "D\u0142ugo\u015b\u0107 filmu", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Sezon", - "HeaderSeasonNumber": "Numer sezonu", - "HeaderSeries": "Seriale:", - "HeaderNetwork": "Sie\u0107", - "HeaderYear": "Rok:", - "HeaderYears": "Lata:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Ocena spo\u0142eczno\u015bci", - "HeaderTrailers": "Zwiastuny", - "HeaderSpecials": "Specjalne", - "HeaderGameSystems": "Systemy gier", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albumy", - "HeaderDisc": "P\u0142yta", - "HeaderTrack": "\u015acie\u017cka", - "HeaderAudio": "Audio", - "HeaderVideo": "Wideo", - "HeaderEmbeddedImage": "Osadzony obraz", - "HeaderResolution": "Rozdzielczo\u015b\u0107", - "HeaderSubtitles": "Napisy", - "HeaderGenres": "Gatunki", - "HeaderCountries": "Kraje", - "HeaderStatus": "Status", - "HeaderTracks": "Utwory", - "HeaderMusicArtist": "Wykonawcy muzyczni", - "HeaderLocked": "Zablokowane", - "HeaderStudios": "Studia", - "HeaderActor": "Aktorzy", - "HeaderComposer": "Kopozytorzy", - "HeaderDirector": "Re\u017cyszerzy", - "HeaderGuestStar": "Go\u015b\u0107 specjalny", - "HeaderProducer": "Producenci", - "HeaderWriter": "Scenarzy\u015bci", - "HeaderParentalRatings": "Ocena rodzicielska", - "HeaderCommunityRatings": "Ocena spo\u0142eczno\u015bci", - "StartupEmbyServerIsLoading": "Serwer Emby si\u0119 \u0142aduje. Prosz\u0119 spr\u00f3bowa\u0107 za chwil\u0119." + "SubtitleDownloadFailureForItem": "Pobieranie napis\u00f3w dla {0} zako\u0144czone niepowodzeniem", + "Sync": "Synchronizacja", + "User": "U\u017cytkownik", + "System": "System", + "Application": "Aplikacja", + "Plugin": "Wtyczka", + "LabelExit": "Wyj\u015bcie", + "LabelVisitCommunity": "Odwied\u017a spo\u0142eczno\u015b\u0107", + "LabelBrowseLibrary": "Przegl\u0105daj bibliotek\u0119", + "LabelConfigureServer": "Konfiguracja Emby", + "LabelRestartServer": "Uruchom serwer ponownie" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/pt-BR.json b/Emby.Server.Implementations/Localization/Core/pt-BR.json index 67f204b2ee..ffbc693c3b 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-BR.json +++ b/Emby.Server.Implementations/Localization/Core/pt-BR.json @@ -1,40 +1,71 @@ { - "DbUpgradeMessage": "Por favor, aguarde enquanto a base de dados do Servidor Emby \u00e9 atualizada. {0}% completo.", - "AppDeviceValues": "App: {0}, Dispositivo: {1}", - "UserDownloadingItemWithValues": "{0} est\u00e1 fazendo download de {1}", - "FolderTypeMixed": "Conte\u00fado misto", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "V\u00eddeos adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "V\u00eddeos musicais", - "FolderTypeHomeVideos": "V\u00eddeos caseiros", - "FolderTypeGames": "Jogos", - "FolderTypeBooks": "Livros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Herdar", - "HeaderCastCrew": "Elenco & Equipe", - "HeaderPeople": "Pessoas", - "ValueSpecialEpisodeName": "Especial - {0}", - "LabelChapterName": "Cap\u00edtulo {0}", + "Latest": "Recente", + "ValueSpecialEpisodeName": "Especial - {0}", + "Inherit": "Herdar", + "Books": "Livros", + "Music": "M\u00fasica", + "Games": "Jogos", + "Photos": "Fotos", + "MixedContent": "Conte\u00fado misto", + "MusicVideos": "V\u00eddeos musicais", + "HomeVideos": "V\u00eddeos caseiros", + "Playlists": "Listas de Reprodu\u00e7\u00e3o", + "HeaderRecordingGroups": "Grupos de Grava\u00e7\u00e3o", + "HeaderContinueWatching": "Continuar Assistindo", + "HeaderFavoriteArtists": "Artistas Favoritos", + "HeaderFavoriteSongs": "M\u00fasicas Favoritas", + "HeaderAlbumArtists": "Artistas do \u00c1lbum", + "HeaderFavoriteAlbums": "\u00c1lbuns Favoritos", + "HeaderFavoriteEpisodes": "Epis\u00f3dios Favoritos", + "HeaderFavoriteShows": "S\u00e9ries Favoritas", + "HeaderNextUp": "Pr\u00f3ximos", + "Favorites": "Favoritos", + "Collections": "Colet\u00e2neas", + "Channels": "Canais", + "Movies": "Filmes", + "Albums": "\u00c1lbuns", + "Artists": "Artistas", + "Folders": "Pastas", + "Songs": "M\u00fasicas", + "Shows": "S\u00e9ries", + "Genres": "G\u00eaneros", "NameSeasonNumber": "Temporada {0}", - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documenta\u00e7\u00e3o da Api", - "LabelDeveloperResources": "Recursos do Desenvolvedor", - "LabelBrowseLibrary": "Explorar Biblioteca", - "LabelConfigureServer": "Configurar o Emby", - "LabelRestartServer": "Reiniciar Servidor", - "CategorySync": "Sincroniza\u00e7\u00e3o", - "CategoryUser": "Usu\u00e1rio", - "CategorySystem": "Sistema", - "CategoryApplication": "Aplica\u00e7\u00e3o", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Falha no plugin", - "NotificationOptionApplicationUpdateAvailable": "Atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o disponivel", - "NotificationOptionApplicationUpdateInstalled": "Atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o instalada", - "NotificationOptionPluginUpdateInstalled": "Atualiza\u00e7\u00e3o do plugin instalada", + "AppDeviceValues": "App: {0}, Dispositivo: {1}", + "UserDownloadingItemWithValues": "{0} est\u00e1 baixando {1}", + "HeaderLiveTV": "TV ao Vivo", + "ChapterNameValue": "Cap\u00edtulo {0}", + "ScheduledTaskFailedWithName": "{0} falhou", + "LabelRunningTimeValue": "Tempo de execu\u00e7\u00e3o: {0}", + "ScheduledTaskStartedWithName": "{0} iniciada", + "VersionNumber": "Vers\u00e3o {0}", + "PluginInstalledWithName": "{0} foi instalado", + "StartupEmbyServerIsLoading": "O Servidor Emby est\u00e1 carregando. Por favor tente novamente em breve.", + "PluginUpdatedWithName": "{0} foi atualizado", + "PluginUninstalledWithName": "{0} foi desinstalado", + "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", + "ItemRemovedWithName": "{0} foi removido da biblioteca", + "LabelIpAddressValue": "Endere\u00e7o ip: {0}", + "DeviceOnlineWithName": "{0} est\u00e1 conectado", + "UserOnlineFromDevice": "{0} est\u00e1 ativo em {1}", + "ProviderValue": "Provedor: {0}", + "SubtitlesDownloadedForItem": "Legendas baixadas para {0}", + "UserCreatedWithName": "O usu\u00e1rio {0} foi criado", + "UserPasswordChangedWithName": "A senha foi alterada para o usu\u00e1rio {0}", + "UserDeletedWithName": "O usu\u00e1rio {0} foi exclu\u00eddo", + "UserConfigurationUpdatedWithName": "A configura\u00e7\u00e3o do usu\u00e1rio foi atualizada para {0}", + "MessageServerConfigurationUpdated": "A configura\u00e7\u00e3o do servidor foi atualizada", + "MessageNamedServerConfigurationUpdatedWithValue": "A se\u00e7\u00e3o {0} da configura\u00e7\u00e3o do servidor foi atualizada", + "MessageApplicationUpdated": "O servidor Emby foi atualizado", + "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}", + "AuthenticationSucceededWithUserName": "{0} autenticado com sucesso", + "UserOfflineFromDevice": "{0} se desconectou de {1}", + "DeviceOfflineWithName": "{0} se desconectou", + "UserStartedPlayingItemWithValues": "{0} iniciou a reprodu\u00e7\u00e3o de {1}", + "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}", + "NotificationOptionPluginError": "Falha de plugin", + "NotificationOptionApplicationUpdateAvailable": "Atualiza\u00e7\u00e3o de aplicativo dispon\u00edvel", + "NotificationOptionApplicationUpdateInstalled": "Atualiza\u00e7\u00e3o de aplicativo instalada", + "NotificationOptionPluginUpdateInstalled": "Atualiza\u00e7\u00e3o de plugin instalada", "NotificationOptionPluginInstalled": "Plugin instalado", "NotificationOptionPluginUninstalled": "Plugin desinstalado", "NotificationOptionVideoPlayback": "Reprodu\u00e7\u00e3o de v\u00eddeo iniciada", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Falha na tarefa agendada", "NotificationOptionInstallationFailed": "Falha na instala\u00e7\u00e3o", "NotificationOptionNewLibraryContent": "Novo conte\u00fado adicionado", - "NotificationOptionNewLibraryContentMultiple": "Novo conte\u00fado adicionado (m\u00faltiplo)", - "NotificationOptionCameraImageUploaded": "Imagem da c\u00e2mera carregada", + "NotificationOptionCameraImageUploaded": "Imagem de c\u00e2mera enviada", "NotificationOptionUserLockedOut": "Usu\u00e1rio bloqueado", - "NotificationOptionServerRestartRequired": "Necessidade de reiniciar servidor", - "ViewTypePlaylists": "Listas de Reprodu\u00e7\u00e3o", - "ViewTypeMovies": "Filmes", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Jogos", - "ViewTypeMusic": "M\u00fasicas", - "ViewTypeMusicGenres": "G\u00eaneros", - "ViewTypeMusicArtists": "Artistas", - "ViewTypeBoxSets": "Cole\u00e7\u00f5es", - "ViewTypeChannels": "Canais", - "ViewTypeLiveTV": "TV ao Vivo", - "ViewTypeLiveTvNowPlaying": "Exibindo Agora", - "ViewTypeLatestGames": "Jogos Recentes", - "ViewTypeRecentlyPlayedGames": "Reproduzido Recentemente", - "ViewTypeGameFavorites": "Favoritos", - "ViewTypeGameSystems": "Sistemas de Jogo", - "ViewTypeGameGenres": "G\u00eaneros", - "ViewTypeTvResume": "Retomar", - "ViewTypeTvNextUp": "Pr\u00f3ximos", - "ViewTypeTvLatest": "Recentes", - "ViewTypeTvShowSeries": "S\u00e9ries", - "ViewTypeTvGenres": "G\u00eaneros", - "ViewTypeTvFavoriteSeries": "S\u00e9ries Favoritas", - "ViewTypeTvFavoriteEpisodes": "Epis\u00f3dios Favoritos", - "ViewTypeMovieResume": "Retomar", - "ViewTypeMovieLatest": "Recentes", - "ViewTypeMovieMovies": "Filmes", - "ViewTypeMovieCollections": "Cole\u00e7\u00f5es", - "ViewTypeMovieFavorites": "Favoritos", - "ViewTypeMovieGenres": "G\u00eaneros", - "ViewTypeMusicLatest": "Recentes", - "ViewTypeMusicPlaylists": "Listas de Reprodu\u00e7\u00e3o", - "ViewTypeMusicAlbums": "\u00c1lbuns", - "ViewTypeMusicAlbumArtists": "Artistas do \u00c1lbum", - "HeaderOtherDisplaySettings": "Ajustes de Exibi\u00e7\u00e3o", - "ViewTypeMusicSongs": "M\u00fasicas", - "ViewTypeMusicFavorites": "Favoritos", - "ViewTypeMusicFavoriteAlbums": "\u00c1lbuns Favoritos", - "ViewTypeMusicFavoriteArtists": "Artistas Favoritos", - "ViewTypeMusicFavoriteSongs": "M\u00fasicas Favoritas", - "ViewTypeFolders": "Pastas", - "ViewTypeLiveTvRecordingGroups": "Grava\u00e7\u00f5es", - "ViewTypeLiveTvChannels": "Canais", - "ScheduledTaskFailedWithName": "{0} falhou", - "LabelRunningTimeValue": "Dura\u00e7\u00e3o: {0}", - "ScheduledTaskStartedWithName": "{0} iniciado", - "VersionNumber": "Vers\u00e3o {0}", - "PluginInstalledWithName": "{0} foi instalado", - "PluginUpdatedWithName": "{0} foi atualizado", - "PluginUninstalledWithName": "{0} foi desinstalado", - "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", - "ItemRemovedWithName": "{0} foi removido da biblioteca", - "LabelIpAddressValue": "Endere\u00e7o Ip: {0}", - "DeviceOnlineWithName": "{0} est\u00e1 conectado", - "UserOnlineFromDevice": "{0} est\u00e1 ativo em {1}", - "ProviderValue": "Provedor: {0}", - "SubtitlesDownloadedForItem": "Legendas baixadas para {0}", - "UserConfigurationUpdatedWithName": "A configura\u00e7\u00e3o do usu\u00e1rio {0} foi atualizada", - "UserCreatedWithName": "O usu\u00e1rio {0} foi criado", - "UserPasswordChangedWithName": "A senha do usu\u00e1rio {0} foi alterada", - "UserDeletedWithName": "O usu\u00e1rio {0} foi exclu\u00eddo", - "MessageServerConfigurationUpdated": "A configura\u00e7\u00e3o do servidor foi atualizada", - "MessageNamedServerConfigurationUpdatedWithValue": "A se\u00e7\u00e3o {0} da configura\u00e7\u00e3o do servidor foi atualizada", - "MessageApplicationUpdated": "O Servidor Emby foi atualizado", - "FailedLoginAttemptWithUserName": "Falha na tentativa de login de {0}", - "AuthenticationSucceededWithUserName": "{0} autenticou-se com sucesso", - "DeviceOfflineWithName": "{0} foi desconectado", + "NotificationOptionServerRestartRequired": "Necess\u00e1rio reiniciar servidor", "UserLockedOutWithName": "Usu\u00e1rio {0} foi bloqueado", - "UserOfflineFromDevice": "{0} foi desconectado de {1}", - "UserStartedPlayingItemWithValues": "{0} come\u00e7ou a reproduzir {1}", - "UserStoppedPlayingItemWithValues": "{0} parou de reproduzir {1}", - "SubtitleDownloadFailureForItem": "Falha ao baixar legendas para {0}", - "HeaderUnidentified": "N\u00e3o-identificado", - "HeaderImagePrimary": "Principal", - "HeaderImageBackdrop": "Imagem de Fundo", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "Imagem do Usu\u00e1rio", - "HeaderOverview": "Sinopse", - "HeaderShortOverview": "Sinopse curta", - "HeaderType": "Tipo", - "HeaderSeverity": "Severidade", - "HeaderUser": "Usu\u00e1rio", - "HeaderName": "Nome", - "HeaderDate": "Data", - "HeaderPremiereDate": "Data da Estr\u00e9ia", - "HeaderDateAdded": "Data da Adi\u00e7\u00e3o", - "HeaderReleaseDate": "Data de lan\u00e7amento", - "HeaderRuntime": "Dura\u00e7\u00e3o", - "HeaderPlayCount": "N\u00famero de Reprodu\u00e7\u00f5es", - "HeaderSeason": "Temporada", - "HeaderSeasonNumber": "N\u00famero da temporada", - "HeaderSeries": "S\u00e9rie:", - "HeaderNetwork": "Rede de TV", - "HeaderYear": "Ano:", - "HeaderYears": "Anos:", - "HeaderParentalRating": "Classifica\u00e7\u00e3o Parental", - "HeaderCommunityRating": "Avalia\u00e7\u00e3o da Comunidade", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Especiais", - "HeaderGameSystems": "Sistemas de Jogo", - "HeaderPlayers": "Jogadores:", - "HeaderAlbumArtists": "Artistas do \u00c1lbum", - "HeaderAlbums": "\u00c1lbuns", - "HeaderDisc": "Disco", - "HeaderTrack": "Faixa", - "HeaderAudio": "\u00c1udio", - "HeaderVideo": "V\u00eddeo", - "HeaderEmbeddedImage": "Imagem incorporada", - "HeaderResolution": "Resolu\u00e7\u00e3o", - "HeaderSubtitles": "Legendas", - "HeaderGenres": "G\u00eaneros", - "HeaderCountries": "Pa\u00edses", - "HeaderStatus": "Status", - "HeaderTracks": "Faixas", - "HeaderMusicArtist": "Artista da m\u00fasica", - "HeaderLocked": "Travado", - "HeaderStudios": "Est\u00fadios", - "HeaderActor": "Atores", - "HeaderComposer": "Compositores", - "HeaderDirector": "Diretores", - "HeaderGuestStar": "Ator convidado", - "HeaderProducer": "Produtores", - "HeaderWriter": "Escritores", - "HeaderParentalRatings": "Classifica\u00e7\u00f5es Parentais", - "HeaderCommunityRatings": "Avalia\u00e7\u00f5es da comunidade", - "StartupEmbyServerIsLoading": "O Servidor Emby est\u00e1 carregando. Por favor, tente novamente em breve." + "SubtitleDownloadFailureForItem": "Download de legendas falhou para {0}", + "Sync": "Sincronizar", + "User": "Usu\u00e1rio", + "System": "Sistema", + "Application": "Aplicativo", + "Plugin": "Plugin", + "LabelExit": "Sair", + "LabelVisitCommunity": "Visite a Comunidade", + "LabelBrowseLibrary": "Explorar Biblioteca", + "LabelConfigureServer": "Configurar Emby", + "LabelRestartServer": "Reiniciar Servidor" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/pt-PT.json b/Emby.Server.Implementations/Localization/Core/pt-PT.json index f12939b102..bb221e6439 100644 --- a/Emby.Server.Implementations/Localization/Core/pt-PT.json +++ b/Emby.Server.Implementations/Localization/Core/pt-PT.json @@ -1,178 +1,95 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Especial - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continuar a ver", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "S\u00e9ries Favoritas", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Filmes", - "FolderTypeMusic": "M\u00fasica", - "FolderTypeAdultVideos": "V\u00eddeos adultos", - "FolderTypePhotos": "Fotos", - "FolderTypeMusicVideos": "V\u00eddeos musicais", - "FolderTypeHomeVideos": "V\u00eddeos caseiros", - "FolderTypeGames": "Jogos", - "FolderTypeBooks": "Livros", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Elenco e Equipa", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Sair", - "LabelVisitCommunity": "Visitar a Comunidade", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documenta\u00e7\u00e3o da API", - "LabelDeveloperResources": "Recursos do Programador", - "LabelBrowseLibrary": "Navegar pela Biblioteca", - "LabelConfigureServer": "Configurar o Emby", - "LabelRestartServer": "Reiniciar Servidor", - "CategorySync": "Sincroniza\u00e7\u00e3o", - "CategoryUser": "Utilizador", - "CategorySystem": "Sistema", - "CategoryApplication": "Aplica\u00e7\u00e3o", - "CategoryPlugin": "Extens\u00e3o", - "NotificationOptionPluginError": "Falha na extens\u00e3o", - "NotificationOptionApplicationUpdateAvailable": "Dispon\u00edvel atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o", - "NotificationOptionApplicationUpdateInstalled": "Instalada atualiza\u00e7\u00e3o da aplica\u00e7\u00e3o", - "NotificationOptionPluginUpdateInstalled": "Instalada atualiza\u00e7\u00e3o da extens\u00e3o", - "NotificationOptionPluginInstalled": "Extens\u00e3o instalada", - "NotificationOptionPluginUninstalled": "Extens\u00e3o desinstalada", - "NotificationOptionVideoPlayback": "Reprodu\u00e7\u00e3o de v\u00eddeo iniciada", - "NotificationOptionAudioPlayback": "Reprodu\u00e7\u00e3o de \u00e1udio iniciada", - "NotificationOptionGamePlayback": "Reprodu\u00e7\u00e3o de jogo iniciada", - "NotificationOptionVideoPlaybackStopped": "Reprodu\u00e7\u00e3o de v\u00eddeo parada", - "NotificationOptionAudioPlaybackStopped": "Reprodu\u00e7\u00e3o de \u00e1udio parada", - "NotificationOptionGamePlaybackStopped": "Reprodu\u00e7\u00e3o de jogo parada", - "NotificationOptionTaskFailed": "Falha na tarefa agendada", - "NotificationOptionInstallationFailed": "Falha na instala\u00e7\u00e3o", - "NotificationOptionNewLibraryContent": "Adicionado novo conte\u00fado", - "NotificationOptionNewLibraryContentMultiple": "Novo conte\u00fado adicionado (m\u00faltiplo)", - "NotificationOptionCameraImageUploaded": "Imagem da c\u00e2mara carregada", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "\u00c9 necess\u00e1rio reiniciar o servidor", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "TV ao Vivo", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Reproduzido Recentemente", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "\u00daltimas", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "\u00daltimas", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "\u00daltimas", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", "ScheduledTaskFailedWithName": "{0} failed", "LabelRunningTimeValue": "Running time: {0}", "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Vers\u00e3o {0}", - "PluginInstalledWithName": "{0} foi instalado", - "PluginUpdatedWithName": "{0} foi atualizado", - "PluginUninstalledWithName": "{0} foi desinstalado", - "ItemAddedWithName": "{0} foi adicionado \u00e0 biblioteca", - "ItemRemovedWithName": "{0} foi removido da biblioteca", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} est\u00e1 conectado", + "DeviceOnlineWithName": "{0} is connected", "UserOnlineFromDevice": "{0} is online from {1}", "ProviderValue": "Provider: {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserCreatedWithName": "User {0} has been created", "UserPasswordChangedWithName": "Password has been changed for user {0}", "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageApplicationUpdated": "Emby Server has been updated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", "UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Nome", - "HeaderDate": "Data", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "\u00c1udio", - "HeaderVideo": "V\u00eddeo", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Estado", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Aplica\u00e7\u00e3o", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/ro.json b/Emby.Server.Implementations/Localization/Core/ro.json deleted file mode 100644 index c58df27d57..0000000000 --- a/Emby.Server.Implementations/Localization/Core/ro.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Continut mixt", - "FolderTypeMovies": "Filme", - "FolderTypeMusic": "Muzica", - "FolderTypeAdultVideos": "Filme Porno", - "FolderTypePhotos": "Fotografii", - "FolderTypeMusicVideos": "Videoclipuri", - "FolderTypeHomeVideos": "Video Personale", - "FolderTypeGames": "Jocuri", - "FolderTypeBooks": "Carti", - "FolderTypeTvShows": "Seriale TV", - "FolderTypeInherit": "Relationat", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Iesire", - "LabelVisitCommunity": "Viziteaza comunitatea", - "LabelGithub": "Github", - "LabelApiDocumentation": "Documentatie Api", - "LabelDeveloperResources": "Resurse Dezvoltator", - "LabelBrowseLibrary": "Rasfoieste Librarie", - "LabelConfigureServer": "Configureaza Emby", - "LabelRestartServer": "Restarteaza Server", - "CategorySync": "Sincronizeaza", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Muzica", - "HeaderVideo": "Filme", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/ru.json b/Emby.Server.Implementations/Localization/Core/ru.json index 62fe3b4964..a921349a3e 100644 --- a/Emby.Server.Implementations/Localization/Core/ru.json +++ b/Emby.Server.Implementations/Localization/Core/ru.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "\u041f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435, \u043f\u043e\u043a\u0430 \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0432\u0430\u0448\u0435\u043c Emby Server \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f. {0} % \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e.", + "Latest": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435", + "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", + "Inherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u043e\u0435", + "Books": "\u041a\u043d\u0438\u0433\u0438", + "Music": "\u041c\u0443\u0437\u044b\u043a\u0430", + "Games": "\u0418\u0433\u0440\u044b", + "Photos": "\u0424\u043e\u0442\u043e", + "MixedContent": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", + "MusicVideos": "\u041c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0438\u0434\u0435\u043e", + "HomeVideos": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0435 \u0432\u0438\u0434\u0435\u043e", + "Playlists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", + "HeaderRecordingGroups": "\u0413\u0440\u0443\u043f\u043f\u044b \u0437\u0430\u043f\u0438\u0441\u0435\u0439", + "HeaderContinueWatching": "\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430", + "HeaderFavoriteArtists": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "HeaderFavoriteSongs": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", + "HeaderAlbumArtists": "\u0418\u0441\u043f-\u043b\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430", + "HeaderFavoriteAlbums": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", + "HeaderFavoriteEpisodes": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", + "HeaderFavoriteShows": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", + "HeaderNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435", + "Favorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", + "Collections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", + "Channels": "\u041a\u0430\u043d\u0430\u043b\u044b", + "Movies": "\u0424\u0438\u043b\u044c\u043c\u044b", + "Albums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", + "Artists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", + "Folders": "\u041f\u0430\u043f\u043a\u0438", + "Songs": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", + "Shows": "\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0438", + "Genres": "\u0416\u0430\u043d\u0440\u044b", + "NameSeasonNumber": "\u0421\u0435\u0437\u043e\u043d {0}", "AppDeviceValues": "\u041f\u0440\u0438\u043b.: {0}, \u0423\u0441\u0442\u0440.: {1}", "UserDownloadingItemWithValues": "{0} \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 {1}", - "FolderTypeMixed": "\u0421\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435", - "FolderTypeMovies": "\u041a\u0438\u043d\u043e", - "FolderTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "FolderTypeAdultVideos": "\u0414\u043b\u044f \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0445", - "FolderTypePhotos": "\u0424\u043e\u0442\u043e", - "FolderTypeMusicVideos": "\u041c\u0443\u0437. \u0432\u0438\u0434\u0435\u043e", - "FolderTypeHomeVideos": "\u0414\u043e\u043c. \u0432\u0438\u0434\u0435\u043e", - "FolderTypeGames": "\u0418\u0433\u0440\u044b", - "FolderTypeBooks": "\u041b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0430", - "FolderTypeTvShows": "\u0422\u0412", - "FolderTypeInherit": "\u041d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u043c\u044b\u0439", - "HeaderCastCrew": "\u0421\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u0438 \u0441\u043d\u0438\u043c\u0430\u043b\u0438", - "HeaderPeople": "\u041b\u044e\u0434\u0438", - "ValueSpecialEpisodeName": "\u0421\u043f\u0435\u0446\u044d\u043f\u0438\u0437\u043e\u0434 - {0}", - "LabelChapterName": "\u0421\u0446\u0435\u043d\u0430 {0}", - "NameSeasonNumber": "\u0421\u0435\u0437\u043e\u043d {0}", - "LabelExit": "\u0412\u044b\u0445\u043e\u0434", - "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", - "LabelGithub": "GitHub", - "LabelApiDocumentation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e API", - "LabelDeveloperResources": "\u0420\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432", - "LabelBrowseLibrary": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", - "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", - "CategorySync": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f", - "CategoryUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c", - "CategorySystem": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430", - "CategoryApplication": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435", - "CategoryPlugin": "\u041f\u043b\u0430\u0433\u0438\u043d", + "HeaderLiveTV": "\u042d\u0444\u0438\u0440", + "ChapterNameValue": "\u0421\u0446\u0435\u043d\u0430 {0}", + "ScheduledTaskFailedWithName": "{0} - \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430", + "LabelRunningTimeValue": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: {0}", + "ScheduledTaskStartedWithName": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430", + "VersionNumber": "\u0412\u0435\u0440\u0441\u0438\u044f {0}", + "PluginInstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", + "StartupEmbyServerIsLoading": "Emby Server \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f.", + "PluginUpdatedWithName": "{0} - \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e", + "PluginUninstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043e", + "ItemAddedWithName": "{0} - \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443", + "ItemRemovedWithName": "{0} - \u0438\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438", + "LabelIpAddressValue": "IP-\u0430\u0434\u0440\u0435\u0441: {0}", + "DeviceOnlineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0443\u0441\u0442-\u043d\u043e", + "UserOnlineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0443\u0441\u0442-\u043d\u043e", + "ProviderValue": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a: {0}", + "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0434\u043b\u044f {0} \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b", + "UserCreatedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d", + "UserPasswordChangedWithName": "\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d", + "UserDeletedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d", + "UserConfigurationUpdatedWithName": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", + "MessageServerConfigurationUpdated": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", + "MessageNamedServerConfigurationUpdatedWithValue": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0440\u0430\u0437\u0434\u0435\u043b {0}) \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", + "MessageApplicationUpdated": "Emby Server \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d", + "FailedLoginAttemptWithUserName": "{0} - \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430", + "AuthenticationSucceededWithUserName": "{0} - \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430", + "UserOfflineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0440\u0430\u0437\u044a-\u043d\u043e", + "DeviceOfflineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0440\u0430\u0437\u044a-\u043d\u043e", + "UserStartedPlayingItemWithValues": "{0} - \u0432\u043e\u0441\u043f\u0440. \u00ab{1}\u00bb \u0437\u0430\u043f-\u043d\u043e", + "UserStoppedPlayingItemWithValues": "{0} - \u0432\u043e\u0441\u043f\u0440. \u00ab{1}\u00bb \u043e\u0441\u0442-\u043d\u043e", "NotificationOptionPluginError": "\u0421\u0431\u043e\u0439 \u043f\u043b\u0430\u0433\u0438\u043d\u0430", "NotificationOptionApplicationUpdateAvailable": "\u0418\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f", "NotificationOptionApplicationUpdateInstalled": "\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "\u0421\u0431\u043e\u0439 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438", "NotificationOptionInstallationFailed": "\u0421\u0431\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438", "NotificationOptionNewLibraryContent": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e", - "NotificationOptionNewLibraryContentMultiple": "\u041d\u043e\u0432\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e (\u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e)", "NotificationOptionCameraImageUploaded": "\u041f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0430 \u0432\u044b\u043a\u043b\u0430\u0434\u043a\u0430 \u043e\u0442\u0441\u043d\u044f\u0442\u043e\u0433\u043e \u0441 \u043a\u0430\u043c\u0435\u0440\u044b", "NotificationOptionUserLockedOut": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d", "NotificationOptionServerRestartRequired": "\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430", - "ViewTypePlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", - "ViewTypeMovies": "\u041a\u0438\u043d\u043e", - "ViewTypeTvShows": "\u0422\u0412", - "ViewTypeGames": "\u0418\u0433\u0440\u044b", - "ViewTypeMusic": "\u041c\u0443\u0437\u044b\u043a\u0430", - "ViewTypeMusicGenres": "\u0416\u0430\u043d\u0440\u044b", - "ViewTypeMusicArtists": "\u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", - "ViewTypeBoxSets": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", - "ViewTypeChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", - "ViewTypeLiveTV": "\u042d\u0444\u0438\u0440", - "ViewTypeLiveTvNowPlaying": "\u0412 \u044d\u0444\u0438\u0440\u0435", - "ViewTypeLatestGames": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0438\u0433\u0440\u044b", - "ViewTypeRecentlyPlayedGames": "C\u044b\u0433\u0440\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0434\u0430\u0432\u043d\u043e", - "ViewTypeGameFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", - "ViewTypeGameSystems": "\u0418\u0433\u0440\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b", - "ViewTypeGameGenres": "\u0416\u0430\u043d\u0440\u044b", - "ViewTypeTvResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", - "ViewTypeTvNextUp": "\u041e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435", - "ViewTypeTvLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", - "ViewTypeTvShowSeries": "\u0421\u0435\u0440\u0438\u0430\u043b\u044b", - "ViewTypeTvGenres": "\u0416\u0430\u043d\u0440\u044b", - "ViewTypeTvFavoriteSeries": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0438\u0430\u043b\u044b", - "ViewTypeTvFavoriteEpisodes": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b", - "ViewTypeMovieResume": "\u0412\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u043c\u043e\u0435", - "ViewTypeMovieLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", - "ViewTypeMovieMovies": "\u0424\u0438\u043b\u044c\u043c\u044b", - "ViewTypeMovieCollections": "\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438", - "ViewTypeMovieFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", - "ViewTypeMovieGenres": "\u0416\u0430\u043d\u0440\u044b", - "ViewTypeMusicLatest": "\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435", - "ViewTypeMusicPlaylists": "\u041f\u043b\u0435\u0439-\u043b\u0438\u0441\u0442\u044b", - "ViewTypeMusicAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", - "ViewTypeMusicAlbumArtists": "\u0418\u0441\u043f-\u043b\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430", - "HeaderOtherDisplaySettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", - "ViewTypeMusicSongs": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", - "ViewTypeMusicFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435", - "ViewTypeMusicFavoriteAlbums": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0430\u043b\u044c\u0431\u043e\u043c\u044b", - "ViewTypeMusicFavoriteArtists": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438", - "ViewTypeMusicFavoriteSongs": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438", - "ViewTypeFolders": "\u041f\u0430\u043f\u043a\u0438", - "ViewTypeLiveTvRecordingGroups": "\u0417\u0430\u043f\u0438\u0441\u0438", - "ViewTypeLiveTvChannels": "\u041a\u0430\u043d\u0430\u043b\u044b", - "ScheduledTaskFailedWithName": "{0} - \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430", - "LabelRunningTimeValue": "\u0412\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f: {0}", - "ScheduledTaskStartedWithName": "{0} - \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430", - "VersionNumber": "\u0412\u0435\u0440\u0441\u0438\u044f {0}", - "PluginInstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e", - "PluginUpdatedWithName": "{0} - \u0431\u044b\u043b\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e", - "PluginUninstalledWithName": "{0} - \u0431\u044b\u043b\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043e", - "ItemAddedWithName": "{0} (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0443)", - "ItemRemovedWithName": "{0} (\u0438\u0437\u044a\u044f\u0442\u043e \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438)", - "LabelIpAddressValue": "IP-\u0430\u0434\u0440\u0435\u0441: {0}", - "DeviceOnlineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0443\u0441\u0442-\u043d\u043e", - "UserOnlineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0443\u0441\u0442-\u043d\u043e", - "ProviderValue": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a: {0}", - "SubtitlesDownloadedForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u0434\u043b\u044f {0} \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0438\u0441\u044c", - "UserConfigurationUpdatedWithName": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", - "UserCreatedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0441\u043e\u0437\u0434\u0430\u043d", - "UserPasswordChangedWithName": "\u041f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437-\u043b\u044f {0} \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d", - "UserDeletedWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0451\u043d", - "MessageServerConfigurationUpdated": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", - "MessageNamedServerConfigurationUpdatedWithValue": "\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 (\u0440\u0430\u0437\u0434\u0435\u043b {0}) \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430", - "MessageApplicationUpdated": "Emby Server \u0431\u044b\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d", - "FailedLoginAttemptWithUserName": "{0} - \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430", - "AuthenticationSucceededWithUserName": "{0} - \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u0430", - "DeviceOfflineWithName": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0440\u0430\u0437\u044a-\u043d\u043e", "UserLockedOutWithName": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c {0} \u0431\u044b\u043b \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d", - "UserOfflineFromDevice": "{0} - \u043f\u043e\u0434\u043a\u043b. \u0441 {1} \u0440\u0430\u0437\u044a-\u043d\u043e", - "UserStartedPlayingItemWithValues": "{0} - \u0432\u043e\u0441\u043f\u0440. \u00ab{1}\u00bb \u0437\u0430\u043f-\u043d\u043e", - "UserStoppedPlayingItemWithValues": "{0} - \u0432\u043e\u0441\u043f\u0440. \u00ab{1}\u00bb \u043e\u0441\u0442-\u043d\u043e", "SubtitleDownloadFailureForItem": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u044b \u043a {0} \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c", - "HeaderUnidentified": "\u041d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d\u043e", - "HeaderImagePrimary": "\u0413\u043e\u043b\u043e\u0432\u043d\u043e\u0439", - "HeaderImageBackdrop": "\u0417\u0430\u0434\u043d\u0438\u043a", - "HeaderImageLogo": "\u041b\u043e\u0433\u043e\u0442\u0438\u043f", - "HeaderUserPrimaryImage": "\u0420\u0438\u0441\u0443\u043d\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f", - "HeaderOverview": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", - "HeaderShortOverview": "\u041a\u0440\u0430\u0442\u043a\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", - "HeaderType": "\u0422\u0438\u043f", - "HeaderSeverity": "\u0412\u0430\u0436\u043d\u043e\u0441\u0442\u044c", - "HeaderUser": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c", - "HeaderName": "\u0418\u043c\u044f (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435)", - "HeaderDate": "\u0414\u0430\u0442\u0430", - "HeaderPremiereDate": "\u0414\u0430\u0442\u0430 \u043f\u0440\u0435\u043c\u044c\u0435\u0440\u044b", - "HeaderDateAdded": "\u0414\u0430\u0442\u0430 \u0434\u043e\u0431.", - "HeaderReleaseDate": "\u0414\u0430\u0442\u0430 \u0432\u044b\u043f.", - "HeaderRuntime": "\u0414\u043b\u0438\u0442.", - "HeaderPlayCount": "\u041a\u043e\u043b-\u0432\u043e \u0432\u043e\u0441\u043f\u0440.", - "HeaderSeason": "\u0421\u0435\u0437\u043e\u043d", - "HeaderSeasonNumber": "\u2116 \u0441\u0435\u0437\u043e\u043d\u0430", - "HeaderSeries": "\u0421\u0435\u0440\u0438\u0430\u043b:", - "HeaderNetwork": "\u0422\u0435\u043b\u0435\u0441\u0435\u0442\u044c", - "HeaderYear": "\u0413\u043e\u0434:", - "HeaderYears": "\u0413\u043e\u0434\u044b:", - "HeaderParentalRating": "\u0412\u043e\u0437\u0440. \u043a\u0430\u0442.", - "HeaderCommunityRating": "\u041e\u0431\u0449. \u043e\u0446\u0435\u043d\u043a\u0430", - "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b.", - "HeaderSpecials": "\u0421\u043f\u0435\u0446.", - "HeaderGameSystems": "\u0418\u0433\u0440. \u0441\u0438\u0441\u0442\u0435\u043c\u044b", - "HeaderPlayers": "\u0418\u0433\u0440\u043e\u043a\u0438:", - "HeaderAlbumArtists": "\u0418\u0441\u043f-\u043b\u0438 \u0430\u043b\u044c\u0431\u043e\u043c\u0430", - "HeaderAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u044b", - "HeaderDisc": "\u0414\u0438\u0441\u043a", - "HeaderTrack": "\u0414\u043e\u0440-\u043a\u0430", - "HeaderAudio": "\u0410\u0443\u0434\u0438\u043e", - "HeaderVideo": "\u0412\u0438\u0434\u0435\u043e", - "HeaderEmbeddedImage": "\u0412\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u0443\u043d\u043e\u043a", - "HeaderResolution": "\u0420\u0430\u0437\u0440.", - "HeaderSubtitles": "\u0421\u0443\u0431\u0442.", - "HeaderGenres": "\u0416\u0430\u043d\u0440\u044b", - "HeaderCountries": "\u0421\u0442\u0440\u0430\u043d\u044b", - "HeaderStatus": "\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435", - "HeaderTracks": "\u0414\u043e\u0440-\u043a\u0438", - "HeaderMusicArtist": "\u041c\u0443\u0437. \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c", - "HeaderLocked": "\u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043e", - "HeaderStudios": "\u0421\u0442\u0443\u0434\u0438\u0438", - "HeaderActor": "\u0410\u043a\u0442\u0451\u0440\u044b", - "HeaderComposer": "\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u044b", - "HeaderDirector": "\u0420\u0435\u0436\u0438\u0441\u0441\u0451\u0440\u044b", - "HeaderGuestStar": "\u041f\u0440\u0438\u0433\u043b. \u0430\u043a\u0442\u0451\u0440", - "HeaderProducer": "\u041f\u0440\u043e\u0434\u044e\u0441\u0435\u0440\u044b", - "HeaderWriter": "\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0441\u0442\u044b", - "HeaderParentalRatings": "\u0412\u043e\u0437\u0440\u0430\u0441\u0442\u043d\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f", - "HeaderCommunityRatings": "\u041e\u0431\u0449. \u043e\u0446\u0435\u043d\u043a\u0438", - "StartupEmbyServerIsLoading": "Emby Server \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0443 \u0432 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043c\u044f." + "Sync": "\u0421\u0438\u043d\u0445\u0440\u043e", + "User": "\u041f\u043e\u043b\u044c\u0437-\u043b\u044c", + "System": "\u0421\u0438\u0441\u0442\u0435\u043c\u0430", + "Application": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435", + "Plugin": "\u041f\u043b\u0430\u0433\u0438\u043d", + "LabelExit": "\u0412\u044b\u0445\u043e\u0434", + "LabelVisitCommunity": "\u041f\u043e\u0441\u0435\u0449\u0435\u043d\u0438\u0435 \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430", + "LabelBrowseLibrary": "\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0435", + "LabelConfigureServer": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Emby", + "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0430" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/sk.json b/Emby.Server.Implementations/Localization/Core/sk.json new file mode 100644 index 0000000000..f69b7a436b --- /dev/null +++ b/Emby.Server.Implementations/Localization/Core/sk.json @@ -0,0 +1,95 @@ +{ + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Ob\u013e\u00faben\u00e9 pesni\u010dky", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Ob\u013e\u00faben\u00e9 seri\u00e1ly", + "HeaderNextUp": "Next Up", + "Favorites": "Ob\u013e\u00faben\u00e9", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Series", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", + "AppDeviceValues": "App: {0}, Device: {1}", + "UserDownloadingItemWithValues": "{0} is downloading {1}", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" +} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/sl-SI.json b/Emby.Server.Implementations/Localization/Core/sl-SI.json index 0631e3fa88..d063cccc01 100644 --- a/Emby.Server.Implementations/Localization/Core/sl-SI.json +++ b/Emby.Server.Implementations/Localization/Core/sl-SI.json @@ -1,102 +1,45 @@ { - "DbUpgradeMessage": "Prosimo pocakajte podatkovna baza Emby Streznika se posodablja. {0}% koncano.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Serije", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Izhod", - "LabelVisitCommunity": "Obiscite Skupnost", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Dokumentacija", - "LabelDeveloperResources": "Vsebine za razvijalce", - "LabelBrowseLibrary": "Brskanje po knjiznici", - "LabelConfigureServer": "Emby Nastavitve", - "LabelRestartServer": "Ponovni Zagon Streznika", - "CategorySync": "Sync", - "CategoryUser": "Uporabnik", - "CategorySystem": "Sistem", - "CategoryApplication": "Aplikacija", - "CategoryPlugin": "Vticnik", - "NotificationOptionPluginError": "Napaka v vticniku", - "NotificationOptionApplicationUpdateAvailable": "Na voljo je posodobitev", - "NotificationOptionApplicationUpdateInstalled": "Posodobitev je bila namescena", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Vticnik namescen", - "NotificationOptionPluginUninstalled": "Vticnik odstranjen", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Predvajanje videa koncano", - "NotificationOptionAudioPlaybackStopped": "Predvajanje audia koncano", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Napaka v namestitvi", - "NotificationOptionNewLibraryContent": "Dodana nova vsebina", - "NotificationOptionNewLibraryContentMultiple": "Dodane nove vsebine", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Zahtevan je ponovni zagon", - "ViewTypePlaylists": "Playliste", - "ViewTypeMovies": "Filmi", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Igre", - "ViewTypeMusic": "Glasba", - "ViewTypeMusicGenres": "Zvrsti", - "ViewTypeMusicArtists": "Izvajalci", - "ViewTypeBoxSets": "Zbirke", - "ViewTypeChannels": "Kanali", - "ViewTypeLiveTV": "TV v Zivo", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Zadnje Igre", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Priljubljeno", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Zvrsti", - "ViewTypeTvResume": "Nadaljuj", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Serije", - "ViewTypeTvGenres": "Zvrsti", - "ViewTypeTvFavoriteSeries": "Priljubljene Serije", - "ViewTypeTvFavoriteEpisodes": "Priljubljene Epizode", - "ViewTypeMovieResume": "Nadaljuj", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Filmi", - "ViewTypeMovieCollections": "Zbirke", - "ViewTypeMovieFavorites": "Priljubljeno", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albumi", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Priljubljeni Albumi", - "ViewTypeMusicFavoriteArtists": "Priljubljeni Izvajalci", - "ViewTypeMusicFavoriteSongs": "Priljubljene skladbe", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", "ScheduledTaskFailedWithName": "{0} failed", "LabelRunningTimeValue": "Running time: {0}", "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Verzija {0}", + "VersionNumber": "Version {0}", "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", "PluginUpdatedWithName": "{0} was updated", "PluginUninstalledWithName": "{0} was uninstalled", "ItemAddedWithName": "{0} was added to the library", @@ -106,73 +49,47 @@ "UserOnlineFromDevice": "{0} is online from {1}", "ProviderValue": "Provider: {0}", "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "UserCreatedWithName": "User {0} has been created", "UserPasswordChangedWithName": "Password has been changed for user {0}", "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", "MessageServerConfigurationUpdated": "Server configuration has been updated", "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", "MessageApplicationUpdated": "Emby Server has been updated", "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", "UserStartedPlayingItemWithValues": "{0} has started playing {1}", "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", + "NotificationOptionApplicationUpdateAvailable": "Application update available", + "NotificationOptionApplicationUpdateInstalled": "Application update installed", + "NotificationOptionPluginUpdateInstalled": "Plugin update installed", + "NotificationOptionPluginInstalled": "Plugin installed", + "NotificationOptionPluginUninstalled": "Plugin uninstalled", + "NotificationOptionVideoPlayback": "Video playback started", + "NotificationOptionAudioPlayback": "Audio playback started", + "NotificationOptionGamePlayback": "Game playback started", + "NotificationOptionVideoPlaybackStopped": "Video playback stopped", + "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", + "NotificationOptionGamePlaybackStopped": "Game playback stopped", + "NotificationOptionTaskFailed": "Scheduled task failure", + "NotificationOptionInstallationFailed": "Installation failure", + "NotificationOptionNewLibraryContent": "New content added", + "NotificationOptionCameraImageUploaded": "Camera image uploaded", + "NotificationOptionUserLockedOut": "User locked out", + "NotificationOptionServerRestartRequired": "Server restart required", + "UserLockedOutWithName": "User {0} has been locked out", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "Uporabnik", - "HeaderName": "Name", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/sv.json b/Emby.Server.Implementations/Localization/Core/sv.json index 4a6565affe..e3ec363ce6 100644 --- a/Emby.Server.Implementations/Localization/Core/sv.json +++ b/Emby.Server.Implementations/Localization/Core/sv.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "V\u00e4nligen v\u00e4nta medan databasen p\u00e5 din Emby Server uppgraderas. {0}% klar", - "AppDeviceValues": "App: {0}, enhet: {1}", - "UserDownloadingItemWithValues": "{0} laddar ned {1}", - "FolderTypeMixed": "Blandat inneh\u00e5ll", - "FolderTypeMovies": "Filmer", - "FolderTypeMusic": "Musik", - "FolderTypeAdultVideos": "Inneh\u00e5ll f\u00f6r vuxna", - "FolderTypePhotos": "Foton", - "FolderTypeMusicVideos": "Musikvideor", - "FolderTypeHomeVideos": "Hemvideor", - "FolderTypeGames": "Spel", - "FolderTypeBooks": "B\u00f6cker", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "\u00c4rv", - "HeaderCastCrew": "Rollista & bes\u00e4ttning", - "HeaderPeople": "Personer", + "Latest": "Senaste", "ValueSpecialEpisodeName": "Specialavsnitt - {0}", - "LabelChapterName": "Kapitel {0}", + "Inherit": "\u00c4rv", + "Books": "B\u00f6cker", + "Music": "Musik", + "Games": "Spel", + "Photos": "Bilder", + "MixedContent": "Blandat inneh\u00e5ll", + "MusicVideos": "Musikvideos", + "HomeVideos": "Hemvideor", + "Playlists": "Spellistor", + "HeaderRecordingGroups": "Inspelningsgrupper", + "HeaderContinueWatching": "Forts\u00e4tt kolla p\u00e5", + "HeaderFavoriteArtists": "Favoritartister", + "HeaderFavoriteSongs": "Favoritl\u00e5tar", + "HeaderAlbumArtists": "Albumartister", + "HeaderFavoriteAlbums": "Favoritalbum", + "HeaderFavoriteEpisodes": "Favoritavsnitt", + "HeaderFavoriteShows": "Favoritserier", + "HeaderNextUp": "N\u00e4sta p\u00e5 tur", + "Favorites": "Favoriter", + "Collections": "Samlingar", + "Channels": "Kanaler", + "Movies": "Filmer", + "Albums": "Album", + "Artists": "Artister", + "Folders": "Mappar", + "Songs": "L\u00e5tar", + "Shows": "Serier", + "Genres": "Genrer", "NameSeasonNumber": "S\u00e4song {0}", - "LabelExit": "Avsluta", - "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api-dokumentation", - "LabelDeveloperResources": "Resurser f\u00f6r utvecklare", - "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", - "LabelConfigureServer": "Konfigurera Emby", - "LabelRestartServer": "Starta om servern", - "CategorySync": "Synkronisera", - "CategoryUser": "Anv\u00e4ndare", - "CategorySystem": "System", - "CategoryApplication": "App", - "CategoryPlugin": "Till\u00e4gg", + "AppDeviceValues": "App: {0}, Enhet: {1}", + "UserDownloadingItemWithValues": "{0} laddar ner {1}", + "HeaderLiveTV": "Live-TV", + "ChapterNameValue": "Kapitel {0}", + "ScheduledTaskFailedWithName": "{0} misslyckades", + "LabelRunningTimeValue": "Speltid: {0}", + "ScheduledTaskStartedWithName": "{0} startad", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} installerades", + "StartupEmbyServerIsLoading": "Emby server arbetar. Pr\u00f6va igen inom kort.", + "PluginUpdatedWithName": "{0} uppdaterades", + "PluginUninstalledWithName": "{0} avinstallerades", + "ItemAddedWithName": "{0} lades till i biblioteket", + "ItemRemovedWithName": "{0} togs bort fr\u00e5n biblioteket", + "LabelIpAddressValue": "IP-adress: {0}", + "DeviceOnlineWithName": "{0} \u00e4r ansluten", + "UserOnlineFromDevice": "{0} \u00e4r uppkopplad fr\u00e5n {1}", + "ProviderValue": "K\u00e4lla: {0}", + "SubtitlesDownloadedForItem": "Undertexter har laddats ner till {0}", + "UserCreatedWithName": "Anv\u00e4ndaren {0} har skapats", + "UserPasswordChangedWithName": "L\u00f6senordet f\u00f6r {0} har \u00e4ndrats", + "UserDeletedWithName": "Anv\u00e4ndaren {0} har tagits bort", + "UserConfigurationUpdatedWithName": "Anv\u00e4ndarinst\u00e4llningarna f\u00f6r {0} har uppdaterats", + "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats", + "MessageNamedServerConfigurationUpdatedWithValue": "Serverinst\u00e4llningarna {0} har uppdaterats", + "MessageApplicationUpdated": "Emby Server har uppdaterats", + "FailedLoginAttemptWithUserName": "Misslyckat inloggningsf\u00f6rs\u00f6k fr\u00e5n {0}", + "AuthenticationSucceededWithUserName": "{0} har autentiserats", + "UserOfflineFromDevice": "{0} har avbrutit anslutningen fr\u00e5n {1}", + "DeviceOfflineWithName": "{0} har tappat anslutningen", + "UserStartedPlayingItemWithValues": "{0} har b\u00f6rjat spela upp {1}", + "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelningen av {1}", "NotificationOptionPluginError": "Fel uppstod med till\u00e4gget", "NotificationOptionApplicationUpdateAvailable": "Ny programversion tillg\u00e4nglig", "NotificationOptionApplicationUpdateInstalled": "Programuppdatering installerad", @@ -45,134 +76,20 @@ "NotificationOptionGamePlaybackStopped": "Spel stoppat", "NotificationOptionTaskFailed": "Schemalagd aktivitet har misslyckats", "NotificationOptionInstallationFailed": "Fel vid installation", - "NotificationOptionNewLibraryContent": "Nytt inneh\u00e5ll har tillkommit", - "NotificationOptionNewLibraryContentMultiple": "Nytillkommet inneh\u00e5ll finns (flera objekt)", - "NotificationOptionCameraImageUploaded": "Kaberabild uppladdad", - "NotificationOptionUserLockedOut": "Anv\u00e4ndare har l\u00e5sts ute", + "NotificationOptionNewLibraryContent": "Nytt inneh\u00e5ll har lagts till", + "NotificationOptionCameraImageUploaded": "Kamerabild har laddats upp", + "NotificationOptionUserLockedOut": "Anv\u00e4ndare har l\u00e5sts ut", "NotificationOptionServerRestartRequired": "Servern m\u00e5ste startas om", - "ViewTypePlaylists": "Spellistor", - "ViewTypeMovies": "Filmer", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Spel", - "ViewTypeMusic": "Musik", - "ViewTypeMusicGenres": "Genrer", - "ViewTypeMusicArtists": "Artister", - "ViewTypeBoxSets": "Samlingar", - "ViewTypeChannels": "Kanaler", - "ViewTypeLiveTV": "Live-TV", - "ViewTypeLiveTvNowPlaying": "Visas nu", - "ViewTypeLatestGames": "Senaste spelen", - "ViewTypeRecentlyPlayedGames": "Nyligen spelade", - "ViewTypeGameFavorites": "Favoriter", - "ViewTypeGameSystems": "Spelsystem", - "ViewTypeGameGenres": "Genrer", - "ViewTypeTvResume": "\u00c5teruppta", - "ViewTypeTvNextUp": "N\u00e4stkommande", - "ViewTypeTvLatest": "Nytillkommet", - "ViewTypeTvShowSeries": "Serier", - "ViewTypeTvGenres": "Genrer", - "ViewTypeTvFavoriteSeries": "Favoritserier", - "ViewTypeTvFavoriteEpisodes": "Favoritavsnitt", - "ViewTypeMovieResume": "\u00c5teruppta", - "ViewTypeMovieLatest": "Nytillkommet", - "ViewTypeMovieMovies": "Filmer", - "ViewTypeMovieCollections": "Samlingar", - "ViewTypeMovieFavorites": "Favoriter", - "ViewTypeMovieGenres": "Genrer", - "ViewTypeMusicLatest": "Nytillkommet", - "ViewTypeMusicPlaylists": "Spellistor", - "ViewTypeMusicAlbums": "Album", - "ViewTypeMusicAlbumArtists": "Albumartister", - "HeaderOtherDisplaySettings": "Visningsalternativ", - "ViewTypeMusicSongs": "L\u00e5tar", - "ViewTypeMusicFavorites": "Favoriter", - "ViewTypeMusicFavoriteAlbums": "Favoritalbum", - "ViewTypeMusicFavoriteArtists": "Favoritartister", - "ViewTypeMusicFavoriteSongs": "Favoritl\u00e5tar", - "ViewTypeFolders": "Mappar", - "ViewTypeLiveTvRecordingGroups": "Inspelningar", - "ViewTypeLiveTvChannels": "Kanaler", - "ScheduledTaskFailedWithName": "{0} misslyckades", - "LabelRunningTimeValue": "Speltid: {0}", - "ScheduledTaskStartedWithName": "{0} startad", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} installerades", - "PluginUpdatedWithName": "{0} uppdaterades", - "PluginUninstalledWithName": "{0} avinstallerades", - "ItemAddedWithName": "{0} lades till i biblioteket", - "ItemRemovedWithName": "{0} togs bort ur biblioteket", - "LabelIpAddressValue": "IP-adress: {0}", - "DeviceOnlineWithName": "{0} \u00e4r ansluten", - "UserOnlineFromDevice": "{0} \u00e4r uppkopplad fr\u00e5n {1}", - "ProviderValue": "K\u00e4lla: {0}", - "SubtitlesDownloadedForItem": "Undertexter har laddats ner f\u00f6r {0}", - "UserConfigurationUpdatedWithName": "Anv\u00e4ndarinst\u00e4llningarna f\u00f6r {0} har uppdaterats", - "UserCreatedWithName": "Anv\u00e4ndaren {0} har skapats", - "UserPasswordChangedWithName": "L\u00f6senordet f\u00f6r {0} har \u00e4ndrats", - "UserDeletedWithName": "Anv\u00e4ndaren {0} har tagits bort", - "MessageServerConfigurationUpdated": "Server konfigurationen har uppdaterats", - "MessageNamedServerConfigurationUpdatedWithValue": "Serverinst\u00e4llningarnas del {0} ar uppdaterats", - "MessageApplicationUpdated": "Emby Server har uppdaterats", - "FailedLoginAttemptWithUserName": "Misslyckat inloggningsf\u00f6rs\u00f6k fr\u00e5n {0}", - "AuthenticationSucceededWithUserName": "{0} har autentiserats", - "DeviceOfflineWithName": "{0} har avbrutit anslutningen", "UserLockedOutWithName": "Anv\u00e4ndare {0} har l\u00e5sts ute", - "UserOfflineFromDevice": "{0} har avbrutit anslutningen fr\u00e5n {1}", - "UserStartedPlayingItemWithValues": "{0} har p\u00e5b\u00f6rjat uppspelning av {1}", - "UserStoppedPlayingItemWithValues": "{0} har avslutat uppspelning av {1}", "SubtitleDownloadFailureForItem": "Nerladdning av undertexter f\u00f6r {0} misslyckades", - "HeaderUnidentified": "Oidentifierad", - "HeaderImagePrimary": "Huvudbild", - "HeaderImageBackdrop": "Bakgrundsbild", - "HeaderImageLogo": "Logotyp", - "HeaderUserPrimaryImage": "Anv\u00e4ndarbild", - "HeaderOverview": "\u00d6versikt", - "HeaderShortOverview": "Kort \u00f6versikt", - "HeaderType": "Typ", - "HeaderSeverity": "Severity", - "HeaderUser": "Anv\u00e4ndare", - "HeaderName": "Namn", - "HeaderDate": "Datum", - "HeaderPremiereDate": "Premi\u00e4rdatum", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Premi\u00e4rdatum:", - "HeaderRuntime": "Speltid", - "HeaderPlayCount": "Antal spelningar", - "HeaderSeason": "S\u00e4song", - "HeaderSeasonNumber": "S\u00e4songsnummer:", - "HeaderSeries": "Serie:", - "HeaderNetwork": "TV-bolag", - "HeaderYear": "\u00c5r:", - "HeaderYears": "\u00c5r:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Anv\u00e4ndaromd\u00f6me", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specialavsnitt", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Spelare:", - "HeaderAlbumArtists": "Albumartister", - "HeaderAlbums": "Album", - "HeaderDisc": "Skiva", - "HeaderTrack": "Sp\u00e5r", - "HeaderAudio": "Ljud", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Infogad bild", - "HeaderResolution": "Uppl\u00f6sning", - "HeaderSubtitles": "Undertexter", - "HeaderGenres": "Genrer", - "HeaderCountries": "L\u00e4nder", - "HeaderStatus": "Status", - "HeaderTracks": "Sp\u00e5r", - "HeaderMusicArtist": "Musikartist", - "HeaderLocked": "L\u00e5st", - "HeaderStudios": "Studior", - "HeaderActor": "Sk\u00e5despelare", - "HeaderComposer": "Komposit\u00f6rer", - "HeaderDirector": "Regiss\u00f6r", - "HeaderGuestStar": "G\u00e4startist", - "HeaderProducer": "Producenter", - "HeaderWriter": "F\u00f6rfattare", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server startar. V\u00e4nligen f\u00f6rs\u00f6k igen om en kort stund." + "Sync": "Synk", + "User": "Anv\u00e4ndare", + "System": "System", + "Application": "App", + "Plugin": "Till\u00e4gg", + "LabelExit": "Avsluta", + "LabelVisitCommunity": "Bes\u00f6k v\u00e5rt diskussionsforum", + "LabelBrowseLibrary": "Bl\u00e4ddra i biblioteket", + "LabelConfigureServer": "Konfigurera Emby", + "LabelRestartServer": "Starta om servern" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/tr.json b/Emby.Server.Implementations/Localization/Core/tr.json index a691e9d025..3a5f84e099 100644 --- a/Emby.Server.Implementations/Localization/Core/tr.json +++ b/Emby.Server.Implementations/Localization/Core/tr.json @@ -1,37 +1,68 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favori Showlar", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Cikis", - "LabelVisitCommunity": "Bizi Ziyaret Edin", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "K\u00fct\u00fcphane", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Server Yeniden Baslat", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Uygulamalar", - "CategoryPlugin": "Eklenti", - "NotificationOptionPluginError": "Eklenti Ba\u015far\u0131s\u0131z", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "Version {0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", + "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", "NotificationOptionPluginUpdateInstalled": "Plugin update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Sunucu yeniden ba\u015flat\u0131lmal\u0131", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Versiyon {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", + "NotificationOptionServerRestartRequired": "Server restart required", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Durum", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "Visit Community", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/uk.json b/Emby.Server.Implementations/Localization/Core/uk.json deleted file mode 100644 index 0dc6afe8a2..0000000000 --- a/Emby.Server.Implementations/Localization/Core/uk.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "FolderTypeMusic": "\u041c\u0443\u0437\u0438\u043a\u0430", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "\u0421\u0432\u0456\u0442\u043b\u0438\u043d\u0438", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "\u0406\u0433\u0440\u0438", - "FolderTypeBooks": "\u041a\u043d\u0438\u0433\u0438", - "FolderTypeTvShows": "\u0422\u0411", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "\u0412\u0438\u0439\u0442\u0438", - "LabelVisitCommunity": "Visit Community", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Browse Library", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "\u041a\u043e\u043b\u0435\u043a\u0446\u0456\u0457", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456 \u0456\u0433\u0440\u0438", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "\u0424\u0456\u043b\u044c\u043c\u0438", - "ViewTypeMovieCollections": "\u041a\u043e\u043b\u0435\u043a\u0446\u0456\u0457", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "\u041e\u0441\u0442\u0430\u043d\u043d\u0456", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "\u0421\u0435\u0437\u043e\u043d", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "\u0422\u0440\u0435\u0439\u043b\u0435\u0440\u0438", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "\u0410\u043b\u044c\u0431\u043e\u043c\u0438", - "HeaderDisc": "\u0414\u0438\u0441\u043a", - "HeaderTrack": "\u0414\u043e\u0440\u0456\u0436\u043a\u0430", - "HeaderAudio": "\u0410\u0443\u0434\u0456\u043e", - "HeaderVideo": "\u0412\u0456\u0434\u0435\u043e", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Status", - "HeaderTracks": "\u0414\u043e\u0440\u0456\u0436\u043a\u0438", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "\u0421\u0442\u0443\u0434\u0456\u0457", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/vi.json b/Emby.Server.Implementations/Localization/Core/vi.json deleted file mode 100644 index 6ea1d1d3fd..0000000000 --- a/Emby.Server.Implementations/Localization/Core/vi.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "Cast & Crew", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "Tho\u00e1t", - "LabelVisitCommunity": "Gh\u00e9 th\u0103m trang C\u1ed9ng \u0111\u1ed3ng", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api Documentation", - "LabelDeveloperResources": "Developer Resources", - "LabelBrowseLibrary": "Duy\u1ec7t th\u01b0 vi\u1ec7n", - "LabelConfigureServer": "Configure Emby", - "LabelRestartServer": "Kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "Version {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "T\u00ean", - "HeaderDate": "Ng\u00e0y", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "Tr\u1ea1ng th\u00e1i", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/zh-CN.json b/Emby.Server.Implementations/Localization/Core/zh-CN.json index 580832a9ea..2eb6d89e84 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-CN.json +++ b/Emby.Server.Implementations/Localization/Core/zh-CN.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", - "AppDeviceValues": "App\uff1a {0}\uff0c\u8bbe\u5907\uff1a {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\u6df7\u5408\u5185\u5bb9", - "FolderTypeMovies": "\u7535\u5f71", - "FolderTypeMusic": "\u97f3\u4e50", - "FolderTypeAdultVideos": "\u6210\u4eba\u89c6\u9891", - "FolderTypePhotos": "\u56fe\u7247", - "FolderTypeMusicVideos": "\u97f3\u4e50\u89c6\u9891", - "FolderTypeHomeVideos": "\u5bb6\u5ead\u89c6\u9891", - "FolderTypeGames": "\u6e38\u620f", - "FolderTypeBooks": "\u4e66\u7c4d", - "FolderTypeTvShows": "\u7535\u89c6", - "FolderTypeInherit": "\u7ee7\u627f", - "HeaderCastCrew": "\u6f14\u804c\u4eba\u5458", - "HeaderPeople": "\u4eba\u7269", - "ValueSpecialEpisodeName": "\u7279\u522b - {0}", - "LabelChapterName": "\u7ae0\u8282 {0}", + "Latest": "\u6700\u65b0", + "ValueSpecialEpisodeName": "\u7279\u5178 - {0}", + "Inherit": "\u7ee7\u627f", + "Books": "\u4e66\u7c4d", + "Music": "\u97f3\u4e50", + "Games": "\u6e38\u620f", + "Photos": "\u7167\u7247", + "MixedContent": "\u6df7\u5408\u5185\u5bb9", + "MusicVideos": "\u97f3\u4e50\u89c6\u9891", + "HomeVideos": "\u5bb6\u5ead\u89c6\u9891", + "Playlists": "\u64ad\u653e\u5217\u8868", + "HeaderRecordingGroups": "\u5f55\u5236\u7ec4", + "HeaderContinueWatching": "\u7ee7\u7eed\u89c2\u770b", + "HeaderFavoriteArtists": "\u6700\u7231\u4f5c\u5bb6", + "HeaderFavoriteSongs": "\u6700\u7231\u7684\u6b4c\u66f2", + "HeaderAlbumArtists": "\u4e13\u8f91\u4f5c\u5bb6", + "HeaderFavoriteAlbums": "\u6700\u7231\u7684\u4e13\u8f91", + "HeaderFavoriteEpisodes": "\u6700\u7231\u7684\u96c6", + "HeaderFavoriteShows": "\u6700\u7231\u7684\u8282\u76ee", + "HeaderNextUp": "\u63a5\u4e0b\u6765", + "Favorites": "\u6700\u7231", + "Collections": "\u5408\u96c6", + "Channels": "\u9891\u9053", + "Movies": "\u7535\u5f71", + "Albums": "\u4e13\u8f91", + "Artists": "\u827a\u672f\u5bb6", + "Folders": "\u6587\u4ef6\u5939", + "Songs": "\u6b4c\u66f2", + "Shows": "\u8282\u76ee", + "Genres": "\u98ce\u683c", "NameSeasonNumber": "\u5b63 {0}", - "LabelExit": "\u9000\u51fa", - "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", - "LabelGithub": "Github", - "LabelApiDocumentation": "API\u6587\u6863", - "LabelDeveloperResources": "\u5f00\u53d1\u8005\u8d44\u6e90", - "LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93", - "LabelConfigureServer": "\u914d\u7f6eEmby", - "LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668", - "CategorySync": "\u540c\u6b65", - "CategoryUser": "\u7528\u6237", - "CategorySystem": "\u7cfb\u7edf", - "CategoryApplication": "\u5e94\u7528\u7a0b\u5e8f", - "CategoryPlugin": "\u63d2\u4ef6", + "AppDeviceValues": "\u5e94\u7528: {0}, \u8bbe\u5907: {1}", + "UserDownloadingItemWithValues": "{0} \u6b63\u5728\u4e0b\u8f7d {1}", + "HeaderLiveTV": "\u7535\u89c6\u76f4\u64ad", + "ChapterNameValue": "\u7ae0\u8282 {0}", + "ScheduledTaskFailedWithName": "{0} \u5df2\u5931\u8d25", + "LabelRunningTimeValue": "\u8fd0\u884c\u65f6\u95f4\uff1a{0}", + "ScheduledTaskStartedWithName": "{0} \u5df2\u5f00\u59cb", + "VersionNumber": "\u7248\u672c {0}", + "PluginInstalledWithName": "{0} \u5df2\u5b89\u88c5", + "StartupEmbyServerIsLoading": "Emby \u670d\u52a1\u5668\u52a0\u8f7d\u4e2d\u3002\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002", + "PluginUpdatedWithName": "{0} \u5df2\u66f4\u65b0", + "PluginUninstalledWithName": "{0} \u5df2\u5378\u8f7d", + "ItemAddedWithName": "{0} \u5df2\u6dfb\u52a0\u5230\u5a92\u4f53\u5e93", + "ItemRemovedWithName": "{0} \u5df2\u4ece\u5a92\u4f53\u5e93\u4e2d\u79fb\u9664", + "LabelIpAddressValue": "Ip \u5730\u5740\uff1a{0}", + "DeviceOnlineWithName": "{0} \u5df2\u8fde\u63a5", + "UserOnlineFromDevice": "{0} \u5728\u7ebf\uff0c\u6765\u81ea {1}", + "ProviderValue": "\u63d0\u4f9b\u5546\uff1a{0}", + "SubtitlesDownloadedForItem": "\u5df2\u4e3a {0} \u4e0b\u8f7d\u4e86\u5b57\u5e55", + "UserCreatedWithName": "\u7528\u6237 {0} \u5df2\u521b\u5efa", + "UserPasswordChangedWithName": "\u5df2\u4e3a\u7528\u6237 {0} \u66f4\u6539\u5bc6\u7801", + "UserDeletedWithName": "\u7528\u6237 {0} \u5df2\u5220\u9664", + "UserConfigurationUpdatedWithName": "{0} \u7684\u7528\u6237\u914d\u7f6e\u5df2\u66f4\u65b0", + "MessageServerConfigurationUpdated": "\u670d\u52a1\u5668\u914d\u7f6e\u5df2\u66f4\u65b0", + "MessageNamedServerConfigurationUpdatedWithValue": "\u670d\u52a1\u5668\u914d\u7f6e {0} \u90e8\u5206\u5df2\u66f4\u65b0", + "MessageApplicationUpdated": "Emby \u670d\u52a1\u5668\u5df2\u66f4\u65b0", + "FailedLoginAttemptWithUserName": "\u6765\u81ea {0} \u7684\u5931\u8d25\u767b\u5165", + "AuthenticationSucceededWithUserName": "{0} \u6210\u529f\u9a8c\u8bc1", + "UserOfflineFromDevice": "{0} \u5df2\u4ece {1} \u65ad\u5f00", + "DeviceOfflineWithName": "{0} \u5df2\u65ad\u5f00", + "UserStartedPlayingItemWithValues": "{0} \u5df2\u5f00\u59cb\u64ad\u653e {1}", + "UserStoppedPlayingItemWithValues": "{0} \u5df2\u505c\u6b62\u64ad\u653e {1}", "NotificationOptionPluginError": "\u63d2\u4ef6\u5931\u8d25", "NotificationOptionApplicationUpdateAvailable": "\u6709\u53ef\u7528\u7684\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0", "NotificationOptionApplicationUpdateInstalled": "\u5e94\u7528\u7a0b\u5e8f\u66f4\u65b0\u5df2\u5b89\u88c5", @@ -40,139 +71,25 @@ "NotificationOptionVideoPlayback": "\u89c6\u9891\u5f00\u59cb\u64ad\u653e", "NotificationOptionAudioPlayback": "\u97f3\u9891\u5f00\u59cb\u64ad\u653e", "NotificationOptionGamePlayback": "\u6e38\u620f\u5f00\u59cb", - "NotificationOptionVideoPlaybackStopped": "\u89c6\u9891\u64ad\u653e\u505c\u6b62", - "NotificationOptionAudioPlaybackStopped": "\u97f3\u9891\u64ad\u653e\u505c\u6b62", + "NotificationOptionVideoPlaybackStopped": "\u89c6\u9891\u64ad\u653e\u5df2\u505c\u6b62", + "NotificationOptionAudioPlaybackStopped": "\u97f3\u9891\u64ad\u653e\u5df2\u505c\u6b62", "NotificationOptionGamePlaybackStopped": "\u6e38\u620f\u505c\u6b62", "NotificationOptionTaskFailed": "\u8ba1\u5212\u4efb\u52a1\u5931\u8d25", "NotificationOptionInstallationFailed": "\u5b89\u88c5\u5931\u8d25", - "NotificationOptionNewLibraryContent": "\u6dfb\u52a0\u65b0\u5185\u5bb9", - "NotificationOptionNewLibraryContentMultiple": "\u65b0\u7684\u5185\u5bb9\u52a0\u5165\uff08\u591a\u4e2a\uff09", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "\u9700\u8981\u91cd\u65b0\u542f\u52a8\u670d\u52a1\u5668", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "\u7535\u5f71", - "ViewTypeTvShows": "\u7535\u89c6", - "ViewTypeGames": "\u6e38\u620f", - "ViewTypeMusic": "\u97f3\u4e50", - "ViewTypeMusicGenres": "\u98ce\u683c", - "ViewTypeMusicArtists": "\u827a\u672f\u5bb6", - "ViewTypeBoxSets": "\u5408\u96c6", - "ViewTypeChannels": "\u9891\u9053", - "ViewTypeLiveTV": "\u7535\u89c6\u76f4\u64ad", - "ViewTypeLiveTvNowPlaying": "\u73b0\u5728\u64ad\u653e", - "ViewTypeLatestGames": "\u6700\u65b0\u6e38\u620f", - "ViewTypeRecentlyPlayedGames": "\u6700\u8fd1\u64ad\u653e", - "ViewTypeGameFavorites": "\u6211\u7684\u6700\u7231", - "ViewTypeGameSystems": "\u6e38\u620f\u7cfb\u7edf", - "ViewTypeGameGenres": "\u98ce\u683c", - "ViewTypeTvResume": "\u6062\u590d\u64ad\u653e", - "ViewTypeTvNextUp": "\u4e0b\u4e00\u4e2a", - "ViewTypeTvLatest": "\u6700\u65b0", - "ViewTypeTvShowSeries": "\u7535\u89c6\u5267", - "ViewTypeTvGenres": "\u98ce\u683c", - "ViewTypeTvFavoriteSeries": "\u6700\u559c\u6b22\u7684\u7535\u89c6\u5267", - "ViewTypeTvFavoriteEpisodes": "\u6700\u559c\u6b22\u7684\u5267\u96c6", - "ViewTypeMovieResume": "\u6062\u590d\u64ad\u653e", - "ViewTypeMovieLatest": "\u6700\u65b0", - "ViewTypeMovieMovies": "\u7535\u5f71", - "ViewTypeMovieCollections": "\u5408\u96c6", - "ViewTypeMovieFavorites": "\u6536\u85cf\u5939", - "ViewTypeMovieGenres": "\u98ce\u683c", - "ViewTypeMusicLatest": "\u6700\u65b0", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "\u4e13\u8f91", - "ViewTypeMusicAlbumArtists": "\u4e13\u8f91\u827a\u672f\u5bb6", - "HeaderOtherDisplaySettings": "\u663e\u793a\u8bbe\u7f6e", - "ViewTypeMusicSongs": "\u6b4c\u66f2", - "ViewTypeMusicFavorites": "\u6211\u7684\u6700\u7231", - "ViewTypeMusicFavoriteAlbums": "\u6700\u7231\u7684\u4e13\u8f91", - "ViewTypeMusicFavoriteArtists": "\u6700\u7231\u7684\u827a\u672f\u5bb6", - "ViewTypeMusicFavoriteSongs": "\u6700\u7231\u7684\u6b4c\u66f2", - "ViewTypeFolders": "\u6587\u4ef6\u5939", - "ViewTypeLiveTvRecordingGroups": "\u5f55\u5236", - "ViewTypeLiveTvChannels": "\u9891\u9053", - "ScheduledTaskFailedWithName": "{0} \u5931\u8d25", - "LabelRunningTimeValue": "\u8fd0\u884c\u65f6\u95f4\uff1a {0}", - "ScheduledTaskStartedWithName": "{0} \u5f00\u59cb", - "VersionNumber": "\u7248\u672c {0}", - "PluginInstalledWithName": "{0} \u5df2\u5b89\u88c5", - "PluginUpdatedWithName": "{0} \u5df2\u66f4\u65b0", - "PluginUninstalledWithName": "{0} \u5df2\u5378\u8f7d", - "ItemAddedWithName": "{0} \u5df2\u6dfb\u52a0\u5230\u5a92\u4f53\u5e93", - "ItemRemovedWithName": "{0} \u5df2\u4ece\u5a92\u4f53\u5e93\u4e2d\u79fb\u9664", - "LabelIpAddressValue": "Ip \u5730\u5740\uff1a {0}", - "DeviceOnlineWithName": "{0} \u5df2\u8fde\u63a5", - "UserOnlineFromDevice": "{0} \u5728\u7ebf\uff0c\u6765\u81ea {1}", - "ProviderValue": "\u63d0\u4f9b\u8005\uff1a {0}", - "SubtitlesDownloadedForItem": "\u5df2\u4e3a {0} \u4e0b\u8f7d\u4e86\u5b57\u5e55", - "UserConfigurationUpdatedWithName": "\u7528\u6237\u914d\u7f6e\u5df2\u66f4\u65b0\u4e3a {0}", - "UserCreatedWithName": "\u7528\u6237 {0} \u5df2\u88ab\u521b\u5efa", - "UserPasswordChangedWithName": "\u5df2\u4e3a\u7528\u6237 {0} \u66f4\u6539\u5bc6\u7801", - "UserDeletedWithName": "\u7528\u6237 {0} \u5df2\u88ab\u5220\u9664", - "MessageServerConfigurationUpdated": "\u670d\u52a1\u5668\u914d\u7f6e\u5df2\u66f4\u65b0", - "MessageNamedServerConfigurationUpdatedWithValue": "\u670d\u52a1\u5668\u914d\u7f6e {0} \u90e8\u5206\u5df2\u66f4\u65b0", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "\u5931\u8d25\u7684\u767b\u5f55\u5c1d\u8bd5\uff0c\u6765\u81ea {0}", - "AuthenticationSucceededWithUserName": "{0} \u6210\u529f\u88ab\u6388\u6743", - "DeviceOfflineWithName": "{0} \u5df2\u65ad\u5f00\u8fde\u63a5", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} \u5df2\u4ece {1} \u65ad\u5f00\u8fde\u63a5", - "UserStartedPlayingItemWithValues": "{0} \u5f00\u59cb\u64ad\u653e {1}", - "UserStoppedPlayingItemWithValues": "{0} \u505c\u6b62\u64ad\u653e {1}", + "NotificationOptionNewLibraryContent": "\u5df2\u6dfb\u52a0\u65b0\u5185\u5bb9", + "NotificationOptionCameraImageUploaded": "\u76f8\u673a\u56fe\u7247\u5df2\u4e0a\u4f20", + "NotificationOptionUserLockedOut": "\u7528\u6237\u5df2\u9501\u5b9a", + "NotificationOptionServerRestartRequired": "\u670d\u52a1\u5668\u9700\u8981\u91cd\u542f", + "UserLockedOutWithName": "\u7528\u6237 {0} \u5df2\u88ab\u9501\u5b9a", "SubtitleDownloadFailureForItem": "\u4e3a {0} \u4e0b\u8f7d\u5b57\u5e55\u5931\u8d25", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "\u7528\u6237", - "HeaderName": "\u540d\u5b57", - "HeaderDate": "\u65e5\u671f", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "\u53d1\u884c\u65e5\u671f", - "HeaderRuntime": "\u64ad\u653e\u65f6\u95f4", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "\u5b63", - "HeaderSeasonNumber": "\u591a\u5c11\u5b63", - "HeaderSeries": "Series:", - "HeaderNetwork": "\u7f51\u7edc", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "\u516c\u4f17\u8bc4\u5206", - "HeaderTrailers": "\u9884\u544a\u7247", - "HeaderSpecials": "\u7279\u96c6", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "\u4e13\u8f91", - "HeaderDisc": "\u5149\u76d8", - "HeaderTrack": "\u97f3\u8f68", - "HeaderAudio": "\u97f3\u9891", - "HeaderVideo": "\u89c6\u9891", - "HeaderEmbeddedImage": "\u5d4c\u5165\u5f0f\u56fe\u50cf", - "HeaderResolution": "\u5206\u8fa8\u7387", - "HeaderSubtitles": "\u5b57\u5e55", - "HeaderGenres": "\u98ce\u683c", - "HeaderCountries": "\u56fd\u5bb6", - "HeaderStatus": "\u72b6\u6001", - "HeaderTracks": "\u97f3\u8f68", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "\u5de5\u4f5c\u5ba4", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "\u5bb6\u957f\u5206\u7ea7", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "Sync": "\u540c\u6b65", + "User": "\u7528\u6237", + "System": "\u7cfb\u7edf", + "Application": "\u5e94\u7528\u7a0b\u5e8f", + "Plugin": "\u63d2\u4ef6", + "LabelExit": "\u9000\u51fa", + "LabelVisitCommunity": "\u8bbf\u95ee\u793e\u533a", + "LabelBrowseLibrary": "\u6d4f\u89c8\u5a92\u4f53\u5e93", + "LabelConfigureServer": "\u914d\u7f6e Emby", + "LabelRestartServer": "\u91cd\u542f\u670d\u52a1\u5668" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/zh-HK.json b/Emby.Server.Implementations/Localization/Core/zh-HK.json index a70e7a0035..4cd9268620 100644 --- a/Emby.Server.Implementations/Localization/Core/zh-HK.json +++ b/Emby.Server.Implementations/Localization/Core/zh-HK.json @@ -1,36 +1,67 @@ { - "DbUpgradeMessage": "Please wait while your Emby Server database is upgraded. {0}% complete.", + "Latest": "Latest", + "ValueSpecialEpisodeName": "Special - {0}", + "Inherit": "Inherit", + "Books": "Books", + "Music": "Music", + "Games": "Games", + "Photos": "Photos", + "MixedContent": "Mixed content", + "MusicVideos": "Music videos", + "HomeVideos": "Home videos", + "Playlists": "Playlists", + "HeaderRecordingGroups": "Recording Groups", + "HeaderContinueWatching": "Continue Watching", + "HeaderFavoriteArtists": "Favorite Artists", + "HeaderFavoriteSongs": "Favorite Songs", + "HeaderAlbumArtists": "Album Artists", + "HeaderFavoriteAlbums": "Favorite Albums", + "HeaderFavoriteEpisodes": "Favorite Episodes", + "HeaderFavoriteShows": "Favorite Shows", + "HeaderNextUp": "Next Up", + "Favorites": "Favorites", + "Collections": "Collections", + "Channels": "Channels", + "Movies": "Movies", + "Albums": "Albums", + "Artists": "Artists", + "Folders": "Folders", + "Songs": "Songs", + "Shows": "Shows", + "Genres": "Genres", + "NameSeasonNumber": "Season {0}", "AppDeviceValues": "App: {0}, Device: {1}", "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "\u6df7\u5408\u5167\u5bb9", - "FolderTypeMovies": "\u96fb\u5f71", - "FolderTypeMusic": "\u97f3\u6a02", - "FolderTypeAdultVideos": "\u6210\u4eba\u5f71\u7247", - "FolderTypePhotos": "\u76f8\u7247", - "FolderTypeMusicVideos": "MV", - "FolderTypeHomeVideos": "\u500b\u4eba\u5f71\u7247", - "FolderTypeGames": "\u904a\u6232", - "FolderTypeBooks": "\u66f8\u85c9", - "FolderTypeTvShows": "\u96fb\u8996\u7bc0\u76ee", - "FolderTypeInherit": "\u7e7c\u627f", - "HeaderCastCrew": "\u6f14\u54e1\u9663\u5bb9", - "HeaderPeople": "\u4eba\u7269", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "\u5287\u96c6\u5b63\u5ea6 {0}", - "LabelExit": "\u96e2\u958b", - "LabelVisitCommunity": "\u8a2a\u554f\u8a0e\u8ad6\u5340", - "LabelGithub": "Github", - "LabelApiDocumentation": "Api \u6587\u4ef6", - "LabelDeveloperResources": "\u958b\u767c\u8005\u8cc7\u6e90", - "LabelBrowseLibrary": "\u700f\u89bd\u8cc7\u6599\u5eab", - "LabelConfigureServer": "\u8a2d\u7f6e Emby", - "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u4f3a\u670d\u5668", - "CategorySync": "\u540c\u6b65", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", + "HeaderLiveTV": "Live TV", + "ChapterNameValue": "Chapter {0}", + "ScheduledTaskFailedWithName": "{0} failed", + "LabelRunningTimeValue": "Running time: {0}", + "ScheduledTaskStartedWithName": "{0} started", + "VersionNumber": "\u7248\u672c{0}", + "PluginInstalledWithName": "{0} was installed", + "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly.", + "PluginUpdatedWithName": "{0} was updated", + "PluginUninstalledWithName": "{0} was uninstalled", + "ItemAddedWithName": "{0} was added to the library", + "ItemRemovedWithName": "{0} was removed from the library", + "LabelIpAddressValue": "Ip address: {0}", + "DeviceOnlineWithName": "{0} is connected", + "UserOnlineFromDevice": "{0} is online from {1}", + "ProviderValue": "Provider: {0}", + "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", + "UserCreatedWithName": "User {0} has been created", + "UserPasswordChangedWithName": "Password has been changed for user {0}", + "UserDeletedWithName": "User {0} has been deleted", + "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", + "MessageServerConfigurationUpdated": "Server configuration has been updated", + "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", + "MessageApplicationUpdated": "Emby Server has been updated", + "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", + "AuthenticationSucceededWithUserName": "{0} successfully authenticated", + "UserOfflineFromDevice": "{0} has disconnected from {1}", + "DeviceOfflineWithName": "{0} has disconnected", + "UserStartedPlayingItemWithValues": "{0} has started playing {1}", + "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", "NotificationOptionPluginError": "Plugin failure", "NotificationOptionApplicationUpdateAvailable": "Application update available", "NotificationOptionApplicationUpdateInstalled": "Application update installed", @@ -46,133 +77,19 @@ "NotificationOptionTaskFailed": "Scheduled task failure", "NotificationOptionInstallationFailed": "Installation failure", "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", "NotificationOptionCameraImageUploaded": "Camera image uploaded", "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "\u9700\u8981\u91cd\u65b0\u555f\u52d5", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "\u904a\u6232", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "\u85cf\u54c1", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "Live TV", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "\u6700\u8fd1\u904a\u6232", - "ViewTypeRecentlyPlayedGames": "\u6700\u8fd1\u64ad\u653e", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "\u904a\u6232\u7cfb\u7d71", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "\u96fb\u8996\u5287", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "\u6211\u7684\u6700\u611b\u96fb\u8996\u5287", - "ViewTypeTvFavoriteEpisodes": "\u6211\u7684\u6700\u611b\u5287\u96c6", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "\u85cf\u54c1", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "\u6b4c\u66f2", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "\u6211\u7684\u6700\u611b\u6b4c\u66f2", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "\u7248\u672c {0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "\u5df2\u7d93\u70ba {0} \u4e0b\u8f09\u4e86\u5b57\u5e55", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", + "NotificationOptionServerRestartRequired": "Server restart required", "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "\u70ba {0} \u4e0b\u8f09\u5b57\u5e55\u5931\u6557", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "\u540d\u7a31", - "HeaderDate": "\u65e5\u671f", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "\u5287\u96c6\u5b63\u5ea6", - "HeaderSeasonNumber": "\u5287\u96c6\u5b63\u5ea6\u6578\u76ee", - "HeaderSeries": "\u96fb\u8996\u5287\uff1a", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "\u904a\u6232\u7cfb\u7d71", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "\u97f3\u8a0a", - "HeaderVideo": "\u5f71\u7247", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "\u5b57\u5e55", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "\u72c0\u614b", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "\u6b4c\u624b", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "\u7279\u7d04\u660e\u661f", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." + "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", + "Sync": "Sync", + "User": "User", + "System": "System", + "Application": "Application", + "Plugin": "Plugin", + "LabelExit": "Exit", + "LabelVisitCommunity": "\u8a2a\u554f\u8a0e\u8ad6\u5340", + "LabelBrowseLibrary": "Browse Library", + "LabelConfigureServer": "Configure Emby", + "LabelRestartServer": "Restart Server" } \ No newline at end of file diff --git a/Emby.Server.Implementations/Localization/Core/zh-TW.json b/Emby.Server.Implementations/Localization/Core/zh-TW.json deleted file mode 100644 index b711aab1f2..0000000000 --- a/Emby.Server.Implementations/Localization/Core/zh-TW.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "DbUpgradeMessage": "\u8acb\u7a0d\u5019\uff0cEmby\u4f3a\u670d\u5668\u8cc7\u6599\u5eab\u6b63\u5728\u66f4\u65b0...\uff08\u5df2\u5b8c\u6210{0}%\uff09", - "AppDeviceValues": "App: {0}, Device: {1}", - "UserDownloadingItemWithValues": "{0} is downloading {1}", - "FolderTypeMixed": "Mixed content", - "FolderTypeMovies": "Movies", - "FolderTypeMusic": "Music", - "FolderTypeAdultVideos": "Adult videos", - "FolderTypePhotos": "Photos", - "FolderTypeMusicVideos": "Music videos", - "FolderTypeHomeVideos": "Home videos", - "FolderTypeGames": "Games", - "FolderTypeBooks": "Books", - "FolderTypeTvShows": "TV", - "FolderTypeInherit": "Inherit", - "HeaderCastCrew": "\u62cd\u651d\u4eba\u54e1\u53ca\u6f14\u54e1", - "HeaderPeople": "People", - "ValueSpecialEpisodeName": "Special - {0}", - "LabelChapterName": "Chapter {0}", - "NameSeasonNumber": "Season {0}", - "LabelExit": "\u96e2\u958b", - "LabelVisitCommunity": "\u8a2a\u554f\u793e\u7fa4", - "LabelGithub": "GitHub", - "LabelApiDocumentation": "API\u8aaa\u660e\u6587\u4ef6", - "LabelDeveloperResources": "\u958b\u767c\u4eba\u54e1\u5c08\u5340", - "LabelBrowseLibrary": "\u700f\u89bd\u5a92\u9ad4\u6ac3", - "LabelConfigureServer": "Emby\u8a2d\u5b9a", - "LabelRestartServer": "\u91cd\u65b0\u555f\u52d5\u4f3a\u670d\u5668", - "CategorySync": "Sync", - "CategoryUser": "User", - "CategorySystem": "System", - "CategoryApplication": "Application", - "CategoryPlugin": "Plugin", - "NotificationOptionPluginError": "Plugin failure", - "NotificationOptionApplicationUpdateAvailable": "Application update available", - "NotificationOptionApplicationUpdateInstalled": "Application update installed", - "NotificationOptionPluginUpdateInstalled": "Plugin update installed", - "NotificationOptionPluginInstalled": "Plugin installed", - "NotificationOptionPluginUninstalled": "Plugin uninstalled", - "NotificationOptionVideoPlayback": "Video playback started", - "NotificationOptionAudioPlayback": "Audio playback started", - "NotificationOptionGamePlayback": "Game playback started", - "NotificationOptionVideoPlaybackStopped": "Video playback stopped", - "NotificationOptionAudioPlaybackStopped": "Audio playback stopped", - "NotificationOptionGamePlaybackStopped": "Game playback stopped", - "NotificationOptionTaskFailed": "Scheduled task failure", - "NotificationOptionInstallationFailed": "Installation failure", - "NotificationOptionNewLibraryContent": "New content added", - "NotificationOptionNewLibraryContentMultiple": "New content added (multiple)", - "NotificationOptionCameraImageUploaded": "Camera image uploaded", - "NotificationOptionUserLockedOut": "User locked out", - "NotificationOptionServerRestartRequired": "Server restart required", - "ViewTypePlaylists": "Playlists", - "ViewTypeMovies": "Movies", - "ViewTypeTvShows": "TV", - "ViewTypeGames": "Games", - "ViewTypeMusic": "Music", - "ViewTypeMusicGenres": "Genres", - "ViewTypeMusicArtists": "Artists", - "ViewTypeBoxSets": "Collections", - "ViewTypeChannels": "Channels", - "ViewTypeLiveTV": "\u96fb\u8996", - "ViewTypeLiveTvNowPlaying": "Now Airing", - "ViewTypeLatestGames": "Latest Games", - "ViewTypeRecentlyPlayedGames": "Recently Played", - "ViewTypeGameFavorites": "Favorites", - "ViewTypeGameSystems": "Game Systems", - "ViewTypeGameGenres": "Genres", - "ViewTypeTvResume": "Resume", - "ViewTypeTvNextUp": "Next Up", - "ViewTypeTvLatest": "Latest", - "ViewTypeTvShowSeries": "Series", - "ViewTypeTvGenres": "Genres", - "ViewTypeTvFavoriteSeries": "Favorite Series", - "ViewTypeTvFavoriteEpisodes": "Favorite Episodes", - "ViewTypeMovieResume": "Resume", - "ViewTypeMovieLatest": "Latest", - "ViewTypeMovieMovies": "Movies", - "ViewTypeMovieCollections": "Collections", - "ViewTypeMovieFavorites": "Favorites", - "ViewTypeMovieGenres": "Genres", - "ViewTypeMusicLatest": "Latest", - "ViewTypeMusicPlaylists": "Playlists", - "ViewTypeMusicAlbums": "Albums", - "ViewTypeMusicAlbumArtists": "Album Artists", - "HeaderOtherDisplaySettings": "Display Settings", - "ViewTypeMusicSongs": "Songs", - "ViewTypeMusicFavorites": "Favorites", - "ViewTypeMusicFavoriteAlbums": "Favorite Albums", - "ViewTypeMusicFavoriteArtists": "Favorite Artists", - "ViewTypeMusicFavoriteSongs": "Favorite Songs", - "ViewTypeFolders": "Folders", - "ViewTypeLiveTvRecordingGroups": "Recordings", - "ViewTypeLiveTvChannels": "Channels", - "ScheduledTaskFailedWithName": "{0} failed", - "LabelRunningTimeValue": "Running time: {0}", - "ScheduledTaskStartedWithName": "{0} started", - "VersionNumber": "\u7248\u672c{0}", - "PluginInstalledWithName": "{0} was installed", - "PluginUpdatedWithName": "{0} was updated", - "PluginUninstalledWithName": "{0} was uninstalled", - "ItemAddedWithName": "{0} was added to the library", - "ItemRemovedWithName": "{0} was removed from the library", - "LabelIpAddressValue": "Ip address: {0}", - "DeviceOnlineWithName": "{0} is connected", - "UserOnlineFromDevice": "{0} is online from {1}", - "ProviderValue": "Provider: {0}", - "SubtitlesDownloadedForItem": "Subtitles downloaded for {0}", - "UserConfigurationUpdatedWithName": "User configuration has been updated for {0}", - "UserCreatedWithName": "User {0} has been created", - "UserPasswordChangedWithName": "Password has been changed for user {0}", - "UserDeletedWithName": "User {0} has been deleted", - "MessageServerConfigurationUpdated": "Server configuration has been updated", - "MessageNamedServerConfigurationUpdatedWithValue": "Server configuration section {0} has been updated", - "MessageApplicationUpdated": "Emby Server has been updated", - "FailedLoginAttemptWithUserName": "Failed login attempt from {0}", - "AuthenticationSucceededWithUserName": "{0} successfully authenticated", - "DeviceOfflineWithName": "{0} has disconnected", - "UserLockedOutWithName": "User {0} has been locked out", - "UserOfflineFromDevice": "{0} has disconnected from {1}", - "UserStartedPlayingItemWithValues": "{0} has started playing {1}", - "UserStoppedPlayingItemWithValues": "{0} has stopped playing {1}", - "SubtitleDownloadFailureForItem": "Subtitles failed to download for {0}", - "HeaderUnidentified": "Unidentified", - "HeaderImagePrimary": "Primary", - "HeaderImageBackdrop": "Backdrop", - "HeaderImageLogo": "Logo", - "HeaderUserPrimaryImage": "User Image", - "HeaderOverview": "Overview", - "HeaderShortOverview": "Short Overview", - "HeaderType": "Type", - "HeaderSeverity": "Severity", - "HeaderUser": "User", - "HeaderName": "Name", - "HeaderDate": "Date", - "HeaderPremiereDate": "Premiere Date", - "HeaderDateAdded": "Date Added", - "HeaderReleaseDate": "Release date", - "HeaderRuntime": "Runtime", - "HeaderPlayCount": "Play Count", - "HeaderSeason": "Season", - "HeaderSeasonNumber": "Season number", - "HeaderSeries": "Series:", - "HeaderNetwork": "Network", - "HeaderYear": "Year:", - "HeaderYears": "Years:", - "HeaderParentalRating": "Parental Rating", - "HeaderCommunityRating": "Community rating", - "HeaderTrailers": "Trailers", - "HeaderSpecials": "Specials", - "HeaderGameSystems": "Game Systems", - "HeaderPlayers": "Players:", - "HeaderAlbumArtists": "Album Artists", - "HeaderAlbums": "Albums", - "HeaderDisc": "Disc", - "HeaderTrack": "Track", - "HeaderAudio": "Audio", - "HeaderVideo": "Video", - "HeaderEmbeddedImage": "Embedded image", - "HeaderResolution": "Resolution", - "HeaderSubtitles": "Subtitles", - "HeaderGenres": "Genres", - "HeaderCountries": "Countries", - "HeaderStatus": "\u72c0\u614b", - "HeaderTracks": "Tracks", - "HeaderMusicArtist": "Music artist", - "HeaderLocked": "Locked", - "HeaderStudios": "Studios", - "HeaderActor": "Actors", - "HeaderComposer": "Composers", - "HeaderDirector": "Directors", - "HeaderGuestStar": "Guest star", - "HeaderProducer": "Producers", - "HeaderWriter": "Writers", - "HeaderParentalRatings": "Parental Ratings", - "HeaderCommunityRatings": "Community ratings", - "StartupEmbyServerIsLoading": "Emby Server is loading. Please try again shortly." -} \ No newline at end of file From 6623fe10ee1f74cafc8fadf8caa531178a0b26fe Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:42:12 -0400 Subject: [PATCH 20/62] update server restart --- MediaBrowser.Server.Mono/MonoAppHost.cs | 2 +- SocketHttpListener/Net/EndPointListener.cs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Server.Mono/MonoAppHost.cs b/MediaBrowser.Server.Mono/MonoAppHost.cs index c94334e893..609497eed9 100644 --- a/MediaBrowser.Server.Mono/MonoAppHost.cs +++ b/MediaBrowser.Server.Mono/MonoAppHost.cs @@ -25,7 +25,7 @@ namespace MediaBrowser.Server.Mono get { // A restart script must be provided - return StartupOptions.ContainsOption("-restartpath") && StartupOptions.ContainsOption("-ffmpeg"); + return StartupOptions.ContainsOption("-restartpath"); } } diff --git a/SocketHttpListener/Net/EndPointListener.cs b/SocketHttpListener/Net/EndPointListener.cs index 2b1479e423..48c0ae7cbc 100644 --- a/SocketHttpListener/Net/EndPointListener.cs +++ b/SocketHttpListener/Net/EndPointListener.cs @@ -93,6 +93,15 @@ namespace SocketHttpListener.Net } } + try + { + sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); + } + catch (SocketException) + { + // This is not supported on all operating systems (qnap) + } + sock.Bind(endpoint); // This is the number TcpListener uses. From 66ad10348fe9383df7b939c2de5a93c044ec351d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:43:11 -0400 Subject: [PATCH 21/62] update translations --- Emby.Dlna/Didl/DidlBuilder.cs | 36 +++++------ .../Channels/ChannelManager.cs | 2 +- .../Library/UserViewManager.cs | 18 +++--- .../Entities/UserViewBuilder.cs | 62 +++++++++---------- .../Library/IUserViewManager.cs | 4 +- .../MediaInfo/FFProbeVideoInfo.cs | 2 +- 6 files changed, 63 insertions(+), 61 deletions(-) diff --git a/Emby.Dlna/Didl/DidlBuilder.cs b/Emby.Dlna/Didl/DidlBuilder.cs index 5e200428a7..c6c213a48b 100644 --- a/Emby.Dlna/Didl/DidlBuilder.cs +++ b/Emby.Dlna/Didl/DidlBuilder.cs @@ -393,75 +393,75 @@ namespace Emby.Dlna.Didl { if (itemStubType.HasValue && itemStubType.Value == StubType.Latest) { - return _localization.GetLocalizedString("ViewTypeMusicLatest"); + return _localization.GetLocalizedString("Latest"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Playlists) { - return _localization.GetLocalizedString("ViewTypeMusicPlaylists"); + return _localization.GetLocalizedString("Playlists"); } if (itemStubType.HasValue && itemStubType.Value == StubType.AlbumArtists) { - return _localization.GetLocalizedString("ViewTypeMusicAlbumArtists"); + return _localization.GetLocalizedString("HeaderAlbumArtists"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Albums) { - return _localization.GetLocalizedString("ViewTypeMusicAlbums"); + return _localization.GetLocalizedString("Albums"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Artists) { - return _localization.GetLocalizedString("ViewTypeMusicArtists"); + return _localization.GetLocalizedString("Artists"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Songs) { - return _localization.GetLocalizedString("ViewTypeMusicSongs"); + return _localization.GetLocalizedString("Songs"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Genres) { - return _localization.GetLocalizedString("ViewTypeTvGenres"); + return _localization.GetLocalizedString("Genres"); } if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteAlbums) { - return _localization.GetLocalizedString("ViewTypeMusicFavoriteAlbums"); + return _localization.GetLocalizedString("HeaderFavoriteAlbums"); } if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteArtists) { - return _localization.GetLocalizedString("ViewTypeMusicFavoriteArtists"); + return _localization.GetLocalizedString("HeaderFavoriteArtists"); } if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSongs) { - return _localization.GetLocalizedString("ViewTypeMusicFavoriteSongs"); + return _localization.GetLocalizedString("HeaderFavoriteSongs"); } if (itemStubType.HasValue && itemStubType.Value == StubType.ContinueWatching) { - return _localization.GetLocalizedString("ViewTypeMovieResume"); + return _localization.GetLocalizedString("HeaderContinueWatching"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Movies) { - return _localization.GetLocalizedString("ViewTypeMovieMovies"); + return _localization.GetLocalizedString("Movies"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Collections) { - return _localization.GetLocalizedString("ViewTypeMovieCollections"); + return _localization.GetLocalizedString("Collections"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Favorites) { - return _localization.GetLocalizedString("ViewTypeMovieFavorites"); + return _localization.GetLocalizedString("Favorites"); } if (itemStubType.HasValue && itemStubType.Value == StubType.NextUp) { - return _localization.GetLocalizedString("ViewTypeTvNextUp"); + return _localization.GetLocalizedString("HeaderNextUp"); } if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteSeries) { - return _localization.GetLocalizedString("ViewTypeTvFavoriteSeries"); + return _localization.GetLocalizedString("HeaderFavoriteShows"); } if (itemStubType.HasValue && itemStubType.Value == StubType.FavoriteEpisodes) { - return _localization.GetLocalizedString("ViewTypeTvFavoriteEpisodes"); + return _localization.GetLocalizedString("HeaderFavoriteEpisodes"); } if (itemStubType.HasValue && itemStubType.Value == StubType.Series) { - return _localization.GetLocalizedString("ViewTypeTvShowSeries"); + return _localization.GetLocalizedString("Shows"); } var episode = item as Episode; diff --git a/Emby.Server.Implementations/Channels/ChannelManager.cs b/Emby.Server.Implementations/Channels/ChannelManager.cs index 0036d19708..c42f22804b 100644 --- a/Emby.Server.Implementations/Channels/ChannelManager.cs +++ b/Emby.Server.Implementations/Channels/ChannelManager.cs @@ -1547,7 +1547,7 @@ namespace Emby.Server.Implementations.Channels public Folder GetInternalChannelFolder(CancellationToken cancellationToken) { - var name = _localization.GetLocalizedString("ViewTypeChannels"); + var name = _localization.GetLocalizedString("Channels"); return _libraryManager.GetNamedView(name, "channels", "zz_" + name, cancellationToken); } diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs index 4ee0f553f3..ddab3caa56 100644 --- a/Emby.Server.Implementations/Library/UserViewManager.cs +++ b/Emby.Server.Implementations/Library/UserViewManager.cs @@ -95,13 +95,15 @@ namespace Emby.Server.Implementations.Library if (parents.Count > 0) { - list.Add(GetUserView(parents, viewType, string.Empty, user, query.PresetViews, cancellationToken)); + var localizationKey = viewType.Replace("Tv", string.Empty); + + list.Add(GetUserView(parents, viewType, localizationKey, string.Empty, user, query.PresetViews, cancellationToken)); } } if (_config.Configuration.EnableFolderView) { - var name = _localizationManager.GetLocalizedString("ViewType" + CollectionType.Folders); + var name = _localizationManager.GetLocalizedString("Folders"); list.Add(_libraryManager.GetNamedView(name, CollectionType.Folders, string.Empty, cancellationToken)); } @@ -158,21 +160,21 @@ namespace Emby.Server.Implementations.Library .ToArray(); } - public UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken) + public UserView GetUserSubViewWithName(string name, string parentId, string type, string sortName, CancellationToken cancellationToken) { var uniqueId = parentId + "subview" + type; return _libraryManager.GetNamedView(name, parentId, type, sortName, uniqueId, cancellationToken); } - public UserView GetUserSubView(string parentId, string type, string sortName, CancellationToken cancellationToken) + public UserView GetUserSubView(string parentId, string type, string localizationKey, string sortName, CancellationToken cancellationToken) { - var name = _localizationManager.GetLocalizedString("ViewType" + type); + var name = _localizationManager.GetLocalizedString(localizationKey); - return GetUserSubView(name, parentId, type, sortName, cancellationToken); + return GetUserSubViewWithName(name, parentId, type, sortName, cancellationToken); } - private Folder GetUserView(List parents, string viewType, string sortName, User user, string[] presetViews, CancellationToken cancellationToken) + private Folder GetUserView(List parents, string viewType, string localizationKey, string sortName, User user, string[] presetViews, CancellationToken cancellationToken) { if (parents.Count == 1 && parents.All(i => string.Equals(i.CollectionType, viewType, StringComparison.OrdinalIgnoreCase))) { @@ -184,7 +186,7 @@ namespace Emby.Server.Implementations.Library return GetUserView((Folder)parents[0], viewType, string.Empty, cancellationToken); } - var name = _localizationManager.GetLocalizedString("ViewType" + viewType); + var name = _localizationManager.GetLocalizedString(localizationKey); return _libraryManager.GetNamedView(user, name, viewType, sortName, cancellationToken); } diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs index acc452fbc3..97b96127a2 100644 --- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs +++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs @@ -262,14 +262,14 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(GetUserView(SpecialFolder.MusicLatest, "0", parent)); - list.Add(GetUserView(SpecialFolder.MusicPlaylists, "1", parent)); - list.Add(GetUserView(SpecialFolder.MusicAlbums, "2", parent)); - list.Add(GetUserView(SpecialFolder.MusicAlbumArtists, "3", parent)); - list.Add(GetUserView(SpecialFolder.MusicArtists, "4", parent)); - list.Add(GetUserView(SpecialFolder.MusicSongs, "5", parent)); - list.Add(GetUserView(SpecialFolder.MusicGenres, "6", parent)); - list.Add(GetUserView(SpecialFolder.MusicFavorites, "7", parent)); + list.Add(GetUserView(SpecialFolder.MusicLatest, "Latest", "0", parent)); + list.Add(GetUserView(SpecialFolder.MusicPlaylists, "Playlists", "1", parent)); + list.Add(GetUserView(SpecialFolder.MusicAlbums, "Albums", "2", parent)); + list.Add(GetUserView(SpecialFolder.MusicAlbumArtists, "HeaderAlbumArtists", "3", parent)); + list.Add(GetUserView(SpecialFolder.MusicArtists, "Artists", "4", parent)); + list.Add(GetUserView(SpecialFolder.MusicSongs, "Songs", "5", parent)); + list.Add(GetUserView(SpecialFolder.MusicGenres, "Genres", "6", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavorites, "Favorites", "7", parent)); return GetResult(list, parent, query); } @@ -278,9 +278,9 @@ namespace MediaBrowser.Controller.Entities { var list = new List(); - list.Add(GetUserView(SpecialFolder.MusicFavoriteAlbums, "0", parent)); - list.Add(GetUserView(SpecialFolder.MusicFavoriteArtists, "1", parent)); - list.Add(GetUserView(SpecialFolder.MusicFavoriteSongs, "2", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteAlbums, "HeaderFavoriteAlbums", "0", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteArtists, "HeaderFavoriteArtists", "1", parent)); + list.Add(GetUserView(SpecialFolder.MusicFavoriteSongs, "HeaderFavoriteSongs", "2", parent)); return GetResult(list, parent, query); } @@ -443,12 +443,12 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(GetUserView(SpecialFolder.MovieResume, "0", parent)); - list.Add(GetUserView(SpecialFolder.MovieLatest, "1", parent)); - list.Add(GetUserView(SpecialFolder.MovieMovies, "2", parent)); - list.Add(GetUserView(SpecialFolder.MovieCollections, "3", parent)); - list.Add(GetUserView(SpecialFolder.MovieFavorites, "4", parent)); - list.Add(GetUserView(SpecialFolder.MovieGenres, "5", parent)); + list.Add(GetUserView(SpecialFolder.MovieResume, "HeaderContinueWatching", "0", parent)); + list.Add(GetUserView(SpecialFolder.MovieLatest, "Latest", "1", parent)); + list.Add(GetUserView(SpecialFolder.MovieMovies, "Movies", "2", parent)); + list.Add(GetUserView(SpecialFolder.MovieCollections, "Collections", "3", parent)); + list.Add(GetUserView(SpecialFolder.MovieFavorites, "Favorites", "4", parent)); + list.Add(GetUserView(SpecialFolder.MovieGenres, "Genres", "5", parent)); return GetResult(list, parent, query); } @@ -564,7 +564,7 @@ namespace MediaBrowser.Controller.Entities }) .Where(i => i != null) - .Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent)); + .Select(i => GetUserViewWithName(i.Name, SpecialFolder.MovieGenre, i.SortName, parent)); return GetResult(genres, parent, query); } @@ -613,13 +613,13 @@ namespace MediaBrowser.Controller.Entities var list = new List(); - list.Add(GetUserView(SpecialFolder.TvResume, "0", parent)); - list.Add(GetUserView(SpecialFolder.TvNextUp, "1", parent)); - list.Add(GetUserView(SpecialFolder.TvLatest, "2", parent)); - list.Add(GetUserView(SpecialFolder.TvShowSeries, "3", parent)); - list.Add(GetUserView(SpecialFolder.TvFavoriteSeries, "4", parent)); - list.Add(GetUserView(SpecialFolder.TvFavoriteEpisodes, "5", parent)); - list.Add(GetUserView(SpecialFolder.TvGenres, "6", parent)); + list.Add(GetUserView(SpecialFolder.TvResume, "HeaderContinueWatching", "0", parent)); + list.Add(GetUserView(SpecialFolder.TvNextUp, "HeaderNextUp", "1", parent)); + list.Add(GetUserView(SpecialFolder.TvLatest, "Latest", "2", parent)); + list.Add(GetUserView(SpecialFolder.TvShowSeries, "Shows", "3", parent)); + list.Add(GetUserView(SpecialFolder.TvFavoriteSeries, "HeaderFavoriteShows", "4", parent)); + list.Add(GetUserView(SpecialFolder.TvFavoriteEpisodes, "HeaderFavoriteEpisodes", "5", parent)); + list.Add(GetUserView(SpecialFolder.TvGenres, "Genres", "6", parent)); return GetResult(list, parent, query); } @@ -703,7 +703,7 @@ namespace MediaBrowser.Controller.Entities }) .Where(i => i != null) - .Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent)); + .Select(i => GetUserViewWithName(i.Name, SpecialFolder.TvGenre, i.SortName, parent)); return GetResult(genres, parent, query); } @@ -1736,20 +1736,20 @@ namespace MediaBrowser.Controller.Entities var list = new List(); //list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false)); - list.Add(GetUserView(SpecialFolder.LiveTvChannels, string.Empty, user.RootFolder)); - list.Add(GetUserView(SpecialFolder.LiveTvRecordingGroups, string.Empty, user.RootFolder)); + list.Add(GetUserView(SpecialFolder.LiveTvChannels, "Channels", string.Empty, user.RootFolder)); + list.Add(GetUserView(SpecialFolder.LiveTvRecordingGroups, "HeaderRecordingGroups", string.Empty, user.RootFolder)); return GetResult(list, queryParent, query); } - private UserView GetUserView(string name, string type, string sortName, BaseItem parent) + private UserView GetUserViewWithName(string name, string type, string sortName, BaseItem parent) { return _userViewManager.GetUserSubView(name, parent.Id.ToString("N"), type, sortName, CancellationToken.None); } - private UserView GetUserView(string type, string sortName, BaseItem parent) + private UserView GetUserView(string type, string localizationKey, string sortName, BaseItem parent) { - return _userViewManager.GetUserSubView(parent.Id.ToString("N"), type, sortName, CancellationToken.None); + return _userViewManager.GetUserSubView(parent.Id.ToString("N"), type, localizationKey, sortName, CancellationToken.None); } public static IEnumerable FilterForAdjacency(List list, string adjacentToId) diff --git a/MediaBrowser.Controller/Library/IUserViewManager.cs b/MediaBrowser.Controller/Library/IUserViewManager.cs index ac37dc869c..baecdd748f 100644 --- a/MediaBrowser.Controller/Library/IUserViewManager.cs +++ b/MediaBrowser.Controller/Library/IUserViewManager.cs @@ -13,9 +13,9 @@ namespace MediaBrowser.Controller.Library { Task GetUserViews(UserViewQuery query, CancellationToken cancellationToken); - UserView GetUserSubView(string name, string parentId, string type, string sortName, CancellationToken cancellationToken); + UserView GetUserSubViewWithName(string name, string parentId, string type, string sortName, CancellationToken cancellationToken); - UserView GetUserSubView(string category, string type, string sortName, CancellationToken cancellationToken); + UserView GetUserSubView(string category, string type, string localizationKey, string sortName, CancellationToken cancellationToken); List>> GetLatestItems(LatestItemsQuery request, DtoOptions options); } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs index 64a485bc20..a6a363ffdf 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs @@ -248,7 +248,7 @@ namespace MediaBrowser.Providers.MediaInfo if (string.IsNullOrWhiteSpace(chapter.Name) || TimeSpan.TryParse(chapter.Name, out time)) { - chapter.Name = string.Format(_localization.GetLocalizedString("LabelChapterName"), index.ToString(CultureInfo.InvariantCulture)); + chapter.Name = string.Format(_localization.GetLocalizedString("ChapterNameValue"), index.ToString(CultureInfo.InvariantCulture)); } index++; } From bc656edf4ff5cc60b246b6d59f7483610677ce69 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:44:20 -0400 Subject: [PATCH 22/62] update resolved video titles --- .../Emby.Server.Implementations.csproj | 2 -- .../Library/Resolvers/Movies/MovieResolver.cs | 28 ++++++++++--------- .../Notifications/CoreNotificationTypes.cs | 12 ++++---- MediaBrowser.Api/ItemUpdateService.cs | 20 ++++++------- MediaBrowser.Api/LiveTv/LiveTvService.cs | 13 +++++---- .../LiveTv/ILiveTvManager.cs | 10 ------- .../MediaEncoding/EncodingJobInfo.cs | 5 ---- MediaBrowser.Model/Dto/MediaSourceInfo.cs | 1 - MediaBrowser.Model/LiveTv/LiveTvOptions.cs | 1 - 9 files changed, 38 insertions(+), 54 deletions(-) diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index b3fdead849..4f5471bc31 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -681,11 +681,9 @@ - - diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 82f42c7455..fc5cab0a0b 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -69,13 +69,13 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies if (string.Equals(collectionType, CollectionType.MusicVideos, StringComparison.OrdinalIgnoreCase)) { - return ResolveVideos(parent, files, directoryService, true, collectionType); + return ResolveVideos(parent, files, directoryService, true, collectionType, false); } if (string.Equals(collectionType, CollectionType.HomeVideos, StringComparison.OrdinalIgnoreCase) || string.Equals(collectionType, CollectionType.Photos, StringComparison.OrdinalIgnoreCase)) { - return ResolveVideos /// /// Movie. - private T FindMovie(string path, Folder parent, List fileSystemEntries, IDirectoryService directoryService, string collectionType, bool allowFilesAsFolders) + private T FindMovie(string path, Folder parent, List fileSystemEntries, IDirectoryService directoryService, string collectionType, bool allowFilesAsFolders, bool parseName) where T : Video, new() { var multiDiscFolders = new List(); @@ -413,7 +415,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies !string.Equals(collectionType, CollectionType.Photos) && !string.Equals(collectionType, CollectionType.MusicVideos); - var result = ResolveVideos(parent, fileSystemEntries, directoryService, supportsMultiVersion, collectionType) ?? + var result = ResolveVideos(parent, fileSystemEntries, directoryService, supportsMultiVersion, collectionType, parseName) ?? new MultiItemResolverResult(); if (result.Items.Count == 1) diff --git a/Emby.Server.Implementations/Notifications/CoreNotificationTypes.cs b/Emby.Server.Implementations/Notifications/CoreNotificationTypes.cs index 849e02d812..b00b5d43b9 100644 --- a/Emby.Server.Implementations/Notifications/CoreNotificationTypes.cs +++ b/Emby.Server.Implementations/Notifications/CoreNotificationTypes.cs @@ -160,7 +160,7 @@ namespace Emby.Server.Implementations.Notifications Update(type); } - var systemName = _localization.GetLocalizedString("CategorySystem"); + var systemName = _localization.GetLocalizedString("System"); return knownTypes.OrderByDescending(i => string.Equals(i.Category, systemName, StringComparison.OrdinalIgnoreCase)) .ThenBy(i => i.Category) @@ -175,23 +175,23 @@ namespace Emby.Server.Implementations.Notifications if (note.Type.IndexOf("Playback", StringComparison.OrdinalIgnoreCase) != -1) { - note.Category = _localization.GetLocalizedString("CategoryUser"); + note.Category = _localization.GetLocalizedString("User"); } else if (note.Type.IndexOf("Plugin", StringComparison.OrdinalIgnoreCase) != -1) { - note.Category = _localization.GetLocalizedString("CategoryPlugin"); + note.Category = _localization.GetLocalizedString("Plugin"); } else if (note.Type.IndexOf("CameraImageUploaded", StringComparison.OrdinalIgnoreCase) != -1) { - note.Category = _localization.GetLocalizedString("CategorySync"); + note.Category = _localization.GetLocalizedString("Sync"); } else if (note.Type.IndexOf("UserLockedOut", StringComparison.OrdinalIgnoreCase) != -1) { - note.Category = _localization.GetLocalizedString("CategoryUser"); + note.Category = _localization.GetLocalizedString("User"); } else { - note.Category = _localization.GetLocalizedString("CategorySystem"); + note.Category = _localization.GetLocalizedString("System"); } } } diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 90cf2d1d1e..a55741d7dc 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -124,24 +124,24 @@ namespace MediaBrowser.Api { list.Add(new NameValuePair { - Name = "FolderTypeInherit", + Name = "Inherit", Value = "" }); } list.Add(new NameValuePair { - Name = "FolderTypeMovies", + Name = "Movies", Value = "movies" }); list.Add(new NameValuePair { - Name = "FolderTypeMusic", + Name = "Music", Value = "music" }); list.Add(new NameValuePair { - Name = "FolderTypeTvShows", + Name = "Shows", Value = "tvshows" }); @@ -149,29 +149,29 @@ namespace MediaBrowser.Api { list.Add(new NameValuePair { - Name = "FolderTypeBooks", + Name = "Books", Value = "books" }); list.Add(new NameValuePair { - Name = "FolderTypeGames", + Name = "Games", Value = "games" }); } list.Add(new NameValuePair { - Name = "FolderTypeHomeVideos", + Name = "HomeVideos", Value = "homevideos" }); list.Add(new NameValuePair { - Name = "FolderTypeMusicVideos", + Name = "MusicVideos", Value = "musicvideos" }); list.Add(new NameValuePair { - Name = "FolderTypePhotos", + Name = "Photos", Value = "photos" }); @@ -179,7 +179,7 @@ namespace MediaBrowser.Api { list.Add(new NameValuePair { - Name = "FolderTypeMixed", + Name = "MixedContent", Value = "" }); } diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index f46c3e50f6..1ae7323dc4 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -947,9 +947,9 @@ namespace MediaBrowser.Api.LiveTv public object Get(GetChannel request) { - var user = string.IsNullOrWhiteSpace(request.UserId) ? null : _userManager.GetUserById(request.UserId); + var user = _userManager.GetUserById(request.UserId); - var item = _libraryManager.GetItemById(request.Id); + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _libraryManager.GetItemById(request.Id); var dtoOptions = GetDtoOptions(_authContext, request); @@ -1098,12 +1098,13 @@ namespace MediaBrowser.Api.LiveTv public async Task Get(GetRecording request) { - var user = string.IsNullOrEmpty(request.UserId) ? null : _userManager.GetUserById(request.UserId); + var user = _userManager.GetUserById(request.UserId); - var options = new DtoOptions(); - options.DeviceId = _authContext.GetAuthorizationInfo(Request).DeviceId; + var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : _libraryManager.GetItemById(request.Id); - var result = await _liveTvManager.GetRecording(request.Id, options, CancellationToken.None, user).ConfigureAwait(false); + var dtoOptions = GetDtoOptions(_authContext, request); + + var result = _dtoService.GetBaseItemDto(item, dtoOptions, user); return ToOptimizedSerializedResultUsingCache(result); } diff --git a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs index 56f2353f16..4934cc1ca8 100644 --- a/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs +++ b/MediaBrowser.Controller/LiveTv/ILiveTvManager.cs @@ -75,16 +75,6 @@ namespace MediaBrowser.Controller.LiveTv /// The listing providers. void AddParts(IEnumerable services, IEnumerable tunerHosts, IEnumerable listingProviders); - /// - /// Gets the recording. - /// - /// The identifier. - /// The options. - /// The cancellation token. - /// The user. - /// Task{RecordingInfoDto}. - Task GetRecording(string id, DtoOptions options, CancellationToken cancellationToken, User user = null); - /// /// Gets the timer. /// diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs b/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs index 506fce3ca9..ad131064c3 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs @@ -127,11 +127,6 @@ namespace MediaBrowser.Controller.MediaEncoding } } - public bool EnableMpDecimate - { - get { return MediaSource.EnableMpDecimate; } - } - public string AlbumCoverPath { get; set; } public string InputAudioSync { get; set; } diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs index 27920bdf39..d6301b331f 100644 --- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs +++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs @@ -40,7 +40,6 @@ namespace MediaBrowser.Model.Dto public string OpenToken { get; set; } public bool RequiresClosing { get; set; } public bool SupportsProbing { get; set; } - public bool EnableMpDecimate { get; set; } public string LiveStreamId { get; set; } public int? BufferMs { get; set; } diff --git a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs index caf1bb2a89..f177233f9b 100644 --- a/MediaBrowser.Model/LiveTv/LiveTvOptions.cs +++ b/MediaBrowser.Model/LiveTv/LiveTvOptions.cs @@ -45,7 +45,6 @@ namespace MediaBrowser.Model.LiveTv public bool ImportFavoritesOnly { get; set; } public bool AllowHWTranscoding { get; set; } public bool EnableStreamLooping { get; set; } - public bool EnableMpDecimate { get; set; } public bool EnableNewHdhrChannelIds { get; set; } public string Source { get; set; } From d7bbfff23f7cec1f06c5ea9e99c7868e552256ec Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:44:40 -0400 Subject: [PATCH 23/62] preserve channel info from provider --- .../LiveTv/LiveTvManager.cs | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index ec2704aa08..718620ab57 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -527,18 +527,18 @@ namespace Emby.Server.Implementations.LiveTv item.ChannelType = channelInfo.ChannelType; item.ServiceName = serviceName; + + if (!string.Equals(channelInfo.Number, item.Number, StringComparison.Ordinal)) + { + forceUpdate = true; + } item.Number = channelInfo.Number; - //if (!string.Equals(item.ProviderImageUrl, channelInfo.ImageUrl, StringComparison.OrdinalIgnoreCase)) - //{ - // isNew = true; - // replaceImages.Add(ImageType.Primary); - //} - //if (!string.Equals(item.ProviderImagePath, channelInfo.ImagePath, StringComparison.OrdinalIgnoreCase)) - //{ - // isNew = true; - // replaceImages.Add(ImageType.Primary); - //} + if (!string.Equals(channelInfo.Name, item.Name, StringComparison.Ordinal)) + { + forceUpdate = true; + } + item.Name = channelInfo.Name; if (!item.HasImage(ImageType.Primary)) { @@ -554,11 +554,6 @@ namespace Emby.Server.Implementations.LiveTv } } - if (string.IsNullOrEmpty(item.Name)) - { - item.Name = channelInfo.Name; - } - if (isNew) { _libraryManager.CreateItem(item, cancellationToken); @@ -2923,7 +2918,7 @@ namespace Emby.Server.Implementations.LiveTv public Folder GetInternalLiveTvFolder(CancellationToken cancellationToken) { - var name = _localization.GetLocalizedString("ViewTypeLiveTV"); + var name = _localization.GetLocalizedString("HeaderLiveTV"); return _libraryManager.GetNamedView(name, CollectionType.LiveTv, name, cancellationToken); } From 8b7936addfa2fa5cc5ae85a9f57bd6384169a357 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:45:06 -0400 Subject: [PATCH 24/62] removed dead code --- .../MediaEncoding/EncodingHelper.cs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index e7c768c3b0..bddafe9a6a 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -794,11 +794,6 @@ namespace MediaBrowser.Controller.MediaEncoding return false; } - if (state.EnableMpDecimate) - { - return false; - } - if (videoStream.IsInterlaced) { if (state.DeInterlace(videoStream.Codec, false)) @@ -1515,11 +1510,6 @@ namespace MediaBrowser.Controller.MediaEncoding } } - if (state.EnableMpDecimate) - { - filters.Add("mpdecimate,setpts=N/FRAME_RATE/TB"); - } - if (filters.Count > 0) { output += string.Format(" -vf \"{0}\"", string.Join(",", filters.ToArray())); From 2f06bb5bf52dc4dfc3d1763488d215a7e352a1fc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 01:47:13 -0400 Subject: [PATCH 25/62] 3.2.33.7 --- .../LiveTv/TunerHosts/M3UTunerHost.cs | 8 -------- SharedVersion.cs | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs index 8d1854f4b2..9fc6687d14 100644 --- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs +++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs @@ -93,13 +93,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts protected override async Task> GetChannelStreamMediaSources(TunerHostInfo info, string channelId, CancellationToken cancellationToken) { - var channelIdPrefix = GetFullChannelIdPrefix(info); - - if (!channelId.StartsWith(channelIdPrefix, StringComparison.OrdinalIgnoreCase)) - { - return null; - } - var channels = await GetChannels(info, true, cancellationToken).ConfigureAwait(false); var channel = channels.FirstOrDefault(c => string.Equals(c.Id, channelId, StringComparison.OrdinalIgnoreCase)); if (channel != null) @@ -165,7 +158,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts RequiresOpening = true, RequiresClosing = true, RequiresLooping = info.EnableStreamLooping, - EnableMpDecimate = info.EnableMpDecimate, ReadAtNativeFramerate = false, diff --git a/SharedVersion.cs b/SharedVersion.cs index cd78e0886a..617d9cf043 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.33.6")] +[assembly: AssemblyVersion("3.2.33.7")] From c583d49541f297a103956d6d3bdc20cf1d681b8e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 14:32:58 -0400 Subject: [PATCH 26/62] live tv subtitle fixes --- MediaBrowser.Model/Dlna/StreamBuilder.cs | 29 +++++++++++------------- MediaBrowser.Model/Dlna/StreamInfo.cs | 4 ++-- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 95a80c34c0..a11c886974 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -686,7 +686,7 @@ namespace MediaBrowser.Model.Dlna if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile.SubtitleProfiles, directPlay.Value, _transcoderSupport, null, null); + SubtitleProfile subtitleProfile = GetSubtitleProfile(item, subtitleStream, options.Profile.SubtitleProfiles, directPlay.Value, _transcoderSupport, null, null); playlistItem.SubtitleDeliveryMethod = subtitleProfile.Method; playlistItem.SubtitleFormat = subtitleProfile.Format; @@ -728,7 +728,7 @@ namespace MediaBrowser.Model.Dlna if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile.SubtitleProfiles, PlayMethod.Transcode, _transcoderSupport, transcodingProfile.Protocol, transcodingProfile.Container); + SubtitleProfile subtitleProfile = GetSubtitleProfile(item, subtitleStream, options.Profile.SubtitleProfiles, PlayMethod.Transcode, _transcoderSupport, transcodingProfile.Protocol, transcodingProfile.Container); playlistItem.SubtitleDeliveryMethod = subtitleProfile.Method; playlistItem.SubtitleFormat = subtitleProfile.Format; @@ -1054,15 +1054,6 @@ namespace MediaBrowser.Model.Dlna string videoCodec = videoStream == null ? null : videoStream.Codec; - if (string.IsNullOrEmpty(videoCodec)) - { - _logger.Info("Profile: {0}, DirectPlay=false. Reason=Unknown video codec. Path: {1}", - profile.Name ?? "Unknown Profile", - mediaSource.Path ?? "Unknown path"); - - return new Tuple>(null, new List { TranscodeReason.UnknownVideoStreamInfo }); - } - conditions = new List(); foreach (CodecProfile i in profile.CodecProfiles) { @@ -1189,7 +1180,7 @@ namespace MediaBrowser.Model.Dlna { if (subtitleStream != null) { - SubtitleProfile subtitleProfile = GetSubtitleProfile(subtitleStream, options.Profile.SubtitleProfiles, playMethod, _transcoderSupport, null, null); + SubtitleProfile subtitleProfile = GetSubtitleProfile(item, subtitleStream, options.Profile.SubtitleProfiles, playMethod, _transcoderSupport, null, null); if (subtitleProfile.Method != SubtitleDeliveryMethod.External && subtitleProfile.Method != SubtitleDeliveryMethod.Embed) { @@ -1208,7 +1199,7 @@ namespace MediaBrowser.Model.Dlna return new Tuple(result, TranscodeReason.ContainerBitrateExceedsLimit); } - public static SubtitleProfile GetSubtitleProfile(MediaStream subtitleStream, SubtitleProfile[] subtitleProfiles, PlayMethod playMethod, ITranscoderSupport transcoderSupport, string transcodingSubProtocol, string transcodingContainer) + public static SubtitleProfile GetSubtitleProfile(MediaSourceInfo mediaSource, MediaStream subtitleStream, SubtitleProfile[] subtitleProfiles, PlayMethod playMethod, ITranscoderSupport transcoderSupport, string transcodingSubProtocol, string transcodingContainer) { if (!subtitleStream.IsExternal && (playMethod != PlayMethod.Transcode || !string.Equals(transcodingSubProtocol, "hls", StringComparison.OrdinalIgnoreCase))) { @@ -1262,8 +1253,8 @@ namespace MediaBrowser.Model.Dlna } // Look for an external or hls profile that matches the stream type (text/graphical) and doesn't require conversion - return GetExternalSubtitleProfile(subtitleStream, subtitleProfiles, playMethod, transcoderSupport, false) ?? - GetExternalSubtitleProfile(subtitleStream, subtitleProfiles, playMethod, transcoderSupport, true) ?? + return GetExternalSubtitleProfile(mediaSource, subtitleStream, subtitleProfiles, playMethod, transcoderSupport, false) ?? + GetExternalSubtitleProfile(mediaSource, subtitleStream, subtitleProfiles, playMethod, transcoderSupport, true) ?? new SubtitleProfile { Method = SubtitleDeliveryMethod.Encode, @@ -1299,7 +1290,7 @@ namespace MediaBrowser.Model.Dlna return false; } - private static SubtitleProfile GetExternalSubtitleProfile(MediaStream subtitleStream, SubtitleProfile[] subtitleProfiles, PlayMethod playMethod, ITranscoderSupport transcoderSupport, bool allowConversion) + private static SubtitleProfile GetExternalSubtitleProfile(MediaSourceInfo mediaSource, MediaStream subtitleStream, SubtitleProfile[] subtitleProfiles, PlayMethod playMethod, ITranscoderSupport transcoderSupport, bool allowConversion) { foreach (SubtitleProfile profile in subtitleProfiles) { @@ -1338,6 +1329,12 @@ namespace MediaBrowser.Model.Dlna continue; } + // TODO: Build this into subtitleStream.SupportsExternalStream + if (mediaSource.IsInfiniteStream) + { + continue; + } + if (subtitleStream.IsTextSubtitleStream && subtitleStream.SupportsExternalStream && subtitleStream.SupportsSubtitleConversionTo(profile.Format)) { return profile; diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index 5a059e91d2..93a46aaf40 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -466,7 +466,7 @@ namespace MediaBrowser.Model.Dlna private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream, string baseUrl, string accessToken, long startPositionTicks, SubtitleProfile[] subtitleProfiles, ITranscoderSupport transcoderSupport) { - SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, subtitleProfiles, PlayMethod, transcoderSupport, SubProtocol, Container); + SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(MediaSource, stream, subtitleProfiles, PlayMethod, transcoderSupport, SubProtocol, Container); SubtitleStreamInfo info = new SubtitleStreamInfo { IsForced = stream.IsForced, @@ -480,7 +480,7 @@ namespace MediaBrowser.Model.Dlna if (info.DeliveryMethod == SubtitleDeliveryMethod.External) { - if (MediaSource.Protocol == MediaProtocol.File || !StringHelper.EqualsIgnoreCase(stream.Codec, subtitleProfile.Format)) + if (MediaSource.Protocol == MediaProtocol.File || !StringHelper.EqualsIgnoreCase(stream.Codec, subtitleProfile.Format) || !stream.IsExternal) { info.Url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}", baseUrl, From 9fdaa039c4b1e95842a219499f80ac963bbdb91e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 15:18:05 -0400 Subject: [PATCH 27/62] rework device repository --- .../ApplicationHost.cs | 4 +- .../Devices/DeviceManager.cs | 27 +- .../Devices/DeviceRepository.cs | 212 --------- .../Devices/SqliteDeviceRepository.cs | 441 ++++++++++++++++++ .../Emby.Server.Implementations.csproj | 2 +- .../Session/SessionManager.cs | 12 +- MediaBrowser.Api/Devices/DeviceService.cs | 8 +- .../Devices/IDeviceManager.cs | 13 +- .../Devices/IDeviceRepository.cs | 13 +- MediaBrowser.Model/Devices/DeviceInfo.cs | 12 +- 10 files changed, 477 insertions(+), 267 deletions(-) delete mode 100644 Emby.Server.Implementations/Devices/DeviceRepository.cs create mode 100644 Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index 57c509923a..96c87b6a50 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -938,7 +938,9 @@ namespace Emby.Server.Implementations ConnectManager = CreateConnectManager(); RegisterSingleInstance(ConnectManager); - DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager); + var deviceRepo = new SqliteDeviceRepository(LogManager.GetLogger("DeviceManager"), ServerConfigurationManager, FileSystemManager, JsonSerializer); + deviceRepo.Initialize(); + DeviceManager = new DeviceManager(deviceRepo, UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager); RegisterSingleInstance(DeviceManager); var newsService = new Emby.Server.Implementations.News.NewsService(ApplicationPaths, JsonSerializer); diff --git a/Emby.Server.Implementations/Devices/DeviceManager.cs b/Emby.Server.Implementations/Devices/DeviceManager.cs index 027a55516c..ee4c4bb265 100644 --- a/Emby.Server.Implementations/Devices/DeviceManager.cs +++ b/Emby.Server.Implementations/Devices/DeviceManager.cs @@ -50,7 +50,7 @@ namespace Emby.Server.Implementations.Devices _network = network; } - public async Task RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId) + public DeviceInfo RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId) { if (string.IsNullOrWhiteSpace(reportedId)) { @@ -76,14 +76,16 @@ namespace Emby.Server.Implementations.Devices device.DateLastModified = DateTime.UtcNow; - await _repo.SaveDevice(device).ConfigureAwait(false); + device.Name = string.IsNullOrWhiteSpace(device.CustomName) ? device.ReportedName : device.CustomName; + + _repo.SaveDevice(device); return device; } - public Task SaveCapabilities(string reportedId, ClientCapabilities capabilities) + public void SaveCapabilities(string reportedId, ClientCapabilities capabilities) { - return _repo.SaveCapabilities(reportedId, capabilities); + _repo.SaveCapabilities(reportedId, capabilities); } public ClientCapabilities GetCapabilities(string reportedId) @@ -98,13 +100,13 @@ namespace Emby.Server.Implementations.Devices public QueryResult GetDevices(DeviceQuery query) { - IEnumerable devices = _repo.GetDevices().OrderByDescending(i => i.DateLastModified); + IEnumerable devices = _repo.GetDevices(); if (query.SupportsSync.HasValue) { var val = query.SupportsSync.Value; - devices = devices.Where(i => GetCapabilities(i.Id).SupportsSync == val); + devices = devices.Where(i => i.Capabilities.SupportsSync == val); } if (query.SupportsPersistentIdentifier.HasValue) @@ -113,8 +115,7 @@ namespace Emby.Server.Implementations.Devices devices = devices.Where(i => { - var caps = GetCapabilities(i.Id); - var deviceVal = caps.SupportsPersistentIdentifier; + var deviceVal = i.Capabilities.SupportsPersistentIdentifier; return deviceVal == val; }); } @@ -132,9 +133,9 @@ namespace Emby.Server.Implementations.Devices }; } - public Task DeleteDevice(string id) + public void DeleteDevice(string id) { - return _repo.DeleteDevice(id); + _repo.DeleteDevice(id); } public ContentUploadHistory GetCameraUploadHistory(string deviceId) @@ -213,14 +214,16 @@ namespace Emby.Server.Implementations.Devices get { return Path.Combine(_config.CommonApplicationPaths.DataPath, "camerauploads"); } } - public async Task UpdateDeviceInfo(string id, DeviceOptions options) + public void UpdateDeviceInfo(string id, DeviceOptions options) { var device = GetDevice(id); device.CustomName = options.CustomName; device.CameraUploadPath = options.CameraUploadPath; - await _repo.SaveDevice(device).ConfigureAwait(false); + device.Name = string.IsNullOrWhiteSpace(device.CustomName) ? device.ReportedName : device.CustomName; + + _repo.SaveDevice(device); EventHelper.FireEventIfNotNull(DeviceOptionsUpdated, this, new GenericEventArgs(device), _logger); } diff --git a/Emby.Server.Implementations/Devices/DeviceRepository.cs b/Emby.Server.Implementations/Devices/DeviceRepository.cs deleted file mode 100644 index b286a3bb07..0000000000 --- a/Emby.Server.Implementations/Devices/DeviceRepository.cs +++ /dev/null @@ -1,212 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Configuration; -using MediaBrowser.Common.Extensions; -using MediaBrowser.Controller.Devices; -using MediaBrowser.Model.Devices; -using MediaBrowser.Model.IO; -using MediaBrowser.Model.Logging; -using MediaBrowser.Model.Serialization; -using MediaBrowser.Model.Session; -using MediaBrowser.Model.Extensions; - -namespace Emby.Server.Implementations.Devices -{ - public class DeviceRepository : IDeviceRepository - { - private readonly object _syncLock = new object(); - - private readonly IApplicationPaths _appPaths; - private readonly IJsonSerializer _json; - private readonly ILogger _logger; - private readonly IFileSystem _fileSystem; - - private Dictionary _devices; - - public DeviceRepository(IApplicationPaths appPaths, IJsonSerializer json, ILogger logger, IFileSystem fileSystem) - { - _appPaths = appPaths; - _json = json; - _logger = logger; - _fileSystem = fileSystem; - } - - private string GetDevicesPath() - { - return Path.Combine(_appPaths.DataPath, "devices"); - } - - private string GetDevicePath(string id) - { - return Path.Combine(GetDevicesPath(), id.GetMD5().ToString("N")); - } - - public Task SaveDevice(DeviceInfo device) - { - var path = Path.Combine(GetDevicePath(device.Id), "device.json"); - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); - - lock (_syncLock) - { - _json.SerializeToFile(device, path); - _devices[device.Id] = device; - } - return Task.FromResult(true); - } - - public Task SaveCapabilities(string reportedId, ClientCapabilities capabilities) - { - var device = GetDevice(reportedId); - - if (device == null) - { - throw new ArgumentException("No device has been registed with id " + reportedId); - } - - device.Capabilities = capabilities; - SaveDevice(device); - - return Task.FromResult(true); - } - - public ClientCapabilities GetCapabilities(string reportedId) - { - var device = GetDevice(reportedId); - - return device == null ? null : device.Capabilities; - } - - public DeviceInfo GetDevice(string id) - { - if (string.IsNullOrWhiteSpace(id)) - { - throw new ArgumentNullException("id"); - } - - return GetDevices() - .FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase)); - } - - public IEnumerable GetDevices() - { - lock (_syncLock) - { - if (_devices == null) - { - _devices = new Dictionary(StringComparer.OrdinalIgnoreCase); - - var devices = LoadDevices().ToList(); - foreach (var device in devices) - { - _devices[device.Id] = device; - } - } - return _devices.Values.ToList(); - } - } - - private IEnumerable LoadDevices() - { - var path = GetDevicesPath(); - - try - { - return _fileSystem - .GetFilePaths(path, true) - .Where(i => string.Equals(Path.GetFileName(i), "device.json", StringComparison.OrdinalIgnoreCase)) - .ToList() - .Select(i => - { - try - { - return _json.DeserializeFromFile(i); - } - catch (Exception ex) - { - _logger.ErrorException("Error reading {0}", ex, i); - return null; - } - }) - .Where(i => i != null); - } - catch (IOException) - { - return new List(); - } - } - - public Task DeleteDevice(string id) - { - var path = GetDevicePath(id); - - lock (_syncLock) - { - try - { - _fileSystem.DeleteDirectory(path, true); - } - catch (IOException) - { - } - - _devices = null; - } - - return Task.FromResult(true); - } - - public ContentUploadHistory GetCameraUploadHistory(string deviceId) - { - var path = Path.Combine(GetDevicePath(deviceId), "camerauploads.json"); - - lock (_syncLock) - { - try - { - return _json.DeserializeFromFile(path); - } - catch (IOException) - { - return new ContentUploadHistory - { - DeviceId = deviceId - }; - } - } - } - - public void AddCameraUpload(string deviceId, LocalFileInfo file) - { - var path = Path.Combine(GetDevicePath(deviceId), "camerauploads.json"); - _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path)); - - lock (_syncLock) - { - ContentUploadHistory history; - - try - { - history = _json.DeserializeFromFile(path); - } - catch (IOException) - { - history = new ContentUploadHistory - { - DeviceId = deviceId - }; - } - - history.DeviceId = deviceId; - - var list = history.FilesUploaded.ToList(); - list.Add(file); - history.FilesUploaded = list.ToArray(list.Count); - - _json.SerializeToFile(history, path); - } - } - } -} diff --git a/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs b/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs new file mode 100644 index 0000000000..e8b7466a58 --- /dev/null +++ b/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs @@ -0,0 +1,441 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using Emby.Server.Implementations.Data; +using MediaBrowser.Controller; +using MediaBrowser.Model.Logging; +using SQLitePCL.pretty; +using MediaBrowser.Model.Extensions; +using MediaBrowser.Model.IO; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Devices; +using MediaBrowser.Model.Devices; +using MediaBrowser.Model.Serialization; +using MediaBrowser.Model.Session; +using MediaBrowser.Controller.Configuration; + +namespace Emby.Server.Implementations.Devices +{ + public class SqliteDeviceRepository : BaseSqliteRepository, IDeviceRepository + { + private readonly CultureInfo _usCulture = new CultureInfo("en-US"); + protected IFileSystem FileSystem { get; private set; } + private readonly object _syncLock = new object(); + private readonly IJsonSerializer _json; + private IServerApplicationPaths _appPaths; + + public SqliteDeviceRepository(ILogger logger, IServerConfigurationManager config, IFileSystem fileSystem, IJsonSerializer json) + : base(logger) + { + var appPaths = config.ApplicationPaths; + + DbFilePath = Path.Combine(appPaths.DataPath, "devices.db"); + FileSystem = fileSystem; + _json = json; + _appPaths = appPaths; + } + + public void Initialize() + { + try + { + InitializeInternal(); + } + catch (Exception ex) + { + Logger.ErrorException("Error loading database file. Will reset and retry.", ex); + + FileSystem.DeleteFile(DbFilePath); + + InitializeInternal(); + } + } + + private void InitializeInternal() + { + using (var connection = CreateConnection()) + { + RunDefaultInitialization(connection); + + string[] queries = { + "create table if not exists Devices (Id TEXT PRIMARY KEY, Name TEXT, ReportedName TEXT, CustomName TEXT, CameraUploadPath TEXT, LastUserName TEXT, AppName TEXT, AppVersion TEXT, LastUserId TEXT, DateLastModified DATETIME, Capabilities TEXT)", + "create index if not exists idx_id on Devices(Id)" + }; + + connection.RunQueries(queries); + + MigrateDevices(); + } + } + + private void MigrateDevices() + { + var files = FileSystem + .GetFilePaths(GetDevicesPath(), true) + .Where(i => string.Equals(Path.GetFileName(i), "device.json", StringComparison.OrdinalIgnoreCase)) + .ToList(); + + foreach (var file in files) + { + try + { + var device = _json.DeserializeFromFile(file); + + SaveDevice(device); + } + catch (Exception ex) + { + Logger.ErrorException("Error reading {0}", ex, file); + } + finally + { + try + { + FileSystem.DeleteFile(file); + } + catch (IOException) + { + try + { + FileSystem.MoveFile(file, Path.ChangeExtension(file, ".old")); + } + catch (IOException) + { + } + } + } + } + } + + private const string BaseSelectText = "select Id, Name, ReportedName, CustomName, CameraUploadPath, LastUserName, AppName, AppVersion, LastUserId, DateLastModified, Capabilities from Devices"; + + public void SaveCapabilities(string deviceId, ClientCapabilities capabilities) + { + using (WriteLock.Write()) + { + using (var connection = CreateConnection()) + { + connection.RunInTransaction(db => + { + using (var statement = db.PrepareStatement("update devices set Capabilities=@Capabilities where Id=@Id")) + { + statement.TryBind("@Id", deviceId); + + if (capabilities == null) + { + statement.TryBindNull("@Capabilities"); + } + else + { + statement.TryBind("@Capabilities", _json.SerializeToString(capabilities)); + } + + statement.MoveNext(); + } + }, TransactionMode); + } + } + } + + public void SaveDevice(DeviceInfo entry) + { + if (entry == null) + { + throw new ArgumentNullException("entry"); + } + + using (WriteLock.Write()) + { + using (var connection = CreateConnection()) + { + connection.RunInTransaction(db => + { + using (var statement = db.PrepareStatement("replace into Devices (Id, Name, ReportedName, CustomName, CameraUploadPath, LastUserName, AppName, AppVersion, LastUserId, DateLastModified, Capabilities) values (@Id, @Name, @ReportedName, @CustomName, @CameraUploadPath, @LastUserName, @AppName, @AppVersion, @LastUserId, @DateLastModified, @Capabilities)")) + { + statement.TryBind("@Id", entry.Id); + statement.TryBind("@Name", entry.Name); + statement.TryBind("@ReportedName", entry.ReportedName); + statement.TryBind("@CustomName", entry.CustomName); + statement.TryBind("@CameraUploadPath", entry.CameraUploadPath); + statement.TryBind("@LastUserName", entry.LastUserName); + statement.TryBind("@AppName", entry.AppName); + statement.TryBind("@AppVersion", entry.AppVersion); + statement.TryBind("@DateLastModified", entry.DateLastModified); + + if (entry.Capabilities == null) + { + statement.TryBindNull("@Capabilities"); + } + else + { + statement.TryBind("@Capabilities", _json.SerializeToString(entry.Capabilities)); + } + + statement.MoveNext(); + } + }, TransactionMode); + } + } + } + + public DeviceInfo GetDevice(string id) + { + using (WriteLock.Read()) + { + using (var connection = CreateConnection(true)) + { + var statementTexts = new List(); + statementTexts.Add(BaseSelectText + " where Id=@Id"); + + return connection.RunInTransaction(db => + { + var statements = PrepareAllSafe(db, statementTexts).ToList(); + + using (var statement = statements[0]) + { + statement.TryBind("@Id", id); + + foreach (var row in statement.ExecuteQuery()) + { + return GetEntry(row); + } + } + + return null; + + }, ReadTransactionMode); + } + } + } + + public List GetDevices() + { + using (WriteLock.Read()) + { + using (var connection = CreateConnection(true)) + { + var statementTexts = new List(); + statementTexts.Add(BaseSelectText + " order by DateLastModified desc"); + + return connection.RunInTransaction(db => + { + var list = new List(); + + var statements = PrepareAllSafe(db, statementTexts).ToList(); + + using (var statement = statements[0]) + { + foreach (var row in statement.ExecuteQuery()) + { + list.Add(GetEntry(row)); + } + } + + return list; + + }, ReadTransactionMode); + } + } + } + + public ClientCapabilities GetCapabilities(string id) + { + using (WriteLock.Read()) + { + using (var connection = CreateConnection(true)) + { + var statementTexts = new List(); + statementTexts.Add("Select Capabilities from Devices where Id=@Id"); + + return connection.RunInTransaction(db => + { + var statements = PrepareAllSafe(db, statementTexts).ToList(); + + using (var statement = statements[0]) + { + statement.TryBind("@Id", id); + + foreach (var row in statement.ExecuteQuery()) + { + if (row[0].SQLiteType != SQLiteType.Null) + { + return _json.DeserializeFromString(row.GetString(0)); + } + } + } + + return null; + + }, ReadTransactionMode); + } + } + } + + private DeviceInfo GetEntry(IReadOnlyList reader) + { + var index = 0; + + var info = new DeviceInfo + { + Id = reader.GetString(index) + }; + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.Name = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.ReportedName = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.CustomName = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.CameraUploadPath = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.LastUserName = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.AppName = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.AppVersion = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.LastUserId = reader.GetString(index); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.DateLastModified = reader[index].ReadDateTime(); + } + + index++; + if (reader[index].SQLiteType != SQLiteType.Null) + { + info.Capabilities = _json.DeserializeFromString(reader.GetString(index)); + } + + return info; + } + + private string GetDevicesPath() + { + return Path.Combine(_appPaths.DataPath, "devices"); + } + + private string GetDevicePath(string id) + { + return Path.Combine(GetDevicesPath(), id.GetMD5().ToString("N")); + } + + public ContentUploadHistory GetCameraUploadHistory(string deviceId) + { + var path = Path.Combine(GetDevicePath(deviceId), "camerauploads.json"); + + lock (_syncLock) + { + try + { + return _json.DeserializeFromFile(path); + } + catch (IOException) + { + return new ContentUploadHistory + { + DeviceId = deviceId + }; + } + } + } + + public void AddCameraUpload(string deviceId, LocalFileInfo file) + { + var path = Path.Combine(GetDevicePath(deviceId), "camerauploads.json"); + FileSystem.CreateDirectory(FileSystem.GetDirectoryName(path)); + + lock (_syncLock) + { + ContentUploadHistory history; + + try + { + history = _json.DeserializeFromFile(path); + } + catch (IOException) + { + history = new ContentUploadHistory + { + DeviceId = deviceId + }; + } + + history.DeviceId = deviceId; + + var list = history.FilesUploaded.ToList(); + list.Add(file); + history.FilesUploaded = list.ToArray(list.Count); + + _json.SerializeToFile(history, path); + } + } + + public void DeleteDevice(string id) + { + using (WriteLock.Write()) + { + using (var connection = CreateConnection()) + { + connection.RunInTransaction(db => + { + using (var statement = db.PrepareStatement("delete from devices where Id=@Id")) + { + statement.TryBind("@Id", id); + + statement.MoveNext(); + } + }, TransactionMode); + } + } + + var path = GetDevicePath(id); + + lock (_syncLock) + { + try + { + FileSystem.DeleteDirectory(path, true); + } + catch (IOException) + { + } + } + } + } +} diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj index 4f5471bc31..083a147889 100644 --- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj +++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj @@ -67,7 +67,7 @@ - + diff --git a/Emby.Server.Implementations/Session/SessionManager.cs b/Emby.Server.Implementations/Session/SessionManager.cs index 97506cdefd..2c15351656 100644 --- a/Emby.Server.Implementations/Session/SessionManager.cs +++ b/Emby.Server.Implementations/Session/SessionManager.cs @@ -437,7 +437,7 @@ namespace Emby.Server.Implementations.Session if (!string.IsNullOrEmpty(deviceId)) { var userIdString = userId.HasValue ? userId.Value.ToString("N") : null; - device = await _deviceManager.RegisterDevice(deviceId, deviceName, appName, appVersion, userIdString).ConfigureAwait(false); + device = _deviceManager.RegisterDevice(deviceId, deviceName, appName, appVersion, userIdString); } } @@ -446,7 +446,7 @@ namespace Emby.Server.Implementations.Session if (device == null) { var userIdString = userId.HasValue ? userId.Value.ToString("N") : null; - device = await _deviceManager.RegisterDevice(deviceId, deviceName, appName, appVersion, userIdString).ConfigureAwait(false); + device = _deviceManager.RegisterDevice(deviceId, deviceName, appName, appVersion, userIdString); } if (device != null) @@ -1567,7 +1567,7 @@ namespace Emby.Server.Implementations.Session ReportCapabilities(session, capabilities, true); } - private async void ReportCapabilities(SessionInfo session, + private void ReportCapabilities(SessionInfo session, ClientCapabilities capabilities, bool saveCapabilities) { @@ -1593,7 +1593,7 @@ namespace Emby.Server.Implementations.Session { try { - await SaveCapabilities(session.DeviceId, capabilities).ConfigureAwait(false); + SaveCapabilities(session.DeviceId, capabilities); } catch (Exception ex) { @@ -1607,9 +1607,9 @@ namespace Emby.Server.Implementations.Session return _deviceManager.GetCapabilities(deviceId); } - private Task SaveCapabilities(string deviceId, ClientCapabilities capabilities) + private void SaveCapabilities(string deviceId, ClientCapabilities capabilities) { - return _deviceManager.SaveCapabilities(deviceId, capabilities); + _deviceManager.SaveCapabilities(deviceId, capabilities); } public SessionInfoDto GetSessionInfoDto(SessionInfo session) diff --git a/MediaBrowser.Api/Devices/DeviceService.cs b/MediaBrowser.Api/Devices/DeviceService.cs index 012f0ddb27..c375e272a7 100644 --- a/MediaBrowser.Api/Devices/DeviceService.cs +++ b/MediaBrowser.Api/Devices/DeviceService.cs @@ -85,13 +85,11 @@ namespace MediaBrowser.Api.Devices public void Post(PostDeviceOptions request) { - var task = _deviceManager.UpdateDeviceInfo(request.Id, new DeviceOptions + _deviceManager.UpdateDeviceInfo(request.Id, new DeviceOptions { CustomName = request.CustomName, CameraUploadPath = request.CameraUploadPath }); - - Task.WaitAll(task); } public object Get(GetDeviceInfo request) @@ -116,9 +114,7 @@ namespace MediaBrowser.Api.Devices public void Delete(DeleteDevice request) { - var task = _deviceManager.DeleteDevice(request.Id); - - Task.WaitAll(task); + _deviceManager.DeleteDevice(request.Id); } public void Post(PostCameraUpload request) diff --git a/MediaBrowser.Controller/Devices/IDeviceManager.cs b/MediaBrowser.Controller/Devices/IDeviceManager.cs index 2846bcfc64..676db09aa7 100644 --- a/MediaBrowser.Controller/Devices/IDeviceManager.cs +++ b/MediaBrowser.Controller/Devices/IDeviceManager.cs @@ -28,7 +28,7 @@ namespace MediaBrowser.Controller.Devices /// The application version. /// The used by user identifier. /// Task. - Task RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId); + DeviceInfo RegisterDevice(string reportedId, string name, string appName, string appVersion, string usedByUserId); /// /// Saves the capabilities. @@ -36,7 +36,7 @@ namespace MediaBrowser.Controller.Devices /// The reported identifier. /// The capabilities. /// Task. - Task SaveCapabilities(string reportedId, ClientCapabilities capabilities); + void SaveCapabilities(string reportedId, ClientCapabilities capabilities); /// /// Gets the capabilities. @@ -58,7 +58,7 @@ namespace MediaBrowser.Controller.Devices /// The identifier. /// The options. /// Task. - Task UpdateDeviceInfo(string id, DeviceOptions options); + void UpdateDeviceInfo(string id, DeviceOptions options); /// /// Gets the devices. @@ -67,12 +67,7 @@ namespace MediaBrowser.Controller.Devices /// IEnumerable<DeviceInfo>. QueryResult GetDevices(DeviceQuery query); - /// - /// Deletes the device. - /// - /// The identifier. - /// Task. - Task DeleteDevice(string id); + void DeleteDevice(string id); /// /// Gets the upload history. diff --git a/MediaBrowser.Controller/Devices/IDeviceRepository.cs b/MediaBrowser.Controller/Devices/IDeviceRepository.cs index 736504da30..b9ebbb6c71 100644 --- a/MediaBrowser.Controller/Devices/IDeviceRepository.cs +++ b/MediaBrowser.Controller/Devices/IDeviceRepository.cs @@ -1,7 +1,6 @@ using MediaBrowser.Model.Devices; using MediaBrowser.Model.Session; using System.Collections.Generic; -using System.Threading.Tasks; namespace MediaBrowser.Controller.Devices { @@ -12,7 +11,7 @@ namespace MediaBrowser.Controller.Devices /// /// The device. /// Task. - Task SaveDevice(DeviceInfo device); + void SaveDevice(DeviceInfo device); /// /// Saves the capabilities. @@ -20,7 +19,7 @@ namespace MediaBrowser.Controller.Devices /// The identifier. /// The capabilities. /// Task. - Task SaveCapabilities(string id, ClientCapabilities capabilities); + void SaveCapabilities(string id, ClientCapabilities capabilities); /// /// Gets the capabilities. @@ -36,18 +35,14 @@ namespace MediaBrowser.Controller.Devices /// DeviceInfo. DeviceInfo GetDevice(string id); - /// - /// Gets the devices. - /// - /// IEnumerable<DeviceInfo>. - IEnumerable GetDevices(); + List GetDevices(); /// /// Deletes the device. /// /// The identifier. /// Task. - Task DeleteDevice(string id); + void DeleteDevice(string id); /// /// Gets the upload history. diff --git a/MediaBrowser.Model/Devices/DeviceInfo.cs b/MediaBrowser.Model/Devices/DeviceInfo.cs index d8358977e7..d2ee3fdcc6 100644 --- a/MediaBrowser.Model/Devices/DeviceInfo.cs +++ b/MediaBrowser.Model/Devices/DeviceInfo.cs @@ -21,17 +21,7 @@ namespace MediaBrowser.Model.Devices /// The camera upload path. public string CameraUploadPath { get; set; } - /// - /// Gets the name. - /// - /// The name. - public string Name - { - get - { - return string.IsNullOrEmpty(CustomName) ? ReportedName : CustomName; - } - } + public string Name { get; set; } /// /// Gets or sets the identifier. From 0bc3cdfab7d15a42dadb0101d037cbf12631362b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 15:21:43 -0400 Subject: [PATCH 28/62] update suggestions --- Emby.Server.Implementations/Data/SqliteItemRepository.cs | 2 +- Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs index bc4ab8315f..a6c7150daa 100644 --- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs +++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs @@ -3038,8 +3038,8 @@ namespace Emby.Server.Implementations.Data { if (orderBy.Count == 0) { - orderBy.Add(new Tuple(ItemSortBy.Random, SortOrder.Ascending)); orderBy.Add(new Tuple("SimilarityScore", SortOrder.Descending)); + orderBy.Add(new Tuple(ItemSortBy.Random, SortOrder.Ascending)); //orderBy.Add(new Tuple(ItemSortBy.Random, SortOrder.Ascending)); } } diff --git a/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs b/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs index e8b7466a58..ca0552d98f 100644 --- a/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs +++ b/Emby.Server.Implementations/Devices/SqliteDeviceRepository.cs @@ -83,6 +83,8 @@ namespace Emby.Server.Implementations.Devices { var device = _json.DeserializeFromFile(file); + device.Name = string.IsNullOrWhiteSpace(device.CustomName) ? device.ReportedName : device.CustomName; + SaveDevice(device); } catch (Exception ex) From 0351c968c303da53db03aa2b99051d69c45f3ab8 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Oct 2017 15:22:24 -0400 Subject: [PATCH 29/62] reduce file checks during library scan --- Emby.Photos/PhotoProvider.cs | 16 +---------- .../Library/MediaSourceManager.cs | 16 ++++------- MediaBrowser.Controller/Entities/AudioBook.cs | 6 ----- MediaBrowser.Controller/Entities/Book.cs | 6 ----- MediaBrowser.Controller/Entities/Game.cs | 6 ----- .../LiveTv/LiveTvChannel.cs | 3 ++- .../MediaBrowser.Controller.csproj | 1 - .../Providers/IHasChangeMonitor.cs | 17 ------------ .../MediaInfo/AudioImageProvider.cs | 16 +---------- .../MediaInfo/FFProbeProvider.cs | 27 ------------------- .../MediaInfo/VideoImageProvider.cs | 16 +---------- 11 files changed, 10 insertions(+), 120 deletions(-) delete mode 100644 MediaBrowser.Controller/Providers/IHasChangeMonitor.cs diff --git a/Emby.Photos/PhotoProvider.cs b/Emby.Photos/PhotoProvider.cs index b2d6ecdcb3..3a29b86a50 100644 --- a/Emby.Photos/PhotoProvider.cs +++ b/Emby.Photos/PhotoProvider.cs @@ -17,7 +17,7 @@ using TagLib.IFD.Tags; namespace Emby.Photos { - public class PhotoProvider : ICustomMetadataProvider, IHasItemChangeMonitor, IForcedProvider + public class PhotoProvider : ICustomMetadataProvider, IForcedProvider { private readonly ILogger _logger; private readonly IFileSystem _fileSystem; @@ -177,19 +177,5 @@ namespace Emby.Photos { get { return "Embedded Information"; } } - - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService) - { - if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem) - { - var file = directoryService.GetFile(item.Path); - if (file != null && file.LastWriteTimeUtc != item.DateModified) - { - return true; - } - } - - return false; - } } } diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs index d60a043533..688da57649 100644 --- a/Emby.Server.Implementations/Library/MediaSourceManager.cs +++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs @@ -96,23 +96,17 @@ namespace Emby.Server.Implementations.Library return GetMediaStreamsForItem(list); } - private List GetMediaStreamsForItem(IEnumerable streams) + private List GetMediaStreamsForItem(List streams) { - var list = streams.ToList(); - - var subtitleStreams = list - .Where(i => i.Type == MediaStreamType.Subtitle) - .ToList(); - - if (subtitleStreams.Count > 0) + foreach (var stream in streams) { - foreach (var subStream in subtitleStreams) + if (stream.Type == MediaStreamType.Subtitle) { - subStream.SupportsExternalStream = StreamSupportsExternalStream(subStream); + stream.SupportsExternalStream = StreamSupportsExternalStream(stream); } } - return list; + return streams; } public async Task> GetPlayackMediaSources(string id, string userId, bool enablePathSubstitution, string[] supportedLiveMediaTypes, CancellationToken cancellationToken) diff --git a/MediaBrowser.Controller/Entities/AudioBook.cs b/MediaBrowser.Controller/Entities/AudioBook.cs index 78fb102536..374bb21f74 100644 --- a/MediaBrowser.Controller/Entities/AudioBook.cs +++ b/MediaBrowser.Controller/Entities/AudioBook.cs @@ -51,12 +51,6 @@ namespace MediaBrowser.Controller.Entities return null; } - [IgnoreDataMember] - public override bool EnableRefreshOnDateModifiedChange - { - get { return true; } - } - public Guid? FindSeriesId() { return SeriesId; diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs index 9b1a52f836..45e3915ce2 100644 --- a/MediaBrowser.Controller/Entities/Book.cs +++ b/MediaBrowser.Controller/Entities/Book.cs @@ -38,12 +38,6 @@ namespace MediaBrowser.Controller.Entities return SeriesPresentationUniqueKey; } - [IgnoreDataMember] - public override bool EnableRefreshOnDateModifiedChange - { - get { return true; } - } - public Guid? FindSeriesId() { return SeriesId; diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index a99058925f..fd45f7c823 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -28,12 +28,6 @@ namespace MediaBrowser.Controller.Entities locationType != LocationType.Virtual; } - [IgnoreDataMember] - public override bool EnableRefreshOnDateModifiedChange - { - get { return true; } - } - [IgnoreDataMember] public override bool SupportsThemeMedia { diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs index 4a93d0399a..16010b7f5a 100644 --- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs +++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs @@ -136,7 +136,8 @@ namespace MediaBrowser.Controller.LiveTv Name = Name, Path = Path, RunTimeTicks = RunTimeTicks, - Type = MediaSourceType.Placeholder + Type = MediaSourceType.Placeholder, + IsInfiniteStream = RunTimeTicks == null }; list.Add(info); diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 960ff0aa7d..dafca05985 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -220,7 +220,6 @@ - diff --git a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs deleted file mode 100644 index aa0b0e3c97..0000000000 --- a/MediaBrowser.Controller/Providers/IHasChangeMonitor.cs +++ /dev/null @@ -1,17 +0,0 @@ -using MediaBrowser.Controller.Entities; -using System; - -namespace MediaBrowser.Controller.Providers -{ - public interface IHasChangeMonitor - { - /// - /// Determines whether the specified item has changed. - /// - /// The item. - /// The directory service. - /// The date. - /// true if the specified item has changed; otherwise, false. - bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date); - } -} diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index a4f2053a9d..3499d5d3f8 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -19,7 +19,7 @@ namespace MediaBrowser.Providers.MediaInfo /// /// Uses ffmpeg to create video images /// - public class AudioImageProvider : IDynamicImageProvider, IHasItemChangeMonitor + public class AudioImageProvider : IDynamicImageProvider { private readonly IMediaEncoder _mediaEncoder; private readonly IServerConfigurationManager _config; @@ -134,19 +134,5 @@ namespace MediaBrowser.Providers.MediaInfo return item.LocationType == LocationType.FileSystem && audio != null; } - - public bool HasChanged(IHasMetadata item, IDirectoryService directoryService) - { - if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem) - { - var file = directoryService.GetFile(item.Path); - if (file != null && file.LastWriteTimeUtc != item.DateModified) - { - return true; - } - } - - return false; - } } } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs index a9aa71bfa4..bce4219019 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs @@ -34,7 +34,6 @@ namespace MediaBrowser.Providers.MediaInfo ICustomMetadataProvider